1 #pragma once 2 3 // __clang_cuda_(c)math(.h) also provide `abs` which actually belong in 4 // cstdlib. We could split them out but for now we just include cstdlib from 5 // cmath.h which is what the systems I've seen do as well. 6 #include <stdlib.h> 7 8 double fabs(double __a); 9 double acos(double __a); 10 float acosf(float __a); 11 double acosh(double __a); 12 float acoshf(float __a); 13 double asin(double __a); 14 float asinf(float __a); 15 double asinh(double __a); 16 float asinhf(float __a); 17 double atan(double __a); 18 double atan2(double __a, double __b); 19 float atan2f(float __a, float __b); 20 float atanf(float __a); 21 double atanh(double __a); 22 float atanhf(float __a); 23 double cbrt(double __a); 24 float cbrtf(float __a); 25 double ceil(double __a); 26 float ceilf(float __a); 27 double copysign(double __a, double __b); 28 float copysignf(float __a, float __b); 29 double cos(double __a); 30 float cosf(float __a); 31 double cosh(double __a); 32 float coshf(float __a); 33 double cospi(double __a); 34 float cospif(float __a); 35 double cyl_bessel_i0(double __a); 36 float cyl_bessel_i0f(float __a); 37 double cyl_bessel_i1(double __a); 38 float cyl_bessel_i1f(float __a); 39 double erf(double __a); 40 double erfc(double __a); 41 float erfcf(float __a); 42 double erfcinv(double __a); 43 float erfcinvf(float __a); 44 double erfcx(double __a); 45 float erfcxf(float __a); 46 float erff(float __a); 47 double erfinv(double __a); 48 float erfinvf(float __a); 49 double exp(double __a); 50 double exp10(double __a); 51 float exp10f(float __a); 52 double exp2(double __a); 53 float exp2f(float __a); 54 float expf(float __a); 55 double expm1(double __a); 56 float expm1f(float __a); 57 float fabsf(float __a); 58 double fdim(double __a, double __b); 59 float fdimf(float __a, float __b); 60 double fdivide(double __a, double __b); 61 float fdividef(float __a, float __b); 62 double floor(double __f); 63 float floorf(float __f); 64 double fma(double __a, double __b, double __c); 65 float fmaf(float __a, float __b, float __c); 66 double fmax(double __a, double __b); 67 float fmaxf(float __a, float __b); 68 double fmin(double __a, double __b); 69 float fminf(float __a, float __b); 70 double fmod(double __a, double __b); 71 float fmodf(float __a, float __b); 72 double frexp(double __a, int *__b); 73 float frexpf(float __a, int *__b); 74 double hypot(double __a, double __b); 75 float hypotf(float __a, float __b); 76 int ilogb(double __a); 77 int ilogbf(float __a); 78 double j0(double __a); 79 float j0f(float __a); 80 double j1(double __a); 81 float j1f(float __a); 82 double jn(int __n, double __a); 83 float jnf(int __n, float __a); 84 double ldexp(double __a, int __b); 85 float ldexpf(float __a, int __b); 86 double lgamma(double __a); 87 float lgammaf(float __a); 88 long long llmax(long long __a, long long __b); 89 long long llmin(long long __a, long long __b); 90 long long llrint(double __a); 91 long long llrintf(float __a); 92 long long llround(double __a); 93 long long llroundf(float __a); 94 double log(double __a); 95 double log10(double __a); 96 float log10f(float __a); 97 double log1p(double __a); 98 float log1pf(float __a); 99 double log2(double __a); 100 float log2f(float __a); 101 double logb(double __a); 102 float logbf(float __a); 103 float logf(float __a); 104 long lrint(double __a); 105 long lrintf(float __a); 106 long lround(double __a); 107 long lroundf(float __a); 108 double modf(double __a, double *__b); 109 float modff(float __a, float *__b); 110 double nearbyint(double __a); 111 float nearbyintf(float __a); 112 double nextafter(double __a, double __b); 113 float nextafterf(float __a, float __b); 114 double norm(int __dim, const double *__t); 115 double norm3d(double __a, double __b, double __c); 116 float norm3df(float __a, float __b, float __c); 117 double norm4d(double __a, double __b, double __c, double __d); 118 float norm4df(float __a, float __b, float __c, float __d); 119 double normcdf(double __a); 120 float normcdff(float __a); 121 double normcdfinv(double __a); 122 float normcdfinvf(float __a); 123 float normf(int __dim, const float *__t); 124 double pow(double __a, double __b); 125 float powf(float __a, float __b); 126 double powi(double __a, int __b); 127 float powif(float __a, int __b); 128 double rcbrt(double __a); 129 float rcbrtf(float __a); 130 double remainder(double __a, double __b); 131 float remainderf(float __a, float __b); 132 double remquo(double __a, double __b, int *__c); 133 float remquof(float __a, float __b, int *__c); 134 double rhypot(double __a, double __b); 135 float rhypotf(float __a, float __b); 136 double rint(double __a); 137 float rintf(float __a); 138 double rnorm(int __a, const double *__b); 139 double rnorm3d(double __a, double __b, double __c); 140 float rnorm3df(float __a, float __b, float __c); 141 double rnorm4d(double __a, double __b, double __c, double __d); 142 float rnorm4df(float __a, float __b, float __c, float __d); 143 float rnormf(int __dim, const float *__t); 144 double round(double __a); 145 float roundf(float __a); 146 double rsqrt(double __a); 147 float rsqrtf(float __a); 148 double scalbn(double __a, int __b); 149 float scalbnf(float __a, int __b); 150 double scalbln(double __a, long __b); 151 float scalblnf(float __a, long __b); 152 double sin(double __a); 153 void sincos(double __a, double *__s, double *__c); 154 void sincosf(float __a, float *__s, float *__c); 155 void sincospi(double __a, double *__s, double *__c); 156 void sincospif(float __a, float *__s, float *__c); 157 float sinf(float __a); 158 double sinh(double __a); 159 float sinhf(float __a); 160 double sinpi(double __a); 161 float sinpif(float __a); 162 double sqrt(double __a); 163 float sqrtf(float __a); 164 double tan(double __a); 165 float tanf(float __a); 166 double tanh(double __a); 167 float tanhf(float __a); 168 double tgamma(double __a); 169 float tgammaf(float __a); 170 double trunc(double __a); 171 float truncf(float __a); 172 unsigned long long ullmax(unsigned long long __a, 173 unsigned long long __b); 174 unsigned long long ullmin(unsigned long long __a, 175 unsigned long long __b); 176 unsigned int umax(unsigned int __a, unsigned int __b); 177 unsigned int umin(unsigned int __a, unsigned int __b); 178 double y0(double __a); 179 float y0f(float __a); 180 double y1(double __a); 181 float y1f(float __a); 182 double yn(int __a, double __b); 183 float ynf(int __a, float __b); 184 185 /** 186 * A positive float constant expression. HUGE_VALF evaluates 187 * to +infinity. Used as an error value returned by the built-in 188 * math functions. 189 */ 190 #define HUGE_VALF (__builtin_huge_valf()) 191 192 /** 193 * A positive double constant expression. HUGE_VAL evaluates 194 * to +infinity. Used as an error value returned by the built-in 195 * math functions. 196 */ 197 #define HUGE_VAL (__builtin_huge_val()) 198 199 #ifdef __cplusplus 200 #include <cmath> 201 #endif 202