10 #ifndef __CLANG_CUDA_COMPLEX_BUILTINS 11 #define __CLANG_CUDA_COMPLEX_BUILTINS 18 extern "C" inline __device__
double _Complex
__muldc3(
double __a,
double __b,
19 double __c,
double __d) {
20 double __ac = __a *
__c;
21 double __bd = __b * __d;
22 double __ad = __a * __d;
23 double __bc = __b *
__c;
25 __real__(z) = __ac - __bd;
26 __imag__(z) = __ad + __bc;
62 __real__(z) = __builtin_huge_valf() * (__a * __c - __b * __d);
63 __imag__(z) = __builtin_huge_valf() * (__a * __d + __b *
__c);
70 float __c,
float __d) {
71 float __ac = __a *
__c;
72 float __bd = __b * __d;
73 float __ad = __a * __d;
74 float __bc = __b *
__c;
76 __real__(z) = __ac - __bd;
77 __imag__(z) = __ad + __bc;
111 __real__(z) = __builtin_huge_valf() * (__a * __c - __b * __d);
112 __imag__(z) = __builtin_huge_valf() * (__a * __d + __b *
__c);
119 double __c,
double __d) {
126 __ilogbw = (int)__logbw;
130 double __denom = __c * __c + __d * __d;
132 __real__(z) =
std::scalbn((__a * __c + __b * __d) / __denom, -__ilogbw);
133 __imag__(z) =
std::scalbn((__b * __c - __a * __d) / __denom, -__ilogbw);
142 __real__(z) = __builtin_huge_valf() * (__a * __c + __b * __d);
143 __imag__(z) = __builtin_huge_valf() * (__b * __c - __a * __d);
148 __real__(z) = 0.0 * (__a * __c + __b * __d);
149 __imag__(z) = 0.0 * (__b * __c - __a * __d);
156 float __c,
float __d) {
160 __ilogbw = (int)__logbw;
164 float __denom = __c * __c + __d * __d;
166 __real__(z) =
std::scalbn((__a * __c + __b * __d) / __denom, -__ilogbw);
167 __imag__(z) =
std::scalbn((__b * __c - __a * __d) / __denom, -__ilogbw);
176 __real__(z) = __builtin_huge_valf() * (__a * __c + __b * __d);
177 __imag__(z) = __builtin_huge_valf() * (__b * __c - __a * __d);
182 __real__(z) = 0 * (__a * __c + __b * __d);
183 __imag__(z) = 0 * (__b * __c - __a * __d);
189 #endif // __CLANG_CUDA_COMPLEX_BUILTINS __DEVICE__ long long abs(long long __n)
__DEVICE__ bool isinf(float __x)
Test for infinity value (+ve or -ve) .
__DEVICE__ int max(int __a, int __b)
__device__ double _Complex __muldc3(double __a, double __b, double __c, double __d)
static __inline__ void int __a
__DEVICE__ bool isfinite(float __x)
Test for finite value.
__device__ double _Complex __divdc3(double __a, double __b, double __c, double __d)
__device__ float _Complex __divsc3(float __a, float __b, float __c, float __d)
#define copysign(__x, __y)
static __inline__ vector float vector float __b
__DEVICE__ bool isnan(float __x)
Test for a NaN.
__device__ float _Complex __mulsc3(float __a, float __b, float __c, float __d)
static __inline__ vector float vector float vector float __c