35 inline lx_real Re(
const lx_complex &a)
38 inline lx_real Im(
const lx_complex &a)
41 inline int StagPrec(
const lx_complex &a) noexcept
42 {
return StagPrec(a.re); }
44 inline real expoRe(
const lx_complex &a) noexcept
45 {
return expo(a.re); }
47 inline real expoIm(
const lx_complex &a) noexcept
48 {
return expo(a.im); }
50 inline l_real lr_partRe(
const lx_complex &a) noexcept
51 {
return lr_part(a.re); }
53 inline l_real lr_partIm(
const lx_complex &a) noexcept
54 {
return lr_part(a.im); }
56 inline lx_complex & SetRe(lx_complex &a,
const lx_real &b)
57 { a.re = b;
return a; }
58 inline lx_complex & SetRe(lx_complex &a,
const l_real &b)
59 { a.re = b;
return a; }
60 inline lx_complex & SetRe(lx_complex &a,
const real &b)
61 { a.re = b;
return a; }
63 inline lx_complex & SetIm(lx_complex &a,
const lx_real &b)
64 { a.im = b;
return a; }
65 inline lx_complex & SetIm(lx_complex &a,
const l_real &b)
66 { a.im = b;
return a; }
67 inline lx_complex & SetIm(lx_complex &a,
const real &b)
68 { a.im = b;
return a; }
70 inline lx_complex conj(
const lx_complex& a) noexcept
71 {
return lx_complex(a.re, -a.im); }
73 inline bool operator ! (
const lx_complex& a) noexcept
74 {
return !a.re && !a.im; }
76 inline bool operator == (
const lx_complex &a,
const lx_complex &b)
77 noexcept {
return (a.re == b.re && a.im == b.im); }
79 inline bool operator == (
const lx_complex &a,
const l_complex &b)
80 noexcept {
return (a.re == Re(b) && a.im == Im(b)); }
81 inline bool operator == (
const lx_complex &a,
const complex &b)
82 noexcept {
return (a.re == Re(b) && a.im == Im(b)); }
83 inline bool operator == (
const l_complex &a,
const lx_complex &b)
84 noexcept {
return b == a; }
85 inline bool operator == (
const complex &a,
const lx_complex &b)
86 noexcept {
return (b == a); }
88 inline bool operator == (
const lx_complex &a,
const lx_real &b) noexcept
89 {
return a.re == b && a.im == 0.0; }
90 inline bool operator == (
const lx_complex &a,
const l_real &b) noexcept
91 {
return a.re == b && a.im == 0.0; }
92 inline bool operator == (
const lx_complex &a,
const real &b) noexcept
93 {
return a.re == b && a.im == 0.0; }
95 inline bool operator == (
const lx_real &a,
const lx_complex &b) noexcept
96 {
return a == b.re && b.im == 0.0; }
97 inline bool operator == (
const l_real &a,
const lx_complex &b) noexcept
98 {
return a == b.re && b.im == 0.0; }
99 inline bool operator == (
const real &a,
const lx_complex &b) noexcept
100 {
return a == b.re && b.im == 0.0; }
102 inline bool operator != (
const lx_complex &a,
const lx_complex &b) noexcept
103 {
return !(a == b); }
105 inline bool operator != (
const lx_complex &a,
const l_complex &b) noexcept
106 {
return !(a == b); }
107 inline bool operator != (
const lx_complex &a,
const complex &b) noexcept
108 {
return !(a == b); }
109 inline bool operator != (
const l_complex &a,
const lx_complex &b) noexcept
110 {
return !(a == b); }
111 inline bool operator != (
const complex &a,
const lx_complex &b) noexcept
112 {
return !(a == b); }
114 inline bool operator != (
const lx_complex &a,
const lx_real &b) noexcept
115 {
return !(a == b); }
116 inline bool operator != (
const lx_complex &a,
const l_real &b) noexcept
117 {
return !(a == b); }
118 inline bool operator != (
const lx_complex &a,
const real &b) noexcept
119 {
return !(a == b); }
120 inline bool operator != (
const lx_real &a,
const lx_complex &b) noexcept
121 {
return !(a == b); }
122 inline bool operator != (
const l_real &a,
const lx_complex &b) noexcept
123 {
return !(a == b); }
124 inline bool operator != (
const real &a,
const lx_complex &b) noexcept
125 {
return !(a == b); }
127 inline lx_complex operator + (
const lx_complex &a) noexcept
129 inline lx_complex operator - (
const lx_complex &a) noexcept
130 {
return lx_complex(-a.re,-a.im); }
132 inline lx_complex operator + (
const lx_complex& a,
const lx_complex& b) noexcept
133 {
return lx_complex(a.re+b.re,a.im+b.im); }
135 inline lx_complex operator + (
const lx_complex& a,
const l_complex& b) noexcept
136 {
return a + lx_complex(b); }
137 inline lx_complex operator + (
const lx_complex& a,
const complex& b) noexcept
138 {
return a + lx_complex(b); }
139 inline lx_complex operator + (
const l_complex& a,
const lx_complex& b) noexcept
140 {
return lx_complex(a) + b; }
141 inline lx_complex operator + (
const complex& a,
const lx_complex& b) noexcept
142 {
return lx_complex(a) + b; }
143 inline lx_complex operator + (
const lx_complex& a,
const lx_real& b) noexcept
144 {
return lx_complex(a.re + b, Im(a)); }
145 inline lx_complex operator + (
const lx_real& a,
const lx_complex& b) noexcept
146 {
return lx_complex(b.re + a, Im(b)); }
147 inline lx_complex operator + (
const lx_complex& a,
const l_real& b) noexcept
148 {
return lx_complex(a.re + b, Im(a)); }
149 inline lx_complex operator + (
const l_real& a,
const lx_complex& b) noexcept
150 {
return lx_complex(b.re + a, Im(b)); }
151 inline lx_complex operator + (
const lx_complex& a,
const real& b) noexcept
152 {
return lx_complex(a.re + b, Im(a)); }
153 inline lx_complex operator + (
const real& a,
const lx_complex& b) noexcept
154 {
return lx_complex(b.re + a, Im(b)); }
156 inline lx_complex &
operator +=(lx_complex& a,
const lx_complex& b) noexcept
162 inline lx_complex &
operator +=(lx_complex& a,
const lx_real& b) noexcept
169 inline lx_complex operator - (
const lx_complex& a,
const lx_complex& b) noexcept
171 inline lx_complex operator - (
const lx_complex& a,
const l_complex& b) noexcept
173 inline lx_complex operator - (
const lx_complex& a,
const complex& b) noexcept
175 inline lx_complex operator - (
const l_complex& a,
const lx_complex& b) noexcept
177 inline lx_complex operator - (
const complex& a,
const lx_complex& b) noexcept
179 inline lx_complex operator - (
const lx_complex& a,
const lx_real& b) noexcept
181 inline lx_complex operator - (
const lx_complex& a,
const l_real& b) noexcept
183 inline lx_complex operator - (
const lx_complex& a,
const real& b) noexcept
185 inline lx_complex operator - (
const lx_real& a,
const lx_complex& b) noexcept
187 inline lx_complex operator - (
const l_real& a,
const lx_complex& b) noexcept
189 inline lx_complex operator - (
const real& a,
const lx_complex& b) noexcept
192 inline lx_complex & operator -=(lx_complex& a,
const lx_complex& b) noexcept
194 inline lx_complex & operator -=(lx_complex& a,
const l_complex& b) noexcept
196 inline lx_complex & operator -=(lx_complex& a,
const complex& b) noexcept
198 inline lx_complex & operator -=(lx_complex& a,
const lx_real& b) noexcept
200 inline lx_complex & operator -=(lx_complex& a,
const l_real& b) noexcept
202 inline lx_complex & operator -=(lx_complex& a,
const real& b) noexcept
206 inline lx_complex
operator * (
const lx_complex& a,
const lx_complex& b) noexcept
210 x = a.re*b.re - a.im*b.im;
211 y = a.im*b.re + a.re*b.im;
213 return lx_complex(x,y);
216 {
return a*lx_complex(b); }
218 {
return a*lx_complex(b); }
220 {
return lx_complex(a)*b; }
222 {
return lx_complex(a)*b; }
223 inline lx_complex
operator * (
const lx_complex& a,
const lx_real& b) noexcept
224 {
return a*lx_complex(b); }
226 {
return a*lx_complex(b); }
228 {
return a*lx_complex(b); }
229 inline lx_complex
operator * (
const lx_real& a,
const lx_complex& b) noexcept
230 {
return lx_complex(a)*b; }
232 {
return lx_complex(a)*b; }
234 {
return lx_complex(a)*b; }
236 inline lx_complex &
operator *=(lx_complex& a,
const lx_complex& b) noexcept
242 inline lx_complex &
operator *=(lx_complex& a,
const lx_real& b) noexcept
250 inline lx_complex
operator / (
const lx_complex& a,
const lx_complex& b) noexcept
254 Ne = b.re*b.re + b.im*b.im;
255 x = (a.re*b.re + a.im*b.im) / Ne;
256 y = (a.im*b.re - a.re*b.im) / Ne;
257 return lx_complex(x,y);
260 {
return a/lx_complex(b); }
262 {
return a/lx_complex(b); }
264 {
return lx_complex(a)/b; }
266 {
return lx_complex(a)/b; }
267 inline lx_complex
operator / (
const lx_complex& a,
const lx_real& b) noexcept
268 {
return a/lx_complex(b); }
270 {
return a/lx_complex(b); }
272 {
return a/lx_complex(b); }
273 inline lx_complex
operator / (
const lx_real& a,
const lx_complex& b) noexcept
274 {
return lx_complex(a)/b; }
276 {
return lx_complex(a)/b; }
278 {
return lx_complex(a)/b; }
280 inline lx_complex &
operator /=(lx_complex& a,
const lx_complex& b) noexcept
286 inline lx_complex &
operator /=(lx_complex& a,
const lx_real& b) noexcept
295 inline std::ostream& operator << (std::ostream& s,
const lx_complex& a)
308 inline std::string & operator << (std::string &s,
const lx_complex& a) noexcept