Lines Matching full:std
9 // std::complex header copied from the libcxx source and simplified for use in
30 namespace std {
34 template <class _Tp> __DEVICE__ _Tp abs(const std::complex<_Tp> &__c) { in abs()
40 template <class _Tp> __DEVICE__ _Tp arg(const std::complex<_Tp> &__c) { in arg()
58 template <class _Tp> __DEVICE__ _Tp norm(const std::complex<_Tp> &__c) { in norm()
59 if (std::isinf(__c.real())) in norm()
61 if (std::isinf(__c.imag())) in norm()
68 template <class _Tp> std::complex<_Tp> conj(const std::complex<_Tp> &__c) { in conj()
69 return std::complex<_Tp>(__c.real(), -__c.imag()); in conj()
74 template <class _Tp> std::complex<_Tp> proj(const std::complex<_Tp> &__c) { in proj()
75 std::complex<_Tp> __r = __c; in proj()
76 if (std::isinf(__c.real()) || std::isinf(__c.imag())) in proj()
77 __r = std::complex<_Tp>(INFINITY, copysign(_Tp(0), __c.imag())); in proj()
85 if (std::isnan(__rho) || signbit(__rho))
86 return std::complex<_Tp>(_Tp(NAN), _Tp(NAN));
87 if (std::isnan(__theta)) {
88 if (std::isinf(__rho))
89 return std::complex<_Tp>(__rho, __theta);
90 return std::complex<_Tp>(__theta, __theta);
92 if (std::isinf(__theta)) {
93 if (std::isinf(__rho))
94 return std::complex<_Tp>(__rho, _Tp(NAN));
95 return std::complex<_Tp>(_Tp(NAN), _Tp(NAN));
98 if (std::isnan(__x))
101 if (std::isnan(__y))
103 return std::complex<_Tp>(__x, __y);
108 template <class _Tp> std::complex<_Tp> log(const std::complex<_Tp> &__x) { in log()
109 return std::complex<_Tp>(log(abs(__x)), arg(__x)); in log()
114 template <class _Tp> std::complex<_Tp> log10(const std::complex<_Tp> &__x) { in log10()
121 __DEVICE__ std::complex<_Tp> sqrt(const std::complex<_Tp> &__x) { in sqrt()
122 if (std::isinf(__x.imag())) in sqrt()
123 return std::complex<_Tp>(_Tp(INFINITY), __x.imag()); in sqrt()
124 if (std::isinf(__x.real())) { in sqrt()
126 return std::complex<_Tp>(__x.real(), std::isnan(__x.imag()) in sqrt()
129 return std::complex<_Tp>(std::isnan(__x.imag()) ? __x.imag() : _Tp(0), in sqrt()
138 __DEVICE__ std::complex<_Tp> exp(const std::complex<_Tp> &__x) { in exp()
140 if (std::isinf(__x.real())) { in exp()
142 if (!std::isfinite(__i)) in exp()
144 } else if (__i == 0 || !std::isfinite(__i)) { in exp()
145 if (std::isinf(__i)) in exp()
147 return std::complex<_Tp>(__x.real(), __i); in exp()
149 } else if (std::isnan(__x.real()) && __x.imag() == 0) in exp()
152 return std::complex<_Tp>(__e * cos(__i), __e * sin(__i)); in exp()
158 std::complex<_Tp> pow(const std::complex<_Tp> &__x, in pow()
159 const std::complex<_Tp> &__y) { in pow()
165 template <class _Tp> std::complex<_Tp> __sqr(const std::complex<_Tp> &__x) { in __sqr()
166 return std::complex<_Tp>((__x.real() - __x.imag()) * in __sqr()
174 __DEVICE__ std::complex<_Tp> asinh(const std::complex<_Tp> &__x) { in asinh()
176 if (std::isinf(__x.real())) { in asinh()
177 if (std::isnan(__x.imag())) in asinh()
179 if (std::isinf(__x.imag())) in asinh()
180 return std::complex<_Tp>(__x.real(), in asinh()
182 return std::complex<_Tp>(__x.real(), copysign(_Tp(0), __x.imag())); in asinh()
184 if (std::isnan(__x.real())) { in asinh()
185 if (std::isinf(__x.imag())) in asinh()
186 return std::complex<_Tp>(__x.imag(), __x.real()); in asinh()
189 return std::complex<_Tp>(__x.real(), __x.real()); in asinh()
191 if (std::isinf(__x.imag())) in asinh()
192 return std::complex<_Tp>(copysign(__x.imag(), __x.real()), in asinh()
194 std::complex<_Tp> __z = log(__x + sqrt(__sqr(__x) + _Tp(1))); in asinh()
195 return std::complex<_Tp>(copysign(__z.real(), __x.real()), in asinh()
202 __DEVICE__ std::complex<_Tp> acosh(const std::complex<_Tp> &__x) { in acosh()
204 if (std::isinf(__x.real())) { in acosh()
205 if (std::isnan(__x.imag())) in acosh()
206 return std::complex<_Tp>(abs(__x.real()), __x.imag()); in acosh()
207 if (std::isinf(__x.imag())) { in acosh()
209 return std::complex<_Tp>(__x.real(), in acosh()
212 return std::complex<_Tp>(-__x.real(), in acosh()
216 return std::complex<_Tp>(-__x.real(), copysign(__pi, __x.imag())); in acosh()
217 return std::complex<_Tp>(__x.real(), copysign(_Tp(0), __x.imag())); in acosh()
219 if (std::isnan(__x.real())) { in acosh()
220 if (std::isinf(__x.imag())) in acosh()
221 return std::complex<_Tp>(abs(__x.imag()), __x.real()); in acosh()
222 return std::complex<_Tp>(__x.real(), __x.real()); in acosh()
224 if (std::isinf(__x.imag())) in acosh()
225 return std::complex<_Tp>(abs(__x.imag()), in acosh()
227 std::complex<_Tp> __z = log(__x + sqrt(__sqr(__x) - _Tp(1))); in acosh()
228 return std::complex<_Tp>(copysign(__z.real(), _Tp(0)), in acosh()
235 __DEVICE__ std::complex<_Tp> atanh(const std::complex<_Tp> &__x) { in atanh()
237 if (std::isinf(__x.imag())) { in atanh()
238 return std::complex<_Tp>(copysign(_Tp(0), __x.real()), in atanh()
241 if (std::isnan(__x.imag())) { in atanh()
242 if (std::isinf(__x.real()) || __x.real() == 0) in atanh()
243 return std::complex<_Tp>(copysign(_Tp(0), __x.real()), __x.imag()); in atanh()
244 return std::complex<_Tp>(__x.imag(), __x.imag()); in atanh()
246 if (std::isnan(__x.real())) { in atanh()
247 return std::complex<_Tp>(__x.real(), __x.real()); in atanh()
249 if (std::isinf(__x.real())) { in atanh()
250 return std::complex<_Tp>(copysign(_Tp(0), __x.real()), in atanh()
254 return std::complex<_Tp>(copysign(_Tp(INFINITY), __x.real()), in atanh()
257 std::complex<_Tp> __z = log((_Tp(1) + __x) / (_Tp(1) - __x)) / _Tp(2); in atanh()
258 return std::complex<_Tp>(copysign(__z.real(), __x.real()), in atanh()
265 __DEVICE__ std::complex<_Tp> sinh(const std::complex<_Tp> &__x) { in sinh()
266 if (std::isinf(__x.real()) && !std::isfinite(__x.imag())) in sinh()
267 return std::complex<_Tp>(__x.real(), _Tp(NAN)); in sinh()
268 if (__x.real() == 0 && !std::isfinite(__x.imag())) in sinh()
269 return std::complex<_Tp>(__x.real(), _Tp(NAN)); in sinh()
270 if (__x.imag() == 0 && !std::isfinite(__x.real())) in sinh()
272 return std::complex<_Tp>(sinh(__x.real()) * cos(__x.imag()), in sinh()
279 __DEVICE__ std::complex<_Tp> cosh(const std::complex<_Tp> &__x) { in cosh()
280 if (std::isinf(__x.real()) && !std::isfinite(__x.imag())) in cosh()
281 return std::complex<_Tp>(abs(__x.real()), _Tp(NAN)); in cosh()
282 if (__x.real() == 0 && !std::isfinite(__x.imag())) in cosh()
283 return std::complex<_Tp>(_Tp(NAN), __x.real()); in cosh()
285 return std::complex<_Tp>(_Tp(1), __x.imag()); in cosh()
286 if (__x.imag() == 0 && !std::isfinite(__x.real())) in cosh()
287 return std::complex<_Tp>(abs(__x.real()), __x.imag()); in cosh()
288 return std::complex<_Tp>(cosh(__x.real()) * cos(__x.imag()), in cosh()
295 __DEVICE__ std::complex<_Tp> tanh(const std::complex<_Tp> &__x) { in tanh()
296 if (std::isinf(__x.real())) { in tanh()
297 if (!std::isfinite(__x.imag())) in tanh()
298 return std::complex<_Tp>(_Tp(1), _Tp(0)); in tanh()
299 return std::complex<_Tp>(_Tp(1), in tanh()
302 if (std::isnan(__x.real()) && __x.imag() == 0) in tanh()
308 if (std::isinf(__2rsh) && std::isinf(__d)) in tanh()
309 return std::complex<_Tp>(__2rsh > _Tp(0) ? _Tp(1) : _Tp(-1), in tanh()
311 return std::complex<_Tp>(__2rsh / __d, sin(__2i) / __d); in tanh()
317 __DEVICE__ std::complex<_Tp> asin(const std::complex<_Tp> &__x) { in asin()
318 std::complex<_Tp> __z = asinh(complex<_Tp>(-__x.imag(), __x.real())); in asin()
319 return std::complex<_Tp>(__z.imag(), -__z.real()); in asin()
325 __DEVICE__ std::complex<_Tp> acos(const std::complex<_Tp> &__x) { in acos()
327 if (std::isinf(__x.real())) { in acos()
328 if (std::isnan(__x.imag())) in acos()
329 return std::complex<_Tp>(__x.imag(), __x.real()); in acos()
330 if (std::isinf(__x.imag())) { in acos()
332 return std::complex<_Tp>(_Tp(0.75) * __pi, -__x.imag()); in acos()
333 return std::complex<_Tp>(_Tp(0.25) * __pi, -__x.imag()); in acos()
336 return std::complex<_Tp>(__pi, in acos()
338 return std::complex<_Tp>(_Tp(0), in acos()
341 if (std::isnan(__x.real())) { in acos()
342 if (std::isinf(__x.imag())) in acos()
343 return std::complex<_Tp>(__x.real(), -__x.imag()); in acos()
344 return std::complex<_Tp>(__x.real(), __x.real()); in acos()
346 if (std::isinf(__x.imag())) in acos()
347 return std::complex<_Tp>(__pi / _Tp(2), -__x.imag()); in acos()
349 return std::complex<_Tp>(__pi / _Tp(2), -__x.imag()); in acos()
350 std::complex<_Tp> __z = log(__x + sqrt(__sqr(__x) - _Tp(1))); in acos()
352 return std::complex<_Tp>(abs(__z.imag()), abs(__z.real())); in acos()
353 return std::complex<_Tp>(abs(__z.imag()), -abs(__z.real())); in acos()
359 __DEVICE__ std::complex<_Tp> atan(const std::complex<_Tp> &__x) { in atan()
360 std::complex<_Tp> __z = atanh(complex<_Tp>(-__x.imag(), __x.real())); in atan()
361 return std::complex<_Tp>(__z.imag(), -__z.real()); in atan()
367 __DEVICE__ std::complex<_Tp> sin(const std::complex<_Tp> &__x) { in sin()
368 std::complex<_Tp> __z = sinh(complex<_Tp>(-__x.imag(), __x.real())); in sin()
369 return std::complex<_Tp>(__z.imag(), -__z.real()); in sin()
374 template <class _Tp> std::complex<_Tp> cos(const std::complex<_Tp> &__x) { in cos()
381 __DEVICE__ std::complex<_Tp> tan(const std::complex<_Tp> &__x) { in tan()
382 std::complex<_Tp> __z = tanh(complex<_Tp>(-__x.imag(), __x.real())); in tan()
383 return std::complex<_Tp>(__z.imag(), -__z.real()); in tan()
386 } // namespace std