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