24 #ifndef __CLANG_CUDA_COMPLEX_BUILTINS 25 #define __CLANG_CUDA_COMPLEX_BUILTINS 32 extern "C" inline __device__
double _Complex
__muldc3(
double __a,
double __b,
33 double __c,
double __d) {
34 double __ac = __a *
__c;
35 double __bd = __b * __d;
36 double __ad = __a * __d;
37 double __bc = __b *
__c;
39 __real__(z) = __ac - __bd;
40 __imag__(z) = __ad + __bc;
76 __real__(z) = __builtin_huge_valf() * (__a * __c - __b * __d);
77 __imag__(z) = __builtin_huge_valf() * (__a * __d + __b *
__c);
84 float __c,
float __d) {
85 float __ac = __a *
__c;
86 float __bd = __b * __d;
87 float __ad = __a * __d;
88 float __bc = __b *
__c;
90 __real__(z) = __ac - __bd;
91 __imag__(z) = __ad + __bc;
125 __real__(z) = __builtin_huge_valf() * (__a * __c - __b * __d);
126 __imag__(z) = __builtin_huge_valf() * (__a * __d + __b *
__c);
133 double __c,
double __d) {
140 __ilogbw = (int)__logbw;
144 double __denom = __c * __c + __d * __d;
146 __real__(z) =
std::scalbn((__a * __c + __b * __d) / __denom, -__ilogbw);
147 __imag__(z) =
std::scalbn((__b * __c - __a * __d) / __denom, -__ilogbw);
156 __real__(z) = __builtin_huge_valf() * (__a * __c + __b * __d);
157 __imag__(z) = __builtin_huge_valf() * (__b * __c - __a * __d);
162 __real__(z) = 0.0 * (__a * __c + __b * __d);
163 __imag__(z) = 0.0 * (__b * __c - __a * __d);
170 float __c,
float __d) {
174 __ilogbw = (int)__logbw;
178 float __denom = __c * __c + __d * __d;
180 __real__(z) =
std::scalbn((__a * __c + __b * __d) / __denom, -__ilogbw);
181 __imag__(z) =
std::scalbn((__b * __c - __a * __d) / __denom, -__ilogbw);
190 __real__(z) = __builtin_huge_valf() * (__a * __c + __b * __d);
191 __imag__(z) = __builtin_huge_valf() * (__b * __c - __a * __d);
196 __real__(z) = 0 * (__a * __c + __b * __d);
197 __imag__(z) = 0 * (__b * __c - __a * __d);
203 #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__ 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__ int max(int __a, int __b)
__device__ float _Complex __mulsc3(float __a, float __b, float __c, float __d)
static __inline__ vector float vector float vector float __c