30 #include "lx_complex.hpp" 31 #include "lx_cinterval.hpp" 55 std::string & operator >> (std::string& s, lx_complex& a)
throw()
63 std::cout <<
"Halo 1" << std::endl;
64 s = skipwhitespacessinglechar (s,
'(');
65 std::cout <<
"s = " << s << std::endl;
67 std::cout <<
"i = " << i << std::endl;
69 std::cout <<
"su = " << su << std::endl;
73 s = skipwhitespacessinglechar (s,
',');
74 std::cout <<
"s = " << s << std::endl;
81 void operator >> (
const std::string &s, lx_complex &a)
throw()
88 void operator >> (
const char *s, lx_complex& a)
throw()
94 lx_real
abs (
const lx_complex& a)
throw()
96 lx_real abs2 (
const lx_complex& a)
throw()
97 {
return a.re*a.re + a.im*a.im; }
103 lx_complex
sqr(
const lx_complex& z)
throw() {
return (z*z); }
104 lx_complex
sqrt(
const lx_complex& z)
throw()
105 {
return mid(
sqrt(lx_cinterval(z))); }
107 lx_complex
sqrt(
const lx_complex& z,
int n)
throw()
108 {
return mid(
sqrt(lx_cinterval(z),n) ); }
110 lx_complex
exp(
const lx_complex& z)
throw()
111 {
return mid(
exp(lx_cinterval(z))); }
113 lx_complex
exp2(
const lx_complex& z)
throw()
114 {
return mid(
exp2(lx_cinterval(z))); }
116 lx_complex
exp10(
const lx_complex& z)
throw()
117 {
return mid(
exp10(lx_cinterval(z))); }
119 lx_complex
sin(
const lx_complex& z)
throw()
120 {
return mid(
sin(lx_cinterval(z))); }
122 lx_complex
cos(
const lx_complex& z)
throw()
123 {
return mid(
cos(lx_cinterval(z))); }
125 lx_complex
tan(
const lx_complex& z)
throw()
126 {
return mid(
tan(lx_cinterval(z))); }
128 lx_complex
cot(
const lx_complex& z)
throw()
129 {
return mid(
cot(lx_cinterval(z))); }
131 lx_complex
asin(
const lx_complex& z)
throw()
132 {
return mid(
asin(lx_cinterval(z))); }
134 lx_complex
acos(
const lx_complex& z)
throw()
135 {
return mid(
acos(lx_cinterval(z))); }
137 lx_complex
atan(
const lx_complex& z)
throw()
138 {
return mid(
atan(lx_cinterval(z))); }
140 lx_complex
acot(
const lx_complex& z)
throw()
141 {
return mid(
acot(lx_cinterval(z))); }
143 lx_complex
sinh(
const lx_complex& z)
throw()
144 {
return mid(
sinh(lx_cinterval(z))); }
146 lx_complex
cosh(
const lx_complex& z)
throw()
147 {
return mid(
cosh(lx_cinterval(z))); }
149 lx_complex
tanh(
const lx_complex& z)
throw()
150 {
return mid(
tanh(lx_cinterval(z))); }
152 lx_complex
coth(
const lx_complex& z)
throw()
153 {
return mid(
coth(lx_cinterval(z))); }
155 lx_complex
asinh(
const lx_complex& z)
throw()
156 {
return mid(
asinh(lx_cinterval(z))); }
158 lx_complex
acosh(
const lx_complex& z)
throw()
159 {
return mid(
acosh(lx_cinterval(z))); }
161 lx_complex
atanh(
const lx_complex& z)
throw()
162 {
return mid(
atanh(lx_cinterval(z))); }
164 lx_complex
acoth(
const lx_complex& z)
throw()
165 {
return mid(
acoth(lx_cinterval(z))); }
168 std::list<lx_complex>
sqrt_all(
const lx_complex& c )
173 std::list<lx_complex> res;
175 res.push_back( -lc );
180 lx_real
arg(
const lx_complex& z)
throw()
181 {
return mid(
arg(lx_cinterval(z))); }
183 lx_real
Arg(
const lx_complex& z)
throw()
184 {
return mid(
Arg(lx_cinterval(z))); }
186 std::list<lx_complex>
sqrt_all(
const lx_complex& z,
int n )
196 std::list<lx_complex> res;
208 else if( n == 2 )
return sqrt_all( z );
212 arg_z =
arg( z ), root_abs_z =
sqrt(
abs( z ), n );
214 for(
int k = 0; k < n; k++)
216 lx_real arg_k = ( arg_z + 2 * k *
Pi_lx_real() ) / n;
217 res.push_back( lx_complex( root_abs_z *
cos( arg_k ),
218 root_abs_z *
sin( arg_k ) ) );
226 lx_complex
ln(
const lx_complex& z)
throw()
227 {
return mid(
ln(lx_cinterval(z))); }
229 lx_complex
log2(
const lx_complex& z)
throw()
230 {
return mid(
log2(lx_cinterval(z))); }
231 lx_complex
log10(
const lx_complex& z)
throw()
232 {
return mid(
log10(lx_cinterval(z))); }
239 if( n == 1 )
return z;
241 if( n == -1 )
return 1 / z;
243 if( n == 2 )
return sqr(z);
246 lx_real abs_z =
abs(z);
247 if( ((n < 0) && (abs_z == 0.0)) || !(
Is_Integer(n)))
249 cxscthrow (STD_FKT_OUT_OF_DEF(
250 "lx_complex power_fast(const lx_complex& z, const real& n ); z = 0 or n is not integer."));
255 lx_real arg_z =
arg(z);
256 lx_real abs_z_n =
exp( n *
ln( abs_z ) );
258 return lx_complex( abs_z_n *
cos( n * arg_z ),
259 abs_z_n *
sin( n * arg_z ) );
264 lx_complex
power(
const lx_complex& x,
const real& n)
throw()
268 cxscthrow(STD_FKT_OUT_OF_DEF(
269 "lx_complex power(const lx_complex& z, const real& n); n is not integer."));
271 real zhi(2.0), N(n), r;
274 lx_complex y, neu, X(x);
278 if (N == 0.0) y = one;
283 if (N == 2) y =
sqr(x);
298 dbl = _double(N/zhi);
312 lx_complex
pow(
const lx_complex& z,
const lx_real& p)
throw()
313 {
return mid(
pow( lx_cinterval(z) , lx_interval(p) ) ); }
315 lx_complex
pow(
const lx_complex& z,
const lx_complex& p)
throw()
316 {
return mid(
pow( lx_cinterval(z) , lx_cinterval(p) ) ); }
330 lx_complex
expm1(
const lx_complex& z)
throw()
331 {
return mid(
expm1(lx_cinterval(z))); }
333 lx_complex
lnp1(
const lx_complex& z)
throw()
334 {
return mid(
lnp1(lx_cinterval(z))); }
cinterval sqrtx2m1(const cinterval &z)
Calculates .
complex & operator=(const real &r)
Implementation of standard assigning operator.
cinterval sqrt1px2(const cinterval &z)
Calculates .
The Multiple-Precision Data Type l_real.
cinterval log2(const cinterval &z)
Calculates .
interval sqrtx2y2(const interval &x, const interval &y)
Calculates .
cinterval ln(const cinterval &z)
Calculates .
cinterval sin(const cinterval &z)
Calculates .
cinterval cot(const cinterval &z)
Calculates .
The namespace cxsc, providing all functionality of the class library C-XSC.
cinterval acot(const cinterval &z)
Calculates .
cvector mid(const cimatrix_subv &mv)
Returns the middle of the matrix.
cinterval atan(const cinterval &z)
Calculates .
cinterval acos(const cinterval &z)
Calculates .
cinterval sqr(const cinterval &z)
Calculates .
cinterval expm1(const cinterval &z)
Calculates .
cinterval tanh(const cinterval &z)
Calculates .
cinterval asinh(const cinterval &z)
Calculates .
cinterval log10(const cinterval &z)
Calculates .
cinterval sqrt1mx2(const cinterval &z)
Calculates .
cinterval lnp1(const cinterval &z)
Calculates .
std::list< cinterval > sqrt_all(const cinterval &z)
Calculates and returns all possible solutions.
cinterval sqrt(const cinterval &z)
Calculates .
The Multiple-Precision Data Type l_complex.
cinterval cos(const cinterval &z)
Calculates .
cinterval atanh(const cinterval &z)
Calculates .
l_complex & operator=(const l_real &lr)
Implementation of standard assigning operator.
cinterval power_fast(const cinterval &z, int n)
Calculates .
cinterval exp10(const cinterval &z)
Calculates .
cinterval sqrtp1m1(const cinterval &z)
Calculates .
cinterval exp(const cinterval &z)
Calculates .
cinterval cosh(const cinterval &z)
Calculates .
cinterval tan(const cinterval &z)
Calculates .
cinterval sinh(const cinterval &z)
Calculates .
cinterval exp2(const cinterval &z)
Calculates .
interval Arg(const cinterval &z)
Calculates .
cinterval asin(const cinterval &z)
Calculates .
cinterval acoth(const cinterval &z)
Calculates .
cinterval coth(const cinterval &z)
Calculates .
cinterval pow(const cinterval &z, const interval &p)
Calculates .
interval arg(const cinterval &z)
Calculates .
cinterval power(const cinterval &z, int n)
Calculates .
bool Is_Integer(const real &x)
Returns 1 if x is an integer value and if .
lx_real Pi_lx_real()
lx_real approximation for
ivector abs(const cimatrix_subv &mv)
Returns the absolute value of the matrix.
cinterval acosh(const cinterval &z)
Calculates .