71#define M_E 2.7182818284590452354
74#define M_LOG2E 1.4426950408889634074
77#define M_LOG10E 0.43429448190325182765
80#define M_LN2 0.69314718055994530942
83#define M_LN10 2.30258509299404568402
86#define M_PI 3.14159265358979323846
89#define M_PI_2 1.57079632679489661923
92#define M_PI_4 0.78539816339744830962
95#define M_1_PI 0.31830988618379067154
98#define M_2_PI 0.63661977236758134308
101#define M_2_SQRTPI 1.12837916709551257390
104#define M_SQRT2 1.41421356237309504880
107#define M_SQRT1_2 0.70710678118654752440
110#define NAN __builtin_nan("")
113#define INFINITY __builtin_inf()
116#ifndef __ATTR_CONST__
117# define __ATTR_CONST__ __attribute__((__const__))
120#if __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
131#define __ASM_ALIAS(x) __asm(#x)
134#define __ASM_ALIAS(x)
144__ATTR_CONST__
extern float cosf (
float __x);
145__ATTR_CONST__
extern double cos (
double __x) __ASM_ALIAS(
cosf);
150__ATTR_CONST__
extern float sinf (
float __x);
151__ATTR_CONST__
extern double sin (
double __x) __ASM_ALIAS(
sinf);
156__ATTR_CONST__
extern float tanf (
float __x);
157__ATTR_CONST__
extern double tan (
double __x) __ASM_ALIAS(
tanf);
163static inline float fabsf (
float __x)
165 return __builtin_fabsf (__x);
168static inline double fabs (
double __x)
170 return __builtin_fabs (__x);
177__ATTR_CONST__
extern float fmodf (
float __x,
float __y);
178__ATTR_CONST__
extern double fmod (
double __x,
double __y) __ASM_ALIAS(
fmodf);
192extern float modff (
float __x,
float *__iptr);
195extern double modf (
double __x,
double *__iptr) __ASM_ALIAS(
modff);
200__ATTR_CONST__
extern float sqrtf (
float __x);
203__ATTR_CONST__
extern double sqrt (
double __x) __ASM_ALIAS(
sqrtf);
208__ATTR_CONST__
extern float cbrtf (
float __x);
209__ATTR_CONST__
extern double cbrt (
double __x) __ASM_ALIAS(
cbrtf);
219__ATTR_CONST__
extern float hypotf (
float __x,
float __y);
220__ATTR_CONST__
extern double hypot (
double __x,
double __y) __ASM_ALIAS(
hypotf);
227__ATTR_CONST__
extern float squaref (
float __x);
234__ATTR_CONST__
extern float floorf (
float __x);
235__ATTR_CONST__
extern double floor (
double __x) __ASM_ALIAS(
floorf);
241__ATTR_CONST__
extern float ceilf (
float __x);
242__ATTR_CONST__
extern double ceil (
double __x) __ASM_ALIAS(
ceilf);
259__ATTR_CONST__
extern float frexpf (
float __x,
int *__pexp);
260__ATTR_CONST__
extern double frexp (
double __x,
int *__pexp) __ASM_ALIAS(
frexpf);
267__ATTR_CONST__
extern float ldexpf (
float __x,
int __exp);
268__ATTR_CONST__
extern double ldexp (
double __x,
int __exp) __ASM_ALIAS(
ldexpf);
273__ATTR_CONST__
extern float expf (
float __x);
274__ATTR_CONST__
extern double exp (
double __x) __ASM_ALIAS(
expf);
279__ATTR_CONST__
extern float coshf (
float __x);
280__ATTR_CONST__
extern double cosh (
double __x) __ASM_ALIAS(
coshf);
285__ATTR_CONST__
extern float sinhf (
float __x);
286__ATTR_CONST__
extern double sinh (
double __x) __ASM_ALIAS(
sinhf);
291__ATTR_CONST__
extern float tanhf (
float __x);
292__ATTR_CONST__
extern double tanh (
double __x) __ASM_ALIAS(
tanhf);
299__ATTR_CONST__
extern float acosf (
float __x);
300__ATTR_CONST__
extern double acos (
double __x) __ASM_ALIAS(
acosf);
307__ATTR_CONST__
extern float asinf (
float __x);
308__ATTR_CONST__
extern double asin (
double __x) __ASM_ALIAS(
asinf);
314__ATTR_CONST__
extern float atanf (
float __x);
315__ATTR_CONST__
extern double atan (
double __x) __ASM_ALIAS(
atanf);
323__ATTR_CONST__
extern float atan2f (
float __y,
float __x);
324__ATTR_CONST__
extern double atan2 (
double __y,
double __x) __ASM_ALIAS(
atan2f);
329__ATTR_CONST__
extern float logf (
float __x);
330__ATTR_CONST__
extern double log (
double __x) __ASM_ALIAS(
logf);
335__ATTR_CONST__
extern float log10f (
float __x);
336__ATTR_CONST__
extern double log10 (
double __x) __ASM_ALIAS(
log10f);
341__ATTR_CONST__
extern float powf (
float __x,
float __y);
342__ATTR_CONST__
extern double pow (
double __x,
double __y) __ASM_ALIAS(
powf);
348__ATTR_CONST__
extern int isnanf (
float __x);
358__ATTR_CONST__
extern int isinff (
float __x);
375 return __exp != 0xff;
378#if __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
389__ATTR_CONST__
static inline float copysignf (
float __x,
float __y)
395 :
"0" (__x),
"r" (__y) );
399__ATTR_CONST__
static inline double copysign (
double __x,
double __y)
402 "bst %r1+%2-1, 7" "\n\t"
405 :
"r" (__y),
"n" (__SIZEOF_DOUBLE__));
423__ATTR_CONST__
extern float fdimf (
float __x,
float __y);
424__ATTR_CONST__
extern double fdim (
double __x,
double __y) __ASM_ALIAS(
fdimf);
432__ATTR_CONST__
extern float fmaf (
float __x,
float __y,
float __z);
433__ATTR_CONST__
extern double fma (
double __x,
double __y,
double __z) __ASM_ALIAS(
fmaf);
440__ATTR_CONST__
extern float fmaxf (
float __x,
float __y);
441__ATTR_CONST__
extern double fmax (
double __x,
double __y) __ASM_ALIAS(
fmaxf);
448__ATTR_CONST__
extern float fminf (
float __x,
float __y);
449__ATTR_CONST__
extern double fmin (
double __x,
double __y) __ASM_ALIAS(
fminf);
455__ATTR_CONST__
extern float truncf (
float __x);
456__ATTR_CONST__
extern double trunc (
double __x) __ASM_ALIAS(
truncf);
466__ATTR_CONST__
extern float roundf (
float __x);
467__ATTR_CONST__
extern double round (
double __x) __ASM_ALIAS(
roundf);
479__ATTR_CONST__
extern long lroundf (
float __x);
493__ATTR_CONST__
extern long lrintf (
float __x);
double ceil(double __x) __ASM_ALIAS(ceilf)
double fma(double __x, double __y, double __z) __ASM_ALIAS(fmaf)
double log10(double __x) __ASM_ALIAS(log10f)
double asin(double __x) __ASM_ALIAS(asinf)
double acos(double __x) __ASM_ALIAS(acosf)
double round(double __x) __ASM_ALIAS(roundf)
float fminf(float __x, float __y)
double sin(double __x) __ASM_ALIAS(sinf)
double fmod(double __x, double __y) __ASM_ALIAS(fmodf)
double trunc(double __x) __ASM_ALIAS(truncf)
double hypot(double __x, double __y) __ASM_ALIAS(hypotf)
static int isfinitef(float __x)
Definition: math.h:365
float frexpf(float __x, int *__pexp)
double tanh(double __x) __ASM_ALIAS(tanhf)
double sinh(double __x) __ASM_ALIAS(sinhf)
float fdimf(float __x, float __y)
double frexp(double __x, int *__pexp) __ASM_ALIAS(frexpf)
double fmax(double __x, double __y) __ASM_ALIAS(fmaxf)
int signbit(double __x) __ASM_ALIAS(signbitf)
double cbrt(double __x) __ASM_ALIAS(cbrtf)
double pow(double __x, double __y) __ASM_ALIAS(powf)
float ldexpf(float __x, int __exp)
static float fabsf(float __x)
Definition: math.h:163
double exp(double __x) __ASM_ALIAS(expf)
float powf(float __x, float __y)
float fmaf(float __x, float __y, float __z)
double log(double __x) __ASM_ALIAS(logf)
double fmin(double __x, double __y) __ASM_ALIAS(fminf)
int isinf(double __x) __ASM_ALIAS(isinff)
double floor(double __x) __ASM_ALIAS(floorf)
float fmodf(float __x, float __y)
float hypotf(float __x, float __y)
double modf(double __x, double *__iptr) __ASM_ALIAS(modff)
float atan2f(float __y, float __x)
double sqrt(double __x) __ASM_ALIAS(sqrtf)
float fmaxf(float __x, float __y)
double ldexp(double __x, int __exp) __ASM_ALIAS(ldexpf)
double cosh(double __x) __ASM_ALIAS(coshf)
double cos(double __x) __ASM_ALIAS(cosf)
int isnan(double __x) __ASM_ALIAS(isnanf)
static float copysignf(float __x, float __y)
Definition: math.h:389
float modff(float __x, float *__iptr)
long lrint(double __x) __ASM_ALIAS(lrintf)
double fdim(double __x, double __y) __ASM_ALIAS(fdimf)
long lround(double __x) __ASM_ALIAS(lroundf)
double square(double __x) __ASM_ALIAS(squaref)
double atan2(double __y, double __x) __ASM_ALIAS(atan2f)
double tan(double __x) __ASM_ALIAS(tanf)
double atan(double __x) __ASM_ALIAS(atanf)
static int isfinite(double __x)
Definition: math.h:379