38 l_real x=Re(z), y=Im(z), w;
39 if ( zero_(x) && zero_(y) )
return l_complex(0,0);
41 int stagsave = stagprec, stagmax = 19;
42 if (stagprec > stagmax) stagprec = stagmax;
44 int ex = expo(x[1]), exy = expo(y[1]);
45 if (exy > ex) ex = exy;
49 bool neg = sign(x[1]) < 0;
57 y = sign(y[1]) < 0 ? -w : w;
149 std::list<l_complex> res;
151 res.push_back( -lc );
175 std::list<l_complex> res;
187 else if( n == 2 )
return sqrt_all( z );
191 arg_z =
arg( z ), root_abs_z =
sqrt(
abs( z ), n );
193 for(
int k = 0; k < n; k++)
198 root_abs_z *
sin( arg_k ) ) );
217 if( n == 1 )
return z;
219 if( n == -1 )
return 1 / z;
221 if( n == 2 )
return sqr(z);
226 if( n < 0 && abs_z == 0.0 )
228 cxscthrow (STD_FKT_OUT_OF_DEF
229 (
"l_complex power_fast(const l_complex& z, int n ); z == 0."));
238 abs_z_n *
sin( n * arg_z ) );
The Multiple-Precision Data Type l_cinterval.
The Multiple-Precision Data Type l_complex.
The Multiple-Precision Data Type l_interval.
The Multiple-Precision Data Type l_real.
The namespace cxsc, providing all functionality of the class library C-XSC.
cinterval sqrtp1m1(const cinterval &z) noexcept
Calculates .
cinterval exp2(const cinterval &z) noexcept
Calculates .
cinterval sqrt1mx2(const cinterval &z) noexcept
Calculates .
cinterval asinh(const cinterval &z) noexcept
Calculates .
cinterval coth(const cinterval &z) noexcept
Calculates .
cinterval log2(const cinterval &z) noexcept
Calculates .
l_interval Pi_l_interval() noexcept
Enclosure-Interval for .
cinterval power(const cinterval &z, int n) noexcept
Calculates .
cinterval log10(const cinterval &z) noexcept
Calculates .
cinterval ln(const cinterval &z) noexcept
Calculates .
cinterval pow(const cinterval &z, const interval &p) noexcept
Calculates .
cinterval sinh(const cinterval &z) noexcept
Calculates .
cinterval asin(const cinterval &z) noexcept
Calculates .
cinterval tan(const cinterval &z) noexcept
Calculates .
cinterval exp10(const cinterval &z) noexcept
Calculates .
interval arg(const cinterval &z) noexcept
Calculates .
std::list< cinterval > sqrt_all(const cinterval &z)
Calculates and returns all possible solutions.
cinterval acos(const cinterval &z) noexcept
Calculates .
cinterval sqrtx2m1(const cinterval &z) noexcept
Calculates .
cinterval acosh(const cinterval &z) noexcept
Calculates .
cinterval cosh(const cinterval &z) noexcept
Calculates .
cinterval cos(const cinterval &z) noexcept
Calculates .
cinterval sqrt1px2(const cinterval &z) noexcept
Calculates .
cinterval exp(const cinterval &z) noexcept
Calculates .
cinterval tanh(const cinterval &z) noexcept
Calculates .
cinterval expm1(const cinterval &z) noexcept
Calculates .
cinterval cot(const cinterval &z) noexcept
Calculates .
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
cinterval sqrt(const cinterval &z) noexcept
Calculates .
cinterval power_fast(const cinterval &z, int n) noexcept
Calculates .
cinterval acot(const cinterval &z) noexcept
Calculates .
void times2pown(cinterval &x, int n) noexcept
Fast multiplication of reference parameter [z] with .
cinterval sqr(const cinterval &z) noexcept
Calculates .
cinterval lnp1(const cinterval &z) noexcept
Calculates .
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
cinterval atan(const cinterval &z) noexcept
Calculates .
cinterval atanh(const cinterval &z) noexcept
Calculates .
interval Arg(const cinterval &z) noexcept
Calculates .
cinterval acoth(const cinterval &z) noexcept
Calculates .
cinterval sin(const cinterval &z) noexcept
Calculates .