C-XSC - A C++ Class Library for Extended Scientific Computing
2.5.4
|
30 #include "lx_complex.hpp"
31 #include "lx_cinterval.hpp"
55 std::string & operator >> (std::string& s, lx_complex& a) noexcept
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) noexcept
88 void operator >> (
const char *s, lx_complex& a) noexcept
94 lx_real
abs (
const lx_complex& a) noexcept
96 lx_real abs2 (
const lx_complex& a) noexcept
97 {
return a.re*a.re + a.im*a.im; }
103 lx_complex
sqr(
const lx_complex& z) noexcept {
return (z*z); }
104 lx_complex
sqrt(
const lx_complex& z) noexcept
105 {
return mid(
sqrt(lx_cinterval(z))); }
107 lx_complex
sqrt(
const lx_complex& z,
int n) noexcept
108 {
return mid(
sqrt(lx_cinterval(z),n) ); }
110 lx_complex
exp(
const lx_complex& z) noexcept
111 {
return mid(
exp(lx_cinterval(z))); }
113 lx_complex
exp2(
const lx_complex& z) noexcept
114 {
return mid(
exp2(lx_cinterval(z))); }
116 lx_complex
exp10(
const lx_complex& z) noexcept
117 {
return mid(
exp10(lx_cinterval(z))); }
119 lx_complex
sin(
const lx_complex& z) noexcept
120 {
return mid(
sin(lx_cinterval(z))); }
122 lx_complex
cos(
const lx_complex& z) noexcept
123 {
return mid(
cos(lx_cinterval(z))); }
125 lx_complex
tan(
const lx_complex& z) noexcept
126 {
return mid(
tan(lx_cinterval(z))); }
128 lx_complex
cot(
const lx_complex& z) noexcept
129 {
return mid(
cot(lx_cinterval(z))); }
131 lx_complex
asin(
const lx_complex& z) noexcept
132 {
return mid(
asin(lx_cinterval(z))); }
134 lx_complex
acos(
const lx_complex& z) noexcept
135 {
return mid(
acos(lx_cinterval(z))); }
137 lx_complex
atan(
const lx_complex& z) noexcept
138 {
return mid(
atan(lx_cinterval(z))); }
140 lx_complex
acot(
const lx_complex& z) noexcept
141 {
return mid(
acot(lx_cinterval(z))); }
143 lx_complex
sinh(
const lx_complex& z) noexcept
144 {
return mid(
sinh(lx_cinterval(z))); }
146 lx_complex
cosh(
const lx_complex& z) noexcept
147 {
return mid(
cosh(lx_cinterval(z))); }
149 lx_complex
tanh(
const lx_complex& z) noexcept
150 {
return mid(
tanh(lx_cinterval(z))); }
152 lx_complex
coth(
const lx_complex& z) noexcept
153 {
return mid(
coth(lx_cinterval(z))); }
155 lx_complex
asinh(
const lx_complex& z) noexcept
156 {
return mid(
asinh(lx_cinterval(z))); }
158 lx_complex
acosh(
const lx_complex& z) noexcept
159 {
return mid(
acosh(lx_cinterval(z))); }
161 lx_complex
atanh(
const lx_complex& z) noexcept
162 {
return mid(
atanh(lx_cinterval(z))); }
164 lx_complex
acoth(
const lx_complex& z) noexcept
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) noexcept
181 {
return mid(
arg(lx_cinterval(z))); }
183 lx_real
Arg(
const lx_complex& z) noexcept
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) noexcept
227 {
return mid(
ln(lx_cinterval(z))); }
229 lx_complex
log2(
const lx_complex& z) noexcept
230 {
return mid(
log2(lx_cinterval(z))); }
231 lx_complex
log10(
const lx_complex& z) noexcept
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) noexcept
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) noexcept
313 {
return mid(
pow( lx_cinterval(z) , lx_interval(p) ) ); }
315 lx_complex
pow(
const lx_complex& z,
const lx_complex& p) noexcept
316 {
return mid(
pow( lx_cinterval(z) , lx_cinterval(p) ) ); }
330 lx_complex
expm1(
const lx_complex& z) noexcept
331 {
return mid(
expm1(lx_cinterval(z))); }
333 lx_complex
lnp1(
const lx_complex& z) noexcept
334 {
return mid(
lnp1(lx_cinterval(z))); }
cinterval power(const cinterval &z, int n) noexcept
Calculates .
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
cinterval lnp1(const cinterval &z) noexcept
Calculates .
cinterval asinh(const cinterval &z) noexcept
Calculates .
cinterval sqrt1px2(const cinterval &z) noexcept
Calculates .
cinterval coth(const cinterval &z) noexcept
Calculates .
cinterval sin(const cinterval &z) noexcept
Calculates .
std::list< cinterval > sqrt_all(const cinterval &z)
Calculates and returns all possible solutions.
cinterval cot(const cinterval &z) noexcept
Calculates .
cinterval exp10(const cinterval &z) noexcept
Calculates .
bool Is_Integer(const real &x)
Returns 1 if x is an integer value and if .
cinterval log10(const cinterval &z) noexcept
Calculates .
interval arg(const cinterval &z) noexcept
Calculates .
cinterval tan(const cinterval &z) noexcept
Calculates .
cinterval tanh(const cinterval &z) noexcept
Calculates .
cinterval sqrt(const cinterval &z) noexcept
Calculates .
cinterval ln(const cinterval &z) noexcept
Calculates .
cinterval log2(const cinterval &z) noexcept
Calculates .
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
complex & operator=(const real &r) noexcept
Implementation of standard assigning operator.
cinterval sqrtx2m1(const cinterval &z) noexcept
Calculates .
interval Arg(const cinterval &z) noexcept
Calculates .
cinterval exp(const cinterval &z) noexcept
Calculates .
cinterval acos(const cinterval &z) noexcept
Calculates .
The Multiple-Precision Data Type l_complex.
lx_real Pi_lx_real() noexcept
lx_real approximation for
cinterval cosh(const cinterval &z) noexcept
Calculates .
cinterval sinh(const cinterval &z) noexcept
Calculates .
cinterval pow(const cinterval &z, const interval &p) noexcept
Calculates .
l_complex & operator=(const l_real &lr) noexcept
Implementation of standard assigning operator.
cinterval exp2(const cinterval &z) noexcept
Calculates .
cinterval acoth(const cinterval &z) noexcept
Calculates .
The namespace cxsc, providing all functionality of the class library C-XSC.
The Multiple-Precision Data Type l_real.
cinterval sqrtp1m1(const cinterval &z) noexcept
Calculates .
cinterval expm1(const cinterval &z) noexcept
Calculates .
cinterval atanh(const cinterval &z) noexcept
Calculates .
cinterval cos(const cinterval &z) noexcept
Calculates .
cinterval atan(const cinterval &z) noexcept
Calculates .
cinterval acot(const cinterval &z) noexcept
Calculates .
cinterval power_fast(const cinterval &z, int n) noexcept
Calculates .
cinterval sqrt1mx2(const cinterval &z) noexcept
Calculates .
cinterval acosh(const cinterval &z) noexcept
Calculates .
cinterval sqr(const cinterval &z) noexcept
Calculates .
interval sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
cinterval asin(const cinterval &z) noexcept
Calculates .