89#define M_E 2.7182818284590452354
92#define M_LOG2E 1.4426950408889634074
95#define M_LOG10E 0.43429448190325182765
98#define M_LN2 0.69314718055994530942
101#define M_LN10 2.30258509299404568402
104#define M_PI 3.14159265358979323846
107#define M_PI_2 1.57079632679489661923
110#define M_PI_4 0.78539816339744830962
113#define M_1_PI 0.31830988618379067154
116#define M_2_PI 0.63661977236758134308
119#define M_2_SQRTPI 1.12837916709551257390
122#define M_SQRT2 1.41421356237309504880
125#define M_SQRT1_2 0.70710678118654752440
128#define NAN __builtin_nan("")
132#define nanf(__tagp) __builtin_nanf(__tag)
136#define nan(__tag) __builtin_nan(__tag)
140#define nanl(__tag) __builtin_nanl(__tag)
143#define INFINITY __builtin_inf()
146#define HUGE_VALF __builtin_huge_valf()
149#define HUGE_VAL __builtin_huge_val()
152#define HUGE_VALL __builtin_huge_vall()
155#ifndef __ATTR_CONST__
156# define __ATTR_CONST__ __attribute__((__const__))
159#ifndef __ATTR_ALWAYS_INLINE__
160#define __ATTR_ALWAYS_INLINE__ __inline__ __attribute__((__always_inline__))
165__ATTR_CONST__
extern float cosf (
float x);
167__ATTR_CONST__
extern double cos (
double x);
169__ATTR_CONST__
extern long double cosl (
long double x);
172__ATTR_CONST__
extern float sinf (
float x);
174__ATTR_CONST__
extern double sin (
double x);
176__ATTR_CONST__
extern long double sinl (
long double x);
179__ATTR_CONST__
extern float tanf (
float x);
181__ATTR_CONST__
extern double tan (
double x);
183__ATTR_CONST__
extern long double tanl (
long double x);
186static __ATTR_ALWAYS_INLINE__
float fabsf (
float __x)
188 return __builtin_fabsf (__x);
192static __ATTR_ALWAYS_INLINE__
double fabs (
double __x)
194 return __builtin_fabs (__x);
198static __ATTR_ALWAYS_INLINE__
long double fabsl (
long double __x)
200 return __builtin_fabsl (__x);
204__ATTR_CONST__
extern float fmodf (
float x,
float y);
206__ATTR_CONST__
extern double fmod (
double x,
double y);
208__ATTR_CONST__
extern long double fmodl (
long double x,
long double y);
220extern float modff (
float x,
float *iptr);
227extern double modf (
double x,
double *iptr);
234extern long double modfl (
long double x,
long double *iptr);
237__ATTR_CONST__
extern float sqrtf (
float x);
239__ATTR_CONST__
extern double sqrt (
double x);
241__ATTR_CONST__
extern long double sqrtl (
long double x);
244__ATTR_CONST__
extern float cbrtf (
float x);
246__ATTR_CONST__
extern double cbrt (
double x);
248__ATTR_CONST__
extern long double cbrtl (
long double x);
256__ATTR_CONST__
extern float hypotf (
float x,
float y);
263__ATTR_CONST__
extern double hypot (
double x,
double y);
270__ATTR_CONST__
extern long double hypotl (
long double x,
long double y);
274__ATTR_CONST__
extern float floorf (
float x);
277__ATTR_CONST__
extern double floor (
double x);
280__ATTR_CONST__
extern long double floorl (
long double x);
284__ATTR_CONST__
extern float ceilf (
float x);
287__ATTR_CONST__
extern double ceil (
double x);
290__ATTR_CONST__
extern long double ceill (
long double x);
317extern double frexp (
double x,
int *pexp);
328extern long double frexpl (
long double x,
int *pexp);
333__ATTR_CONST__
extern float ldexpf (
float x,
int iexp);
337__ATTR_CONST__
extern double ldexp (
double x,
int iexp);
341__ATTR_CONST__
extern long double ldexpl (
long double x,
int iexp);
344__ATTR_CONST__
extern float expf (
float x);
346__ATTR_CONST__
extern double exp (
double x);
348__ATTR_CONST__
extern long double expl (
long double x);
351__ATTR_CONST__
extern float coshf (
float x);
353__ATTR_CONST__
extern double cosh (
double x);
355__ATTR_CONST__
extern long double coshl (
long double x);
358__ATTR_CONST__
extern float sinhf (
float x);
360__ATTR_CONST__
extern double sinh (
double x);
362__ATTR_CONST__
extern long double sinhl (
long double x);
365__ATTR_CONST__
extern float tanhf (
float x);
367__ATTR_CONST__
extern double tanh (
double x);
369__ATTR_CONST__
extern long double tanhl (
long double x);
374__ATTR_CONST__
extern float acosf (
float x);
377__ATTR_CONST__
extern double acos (
double x);
380__ATTR_CONST__
extern long double acosl (
long double x);
385__ATTR_CONST__
extern float asinf (
float x);
388__ATTR_CONST__
extern double asin (
double x);
391__ATTR_CONST__
extern long double asinl (
long double x);
395__ATTR_CONST__
extern float atanf (
float x);
398__ATTR_CONST__
extern double atan (
double x);
401__ATTR_CONST__
extern long double atanl (
long double x);
407__ATTR_CONST__
extern float atan2f (
float y,
float x);
412__ATTR_CONST__
extern double atan2 (
double y,
double x);
417__ATTR_CONST__
extern long double atan2l (
long double y,
long double x);
420__ATTR_CONST__
extern float logf (
float x);
422__ATTR_CONST__
extern double log (
double x);
424__ATTR_CONST__
extern long double logl (
long double x);
427__ATTR_CONST__
extern float log10f (
float x);
429__ATTR_CONST__
extern double log10 (
double x);
431__ATTR_CONST__
extern long double log10l (
long double x);
436__ATTR_CONST__
extern float powf (
float x,
float y);
440__ATTR_CONST__
extern double pow (
double x,
double y);
444__ATTR_CONST__
extern long double powl (
long double x,
long double y);
448__ATTR_CONST__
extern int isnanf (
float x);
451__ATTR_CONST__
extern int isnan (
double x);
454__ATTR_CONST__
extern int isnanl (
long double x);
458__ATTR_CONST__
extern int isinff (
float x);
461__ATTR_CONST__
extern int isinf (
double x);
464__ATTR_CONST__
extern int isinfl (
long double x);
468__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
int isfinitef (
float __x)
478 return __exp != 0xff;
484static __ATTR_ALWAYS_INLINE__
int isfinite (
double __x);
485#elif __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
486static __ATTR_ALWAYS_INLINE__
int isfinite (
double __x)
497static __ATTR_ALWAYS_INLINE__
int isfinitel (
long double __x);
498#elif __SIZEOF_LONG_DOUBLE__ == __SIZEOF_FLOAT__
499static __ATTR_ALWAYS_INLINE__
int isfinitel (
long double __x)
509__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
float copysignf (
float __x,
float __y)
515 :
"0" (__x),
"r" (__y));
521__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
double copysign (
double __x,
double __y)
524 "bst %r1+%2-1, 7" "\n\t"
527 :
"r" (__y),
"n" (__SIZEOF_DOUBLE__));
533__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
long double copysignl (
long double __x,
long double __y)
536 "bst %r1+%2-1, 7" "\n\t"
539 :
"r" (__y),
"n" (__SIZEOF_LONG_DOUBLE__));
564__ATTR_CONST__
extern float fdimf (
float x,
float y);
567__ATTR_CONST__
extern double fdim (
double x,
double y);
570__ATTR_CONST__
extern long double fdiml (
long double x,
long double y);
576__ATTR_CONST__
extern float fmaf (
float x,
float y,
float z);
581__ATTR_CONST__
extern double fma (
double x,
double y,
double z);
586__ATTR_CONST__
extern long double fmal (
long double x,
long double y,
long double z);
591__ATTR_CONST__
extern float fmaxf (
float x,
float y);
595__ATTR_CONST__
extern double fmax (
double x,
double y);
599__ATTR_CONST__
extern long double fmaxl (
long double x,
long double y);
604__ATTR_CONST__
extern float fminf (
float x,
float y);
608__ATTR_CONST__
extern double fmin (
double x,
double y);
612__ATTR_CONST__
extern long double fminl (
long double x,
long double y);
616__ATTR_CONST__
extern float truncf (
float x);
619__ATTR_CONST__
extern double trunc (
double x);
622__ATTR_CONST__
extern long double truncl (
long double x);
630__ATTR_CONST__
extern float roundf (
float x);
637__ATTR_CONST__
extern double round (
double x);
644__ATTR_CONST__
extern long double roundl (
long double x);
663__ATTR_CONST__
extern long lround (
double x);
672__ATTR_CONST__
extern long lroundl (
long double x);
683__ATTR_CONST__
extern long lrintf (
float x);
693__ATTR_CONST__
extern long lrint (
double x);
703__ATTR_CONST__
extern long lrintl (
long double x);
720#if defined(__DOXYGEN__) || __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
721__ATTR_CONST__
extern double square (
double x);
722#elif defined(__WITH_LIBF7_MATH__)
723__ATTR_CONST__
extern double square (
double x) __asm(
"__f7_square");
728#if defined(__DOXYGEN__) || __SIZEOF_LONG_DOUBLE__ == __SIZEOF_FLOAT__
729__ATTR_CONST__
extern long double squarel (
long double x);
730#elif defined(__WITH_LIBF7_MATH__)
731__ATTR_CONST__
extern long double squarel (
long double x) __asm(
"__f7_square");
long double fmaxl(long double x, long double y)
long double ldexpl(long double x, int iexp)
long double squarel(long double x)
long double floorl(long double x)
long double tanl(long double x)
static long double fabsl(long double __x)
Definition: math.h:198
long double powl(long double x, long double y)
double atan2(double y, double x)
double fmax(double x, double y)
long double asinl(long double x)
static int isfinitef(float __x)
Definition: math.h:468
double ldexp(double x, int iexp)
int isinfl(long double x)
long double frexpl(long double x, int *pexp)
int isnanl(long double x)
long double cbrtl(long double x)
double fmod(double x, double y)
long double coshl(long double x)
static int isfinitel(long double __x)
long double atanl(long double x)
long double roundl(long double x)
long double cosl(long double x)
double hypot(double x, double y)
int signbitl(long double x)
static float fabsf(float __x)
Definition: math.h:186
double fdim(double x, double y)
long lrintl(long double x)
float fmaxf(float x, float y)
long double fminl(long double x, long double y)
long double truncl(long double x)
double frexp(double x, int *pexp)
long double hypotl(long double x, long double y)
long double tanhl(long double x)
float fminf(float x, float y)
long double sqrtl(long double x)
float hypotf(float x, float y)
double pow(double x, double y)
float fmaf(float x, float y, float z)
float frexpf(float x, int *pexp)
long double fmodl(long double x, long double y)
long double atan2l(long double y, long double x)
float ldexpf(float x, int iexp)
static double copysign(double __x, double __y)
Definition: math.h:521
long double fdiml(long double x, long double y)
long double modfl(long double x, long double *iptr)
float powf(float x, float y)
double fma(double x, double y, double z)
static float copysignf(float __x, float __y)
Definition: math.h:509
static double fabs(double __x)
Definition: math.h:192
long double sinhl(long double x)
float modff(float x, float *iptr)
long double ceill(long double x)
long double log10l(long double x)
long double acosl(long double x)
long lroundl(long double x)
long double sinl(long double x)
long double expl(long double x)
static long double copysignl(long double __x, long double __y)
Definition: math.h:533
float fdimf(float x, float y)
double fmin(double x, double y)
float fmodf(float x, float y)
long double fmal(long double x, long double y, long double z)
long double logl(long double x)
float atan2f(float y, float x)
static int isfinite(double __x)
double modf(double x, double *iptr)