52#ifndef __SIZEOF_FLOAT__
53#define __SIZEOF_FLOAT__ 4
55#ifndef __SIZEOF_DOUBLE__
56#define __SIZEOF_DOUBLE__ 4
58#ifndef __SIZEOF_LONG_DOUBLE__
59#define __SIZEOF_LONG_DOUBLE__ 4
100#define M_E 2.7182818284590452354
103#define M_LOG2E 1.4426950408889634074
106#define M_LOG10E 0.43429448190325182765
109#define M_LN2 0.69314718055994530942
112#define M_LN10 2.30258509299404568402
115#define M_PI 3.14159265358979323846
118#define M_PI_2 1.57079632679489661923
121#define M_PI_4 0.78539816339744830962
124#define M_1_PI 0.31830988618379067154
127#define M_2_PI 0.63661977236758134308
130#define M_2_SQRTPI 1.12837916709551257390
133#define M_SQRT2 1.41421356237309504880
136#define M_SQRT1_2 0.70710678118654752440
139#define NAN __builtin_nan("")
143#define nanf(__tag) __builtin_nanf(__tag)
147#define nan(__tag) __builtin_nan(__tag)
151#define nanl(__tag) __builtin_nanl(__tag)
154#define INFINITY __builtin_inff()
157#define HUGE_VALF __builtin_huge_valf()
160#define HUGE_VAL __builtin_huge_val()
163#define HUGE_VALL __builtin_huge_vall()
165#include <bits/attribs.h>
168__ATTR_CONST__
extern float cosf (
float x);
170__ATTR_CONST__
extern double cos (
double x);
173__ATTR_CONST__
extern long double cosl (
long double x);
176__ATTR_CONST__
extern float sinf (
float x);
178__ATTR_CONST__
extern double sin (
double x);
181__ATTR_CONST__
extern long double sinl (
long double x);
188void sincosf (
float x,
float *psin,
float *pcos);
196void sincos (
double x,
double *psin,
double *pcos);
204void sincosl (
long double x,
long double *psin,
long double *pcos);
207__ATTR_CONST__
extern float tanf (
float x);
209__ATTR_CONST__
extern double tan (
double x);
212__ATTR_CONST__
extern long double tanl (
long double x);
216extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
219 return __builtin_fabsf (__x);
224extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
227 return __builtin_fabs (__x);
233extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
236 return __builtin_fabsl (__x);
240__ATTR_CONST__
extern float fmodf (
float x,
float y);
242__ATTR_CONST__
extern double fmod (
double x,
double y);
245__ATTR_CONST__
extern long double fmodl (
long double x,
long double y);
257extern float modff (
float x,
float *iptr);
264extern double modf (
double x,
double *iptr);
272extern long double modfl (
long double x,
long double *iptr);
275__ATTR_CONST__
extern float sqrtf (
float x);
277__ATTR_CONST__
extern double sqrt (
double x);
280__ATTR_CONST__
extern long double sqrtl (
long double x);
283__ATTR_CONST__
extern float cbrtf (
float x);
285__ATTR_CONST__
extern double cbrt (
double x);
288__ATTR_CONST__
extern long double cbrtl (
long double x);
296__ATTR_CONST__
extern float hypotf (
float x,
float y);
303__ATTR_CONST__
extern double hypot (
double x,
double y);
311__ATTR_CONST__
extern long double hypotl (
long double x,
long double y);
315__ATTR_CONST__
extern float floorf (
float x);
318__ATTR_CONST__
extern double floor (
double x);
322__ATTR_CONST__
extern long double floorl (
long double x);
326__ATTR_CONST__
extern float ceilf (
float x);
329__ATTR_CONST__
extern double ceil (
double x);
333__ATTR_CONST__
extern long double ceill (
long double x);
360extern double frexp (
double x,
int *pexp);
372extern long double frexpl (
long double x,
int *pexp);
377__ATTR_CONST__
extern float ldexpf (
float x,
int iexp);
381__ATTR_CONST__
extern double ldexp (
double x,
int iexp);
386__ATTR_CONST__
extern long double ldexpl (
long double x,
int iexp);
389__ATTR_CONST__
extern float expf (
float x);
391__ATTR_CONST__
extern double exp (
double x);
394__ATTR_CONST__
extern long double expl (
long double x);
397__ATTR_CONST__
extern float coshf (
float x);
399__ATTR_CONST__
extern double cosh (
double x);
402__ATTR_CONST__
extern long double coshl (
long double x);
405__ATTR_CONST__
extern float sinhf (
float x);
407__ATTR_CONST__
extern double sinh (
double x);
409__ATTR_CONST__
extern long double sinhl (
long double x);
412__ATTR_CONST__
extern float tanhf (
float x);
414__ATTR_CONST__
extern double tanh (
double x);
417__ATTR_CONST__
extern long double tanhl (
long double x);
423__ATTR_CONST__
extern float acosf (
float x);
426__ATTR_CONST__
extern double acos (
double x);
430__ATTR_CONST__
extern long double acosl (
long double x);
436__ATTR_CONST__
extern float asinf (
float x);
439__ATTR_CONST__
extern double asin (
double x);
443__ATTR_CONST__
extern long double asinl (
long double x);
448__ATTR_CONST__
extern float atanf (
float x);
451__ATTR_CONST__
extern double atan (
double x);
455__ATTR_CONST__
extern long double atanl (
long double x);
461__ATTR_CONST__
extern float atan2f (
float y,
float x);
466__ATTR_CONST__
extern double atan2 (
double y,
double x);
472__ATTR_CONST__
extern long double atan2l (
long double y,
long double x);
476__ATTR_CONST__
extern float logf (
float x);
478__ATTR_CONST__
extern double log (
double x);
481__ATTR_CONST__
extern long double logl (
long double x);
485__ATTR_CONST__
extern float log10f (
float x);
487__ATTR_CONST__
extern double log10 (
double x);
490__ATTR_CONST__
extern long double log10l (
long double x);
495__ATTR_CONST__
extern float log2f (
float x);
498__ATTR_CONST__
extern double log2 (
double x);
501__ATTR_CONST__
extern long double log2l (
long double x);
506__ATTR_CONST__
extern float powf (
float x,
float y);
510__ATTR_CONST__
extern double pow (
double x,
double y);
515__ATTR_CONST__
extern long double powl (
long double x,
long double y);
519__ATTR_CONST__
extern int isnanf (
float x);
522__ATTR_CONST__
extern int isnan (
double x);
526__ATTR_CONST__
extern int isnanl (
long double x);
530__ATTR_CONST__
extern int isinff (
float x);
533__ATTR_CONST__
extern int isinf (
double x);
537__ATTR_CONST__
extern int isinfl (
long double x);
541__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
int isfinitef (
float __x)
551 return __exp != 0xff;
557static __ATTR_ALWAYS_INLINE__
int isfinite (
double __x);
558#elif __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
559static __ATTR_ALWAYS_INLINE__
int isfinite (
double __x)
571static __ATTR_ALWAYS_INLINE__
int isfinitel (
long double __x);
572#elif __SIZEOF_LONG_DOUBLE__ == __SIZEOF_FLOAT__
573static __ATTR_ALWAYS_INLINE__
int isfinitel (
long double __x)
583__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
float copysignf (
float __x,
float __y)
589 :
"0" (__x),
"r" (__y));
595__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
double copysign (
double __x,
double __y)
598 "bst %r1+%2-1, 7" "\n\t"
601 :
"r" (__y),
"n" (__SIZEOF_DOUBLE__));
608__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
long double copysignl (
long double __x,
long double __y)
611 "bst %r1+%2-1, 7" "\n\t"
614 :
"r" (__y),
"n" (__SIZEOF_LONG_DOUBLE__));
640__ATTR_CONST__
extern float fdimf (
float x,
float y);
643__ATTR_CONST__
extern double fdim (
double x,
double y);
647__ATTR_CONST__
extern long double fdiml (
long double x,
long double y);
653__ATTR_CONST__
extern float fmaf (
float x,
float y,
float z);
658__ATTR_CONST__
extern double fma (
double x,
double y,
double z);
664__ATTR_CONST__
extern long double fmal (
long double x,
long double y,
long double z);
669__ATTR_CONST__
extern float fmaxf (
float x,
float y);
673__ATTR_CONST__
extern double fmax (
double x,
double y);
678__ATTR_CONST__
extern long double fmaxl (
long double x,
long double y);
683__ATTR_CONST__
extern float fminf (
float x,
float y);
687__ATTR_CONST__
extern double fmin (
double x,
double y);
692__ATTR_CONST__
extern long double fminl (
long double x,
long double y);
696__ATTR_CONST__
extern float truncf (
float x);
699__ATTR_CONST__
extern double trunc (
double x);
703__ATTR_CONST__
extern long double truncl (
long double x);
711__ATTR_CONST__
extern float roundf (
float x);
718__ATTR_CONST__
extern double round (
double x);
726__ATTR_CONST__
extern long double roundl (
long double x);
745__ATTR_CONST__
extern long lround (
double x);
755__ATTR_CONST__
extern long lroundl (
long double x);
766__ATTR_CONST__
extern long lrintf (
float x);
776__ATTR_CONST__
extern long lrint (
double x);
787__ATTR_CONST__
extern long lrintl (
long double x);
804#if defined(__DOXYGEN__) || __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
805__ATTR_CONST__
extern double square (
double x);
806#elif defined(__WITH_LIBF7_MATH__)
807__ATTR_CONST__
extern double square (
double x) __asm(
"__f7_square");
813#if defined(__DOXYGEN__) || __SIZEOF_LONG_DOUBLE__ == __SIZEOF_FLOAT__
814__ATTR_CONST__
extern long double squarel (
long double x);
815#elif defined(__WITH_LIBF7_MATH__)
816__ATTR_CONST__
extern long double squarel (
long double x) __asm(
"__f7_square");
double fabs(double __x)
Definition: math.h:225
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)
long double powl(long double x, long double y)
void sincosl(long double x, long double *psin, long double *pcos)
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:541
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)
float fabsf(float __x)
Definition: math.h:217
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)
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)
long double log2l(long double x)
double pow(double x, double y)
float fmaf(float x, float y, float z)
long double fabsl(long double __x)
Definition: math.h:234
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:595
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:583
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:608
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)
void sincos(double x, double *psin, double *pcos)
float atan2f(float y, float x)
static int isfinite(double __x)
double modf(double x, double *iptr)
void sincosf(float x, float *psin, float *pcos)