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 int max(int __a, int __b); 109 int min(int __a, int __b); 110 double modf(double __a, double *__b); 111 float modff(float __a, float *__b); 112 double nearbyint(double __a); 113 float nearbyintf(float __a); 114 double nextafter(double __a, double __b); 115 float nextafterf(float __a, float __b); 116 double norm(int __dim, const double *__t); 117 double norm3d(double __a, double __b, double __c); 118 float norm3df(float __a, float __b, float __c); 119 double norm4d(double __a, double __b, double __c, double __d); 120 float norm4df(float __a, float __b, float __c, float __d); 121 double normcdf(double __a); 122 float normcdff(float __a); 123 double normcdfinv(double __a); 124 float normcdfinvf(float __a); 125 float normf(int __dim, const float *__t); 126 double pow(double __a, double __b); 127 float powf(float __a, float __b); 128 double powi(double __a, int __b); 129 float powif(float __a, int __b); 130 double rcbrt(double __a); 131 float rcbrtf(float __a); 132 double remainder(double __a, double __b); 133 float remainderf(float __a, float __b); 134 double remquo(double __a, double __b, int *__c); 135 float remquof(float __a, float __b, int *__c); 136 double rhypot(double __a, double __b); 137 float rhypotf(float __a, float __b); 138 double rint(double __a); 139 float rintf(float __a); 140 double rnorm(int __a, const double *__b); 141 double rnorm3d(double __a, double __b, double __c); 142 float rnorm3df(float __a, float __b, float __c); 143 double rnorm4d(double __a, double __b, double __c, double __d); 144 float rnorm4df(float __a, float __b, float __c, float __d); 145 float rnormf(int __dim, const float *__t); 146 double round(double __a); 147 float roundf(float __a); 148 double rsqrt(double __a); 149 float rsqrtf(float __a); 150 double scalbn(double __a, int __b); 151 float scalbnf(float __a, int __b); 152 double scalbln(double __a, long __b); 153 float scalblnf(float __a, long __b); 154 double sin(double __a); 155 void sincos(double __a, double *__s, double *__c); 156 void sincosf(float __a, float *__s, float *__c); 157 void sincospi(double __a, double *__s, double *__c); 158 void sincospif(float __a, float *__s, float *__c); 159 float sinf(float __a); 160 double sinh(double __a); 161 float sinhf(float __a); 162 double sinpi(double __a); 163 float sinpif(float __a); 164 double sqrt(double __a); 165 float sqrtf(float __a); 166 double tan(double __a); 167 float tanf(float __a); 168 double tanh(double __a); 169 float tanhf(float __a); 170 double tgamma(double __a); 171 float tgammaf(float __a); 172 double trunc(double __a); 173 float truncf(float __a); 174 unsigned long long ullmax(unsigned long long __a, 175 unsigned long long __b); 176 unsigned long long ullmin(unsigned long long __a, 177 unsigned long long __b); 178 unsigned int umax(unsigned int __a, unsigned int __b); 179 unsigned int umin(unsigned int __a, unsigned int __b); 180 double y0(double __a); 181 float y0f(float __a); 182 double y1(double __a); 183 float y1f(float __a); 184 double yn(int __a, double __b); 185 float ynf(int __a, float __b); 186 187 /** 188 * A positive float constant expression. HUGE_VALF evaluates 189 * to +infinity. Used as an error value returned by the built-in 190 * math functions. 191 */ 192 #define HUGE_VALF (__builtin_huge_valf()) 193 194 /** 195 * A positive double constant expression. HUGE_VAL evaluates 196 * to +infinity. Used as an error value returned by the built-in 197 * math functions. 198 */ 199 #define HUGE_VAL (__builtin_huge_val()) 200 201 #ifdef __cplusplus 202 #include <cmath> 203 #endif 204