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
104#define M_E 2.7182818284590452354
107#define M_LOG2E 1.4426950408889634074
110#define M_LOG10E 0.43429448190325182765
113#define M_LN2 0.69314718055994530942
116#define M_LN10 2.30258509299404568402
119#define M_PI 3.14159265358979323846
122#define M_PI_2 1.57079632679489661923
125#define M_PI_4 0.78539816339744830962
128#define M_1_PI 0.31830988618379067154
131#define M_2_PI 0.63661977236758134308
134#define M_2_SQRTPI 1.12837916709551257390
137#define M_SQRT2 1.41421356237309504880
140#define M_SQRT1_2 0.70710678118654752440
143#define NAN __builtin_nan("")
147#define nanf(__tag) __builtin_nanf(__tag)
151#define nan(__tag) __builtin_nan(__tag)
155#define nanl(__tag) __builtin_nanl(__tag)
158#define INFINITY __builtin_inff()
161#define HUGE_VALF __builtin_huge_valf()
164#define HUGE_VAL __builtin_huge_val()
167#define HUGE_VALL __builtin_huge_vall()
169#include <bits/attribs.h>
172__ATTR_CONST__
extern float cosf (
float x);
174__ATTR_CONST__
extern double cos (
double x);
176__ATTR_CONST__
extern long double cosl (
long double x);
179__ATTR_CONST__
extern float sinf (
float x);
181__ATTR_CONST__
extern double sin (
double x);
183__ATTR_CONST__
extern long double sinl (
long double x);
186__ATTR_CONST__
extern float tanf (
float x);
188__ATTR_CONST__
extern double tan (
double x);
190__ATTR_CONST__
extern long double tanl (
long double x);
193extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
196 return __builtin_fabsf (__x);
200extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
203 return __builtin_fabs (__x);
207extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
210 return __builtin_fabsl (__x);
214__ATTR_CONST__
extern float fmodf (
float x,
float y);
216__ATTR_CONST__
extern double fmod (
double x,
double y);
218__ATTR_CONST__
extern long double fmodl (
long double x,
long double y);
230extern float modff (
float x,
float *iptr);
237extern double modf (
double x,
double *iptr);
244extern long double modfl (
long double x,
long double *iptr);
247__ATTR_CONST__
extern float sqrtf (
float x);
249__ATTR_CONST__
extern double sqrt (
double x);
251__ATTR_CONST__
extern long double sqrtl (
long double x);
254__ATTR_CONST__
extern float cbrtf (
float x);
256__ATTR_CONST__
extern double cbrt (
double x);
258__ATTR_CONST__
extern long double cbrtl (
long double x);
266__ATTR_CONST__
extern float hypotf (
float x,
float y);
273__ATTR_CONST__
extern double hypot (
double x,
double y);
280__ATTR_CONST__
extern long double hypotl (
long double x,
long double y);
284__ATTR_CONST__
extern float floorf (
float x);
287__ATTR_CONST__
extern double floor (
double x);
290__ATTR_CONST__
extern long double floorl (
long double x);
294__ATTR_CONST__
extern float ceilf (
float x);
297__ATTR_CONST__
extern double ceil (
double x);
300__ATTR_CONST__
extern long double ceill (
long double x);
327extern double frexp (
double x,
int *pexp);
338extern long double frexpl (
long double x,
int *pexp);
343__ATTR_CONST__
extern float ldexpf (
float x,
int iexp);
347__ATTR_CONST__
extern double ldexp (
double x,
int iexp);
351__ATTR_CONST__
extern long double ldexpl (
long double x,
int iexp);
354__ATTR_CONST__
extern float expf (
float x);
356__ATTR_CONST__
extern double exp (
double x);
358__ATTR_CONST__
extern long double expl (
long double x);
361__ATTR_CONST__
extern float coshf (
float x);
363__ATTR_CONST__
extern double cosh (
double x);
365__ATTR_CONST__
extern long double coshl (
long double x);
368__ATTR_CONST__
extern float sinhf (
float x);
370__ATTR_CONST__
extern double sinh (
double x);
372__ATTR_CONST__
extern long double sinhl (
long double x);
375__ATTR_CONST__
extern float tanhf (
float x);
377__ATTR_CONST__
extern double tanh (
double x);
379__ATTR_CONST__
extern long double tanhl (
long double x);
385__ATTR_CONST__
extern float acosf (
float x);
388__ATTR_CONST__
extern double acos (
double x);
391__ATTR_CONST__
extern long double acosl (
long double x);
397__ATTR_CONST__
extern float asinf (
float x);
400__ATTR_CONST__
extern double asin (
double x);
403__ATTR_CONST__
extern long double asinl (
long double x);
408__ATTR_CONST__
extern float atanf (
float x);
411__ATTR_CONST__
extern double atan (
double x);
414__ATTR_CONST__
extern long double atanl (
long double x);
420__ATTR_CONST__
extern float atan2f (
float y,
float x);
425__ATTR_CONST__
extern double atan2 (
double y,
double x);
430__ATTR_CONST__
extern long double atan2l (
long double y,
long double x);
434__ATTR_CONST__
extern float logf (
float x);
436__ATTR_CONST__
extern double log (
double x);
438__ATTR_CONST__
extern long double logl (
long double x);
442__ATTR_CONST__
extern float log10f (
float x);
444__ATTR_CONST__
extern double log10 (
double x);
446__ATTR_CONST__
extern long double log10l (
long double x);
451__ATTR_CONST__
extern float log2f (
float x);
454__ATTR_CONST__
extern double log2 (
double x);
457__ATTR_CONST__
extern long double log2l (
long double x);
462__ATTR_CONST__
extern float powf (
float x,
float y);
466__ATTR_CONST__
extern double pow (
double x,
double y);
470__ATTR_CONST__
extern long double powl (
long double x,
long double y);
474__ATTR_CONST__
extern int isnanf (
float x);
477__ATTR_CONST__
extern int isnan (
double x);
480__ATTR_CONST__
extern int isnanl (
long double x);
484__ATTR_CONST__
extern int isinff (
float x);
487__ATTR_CONST__
extern int isinf (
double x);
490__ATTR_CONST__
extern int isinfl (
long double x);
494__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
int isfinitef (
float __x)
504 return __exp != 0xff;
510static __ATTR_ALWAYS_INLINE__
int isfinite (
double __x);
511#elif __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
512static __ATTR_ALWAYS_INLINE__
int isfinite (
double __x)
523static __ATTR_ALWAYS_INLINE__
int isfinitel (
long double __x);
524#elif __SIZEOF_LONG_DOUBLE__ == __SIZEOF_FLOAT__
525static __ATTR_ALWAYS_INLINE__
int isfinitel (
long double __x)
535__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
float copysignf (
float __x,
float __y)
541 :
"0" (__x),
"r" (__y));
547__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
double copysign (
double __x,
double __y)
550 "bst %r1+%2-1, 7" "\n\t"
553 :
"r" (__y),
"n" (__SIZEOF_DOUBLE__));
559__ATTR_CONST__
static __ATTR_ALWAYS_INLINE__
long double copysignl (
long double __x,
long double __y)
562 "bst %r1+%2-1, 7" "\n\t"
565 :
"r" (__y),
"n" (__SIZEOF_LONG_DOUBLE__));
590__ATTR_CONST__
extern float fdimf (
float x,
float y);
593__ATTR_CONST__
extern double fdim (
double x,
double y);
597__ATTR_CONST__
extern long double fdiml (
long double x,
long double y);
603__ATTR_CONST__
extern float fmaf (
float x,
float y,
float z);
608__ATTR_CONST__
extern double fma (
double x,
double y,
double z);
613__ATTR_CONST__
extern long double fmal (
long double x,
long double y,
long double z);
618__ATTR_CONST__
extern float fmaxf (
float x,
float y);
622__ATTR_CONST__
extern double fmax (
double x,
double y);
626__ATTR_CONST__
extern long double fmaxl (
long double x,
long double y);
631__ATTR_CONST__
extern float fminf (
float x,
float y);
635__ATTR_CONST__
extern double fmin (
double x,
double y);
639__ATTR_CONST__
extern long double fminl (
long double x,
long double y);
643__ATTR_CONST__
extern float truncf (
float x);
646__ATTR_CONST__
extern double trunc (
double x);
649__ATTR_CONST__
extern long double truncl (
long double x);
657__ATTR_CONST__
extern float roundf (
float x);
664__ATTR_CONST__
extern double round (
double x);
671__ATTR_CONST__
extern long double roundl (
long double x);
690__ATTR_CONST__
extern long lround (
double x);
699__ATTR_CONST__
extern long lroundl (
long double x);
710__ATTR_CONST__
extern long lrintf (
float x);
720__ATTR_CONST__
extern long lrint (
double x);
730__ATTR_CONST__
extern long lrintl (
long double x);
747#if defined(__DOXYGEN__) || __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
748__ATTR_CONST__
extern double square (
double x);
749#elif defined(__WITH_LIBF7_MATH__)
750__ATTR_CONST__
extern double square (
double x) __asm(
"__f7_square");
755#if defined(__DOXYGEN__) || __SIZEOF_LONG_DOUBLE__ == __SIZEOF_FLOAT__
756__ATTR_CONST__
extern long double squarel (
long double x);
757#elif defined(__WITH_LIBF7_MATH__)
758__ATTR_CONST__
extern long double squarel (
long double x) __asm(
"__f7_square");
double fabs(double __x)
Definition: math.h:201
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)
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:494
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:194
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:208
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:547
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:535
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:559
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)