Path: blob/main/system/lib/libc/musl/include/math.h
6174 views
#ifndef _MATH_H1#define _MATH_H23#ifdef __cplusplus4extern "C" {5#endif67#include <features.h>89#define __NEED_float_t10#define __NEED_double_t11#include <bits/alltypes.h>1213#if 100*__GNUC__+__GNUC_MINOR__ >= 30314#define NAN __builtin_nanf("")15#define INFINITY __builtin_inff()16#else17#define NAN (0.0f/0.0f)18#define INFINITY 1e5000f19#endif2021#define HUGE_VALF INFINITY22#define HUGE_VAL ((double)INFINITY)23#define HUGE_VALL ((long double)INFINITY)2425#define MATH_ERRNO 126#define MATH_ERREXCEPT 227#define math_errhandling 22829#define FP_ILOGBNAN (-1-0x7fffffff)30#define FP_ILOGB0 FP_ILOGBNAN3132#define FP_NAN 033#define FP_INFINITE 134#define FP_ZERO 235#define FP_SUBNORMAL 336#define FP_NORMAL 43738#ifdef __FP_FAST_FMA39#define FP_FAST_FMA 140#endif4142#ifdef __FP_FAST_FMAF43#define FP_FAST_FMAF 144#endif4546#ifdef __FP_FAST_FMAL47#define FP_FAST_FMAL 148#endif4950int __fpclassify(double);51int __fpclassifyf(float);52int __fpclassifyl(long double);5354static __inline unsigned __FLOAT_BITS(float __f)55{56union {float __f; unsigned __i;} __u;57__u.__f = __f;58return __u.__i;59}60static __inline unsigned long long __DOUBLE_BITS(double __f)61{62union {double __f; unsigned long long __i;} __u;63__u.__f = __f;64return __u.__i;65}6667#define fpclassify(x) ( \68sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \69sizeof(x) == sizeof(double) ? __fpclassify(x) : \70__fpclassifyl(x) )7172#define isinf(x) ( \73sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) == 0x7f800000 : \74sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) == 0x7ffULL<<52 : \75__fpclassifyl(x) == FP_INFINITE)7677#define isnan(x) ( \78sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) > 0x7f800000 : \79sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) > 0x7ffULL<<52 : \80__fpclassifyl(x) == FP_NAN)8182#define isnormal(x) ( \83sizeof(x) == sizeof(float) ? ((__FLOAT_BITS(x)+0x00800000) & 0x7fffffff) >= 0x01000000 : \84sizeof(x) == sizeof(double) ? ((__DOUBLE_BITS(x)+(1ULL<<52)) & -1ULL>>1) >= 1ULL<<53 : \85__fpclassifyl(x) == FP_NORMAL)8687#define isfinite(x) ( \88sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) < 0x7f800000 : \89sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) < 0x7ffULL<<52 : \90__fpclassifyl(x) > FP_INFINITE)9192int __signbit(double);93int __signbitf(float);94int __signbitl(long double);9596#define signbit(x) ( \97sizeof(x) == sizeof(float) ? (int)(__FLOAT_BITS(x)>>31) : \98sizeof(x) == sizeof(double) ? (int)(__DOUBLE_BITS(x)>>63) : \99__signbitl(x) )100101#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))102103#define __ISREL_DEF(rel, op, type) \104static __inline int __is##rel(type __x, type __y) \105{ return !isunordered(__x,__y) && __x op __y; }106107__ISREL_DEF(lessf, <, float_t)108__ISREL_DEF(less, <, double_t)109__ISREL_DEF(lessl, <, long double)110__ISREL_DEF(lessequalf, <=, float_t)111__ISREL_DEF(lessequal, <=, double_t)112__ISREL_DEF(lessequall, <=, long double)113__ISREL_DEF(lessgreaterf, !=, float_t)114__ISREL_DEF(lessgreater, !=, double_t)115__ISREL_DEF(lessgreaterl, !=, long double)116__ISREL_DEF(greaterf, >, float_t)117__ISREL_DEF(greater, >, double_t)118__ISREL_DEF(greaterl, >, long double)119__ISREL_DEF(greaterequalf, >=, float_t)120__ISREL_DEF(greaterequal, >=, double_t)121__ISREL_DEF(greaterequall, >=, long double)122123#define __tg_pred_2(x, y, p) ( \124sizeof((x)+(y)) == sizeof(float) ? p##f(x, y) : \125sizeof((x)+(y)) == sizeof(double) ? p(x, y) : \126p##l(x, y) )127128#define isless(x, y) __tg_pred_2(x, y, __isless)129#define islessequal(x, y) __tg_pred_2(x, y, __islessequal)130#define islessgreater(x, y) __tg_pred_2(x, y, __islessgreater)131#define isgreater(x, y) __tg_pred_2(x, y, __isgreater)132#define isgreaterequal(x, y) __tg_pred_2(x, y, __isgreaterequal)133134double acos(double);135float acosf(float);136long double acosl(long double);137138double acosh(double);139float acoshf(float);140long double acoshl(long double);141142double asin(double);143float asinf(float);144long double asinl(long double);145146double asinh(double);147float asinhf(float);148long double asinhl(long double);149150double atan(double);151float atanf(float);152long double atanl(long double);153154double atan2(double, double);155float atan2f(float, float);156long double atan2l(long double, long double);157158double atanh(double);159float atanhf(float);160long double atanhl(long double);161162double cbrt(double);163float cbrtf(float);164long double cbrtl(long double);165166double ceil(double);167float ceilf(float);168long double ceill(long double);169170double copysign(double, double);171float copysignf(float, float);172long double copysignl(long double, long double);173174double cos(double);175float cosf(float);176long double cosl(long double);177178double cosh(double);179float coshf(float);180long double coshl(long double);181182double erf(double);183float erff(float);184long double erfl(long double);185186double erfc(double);187float erfcf(float);188long double erfcl(long double);189190double exp(double);191float expf(float);192long double expl(long double);193194double exp2(double);195float exp2f(float);196long double exp2l(long double);197198double expm1(double);199float expm1f(float);200long double expm1l(long double);201202double fabs(double);203float fabsf(float);204long double fabsl(long double);205206double fdim(double, double);207float fdimf(float, float);208long double fdiml(long double, long double);209210double floor(double);211float floorf(float);212long double floorl(long double);213214double fma(double, double, double);215float fmaf(float, float, float);216long double fmal(long double, long double, long double);217218double fmax(double, double);219float fmaxf(float, float);220long double fmaxl(long double, long double);221222double fmin(double, double);223float fminf(float, float);224long double fminl(long double, long double);225226double fmod(double, double);227float fmodf(float, float);228long double fmodl(long double, long double);229230double frexp(double, int *);231float frexpf(float, int *);232long double frexpl(long double, int *);233234double hypot(double, double);235float hypotf(float, float);236long double hypotl(long double, long double);237238int ilogb(double);239int ilogbf(float);240int ilogbl(long double);241242double ldexp(double, int);243float ldexpf(float, int);244long double ldexpl(long double, int);245246double lgamma(double);247float lgammaf(float);248long double lgammal(long double);249250long long llrint(double);251long long llrintf(float);252long long llrintl(long double);253254long long llround(double);255long long llroundf(float);256long long llroundl(long double);257258double log(double);259float logf(float);260long double logl(long double);261262double log10(double);263float log10f(float);264long double log10l(long double);265266double log1p(double);267float log1pf(float);268long double log1pl(long double);269270double log2(double);271float log2f(float);272long double log2l(long double);273274double logb(double);275float logbf(float);276long double logbl(long double);277278long lrint(double);279long lrintf(float);280long lrintl(long double);281282long lround(double);283long lroundf(float);284long lroundl(long double);285286double modf(double, double *);287float modff(float, float *);288long double modfl(long double, long double *);289290double nan(const char *);291float nanf(const char *);292long double nanl(const char *);293294double nearbyint(double);295float nearbyintf(float);296long double nearbyintl(long double);297298double nextafter(double, double);299float nextafterf(float, float);300long double nextafterl(long double, long double);301302double nexttoward(double, long double);303float nexttowardf(float, long double);304long double nexttowardl(long double, long double);305306double pow(double, double);307float powf(float, float);308long double powl(long double, long double);309310double remainder(double, double);311float remainderf(float, float);312long double remainderl(long double, long double);313314double remquo(double, double, int *);315float remquof(float, float, int *);316long double remquol(long double, long double, int *);317318double rint(double);319float rintf(float);320long double rintl(long double);321322double round(double);323float roundf(float);324long double roundl(long double);325326double scalbln(double, long);327float scalblnf(float, long);328long double scalblnl(long double, long);329330double scalbn(double, int);331float scalbnf(float, int);332long double scalbnl(long double, int);333334double sin(double);335float sinf(float);336long double sinl(long double);337338double sinh(double);339float sinhf(float);340long double sinhl(long double);341342double sqrt(double);343float sqrtf(float);344long double sqrtl(long double);345346double tan(double);347float tanf(float);348long double tanl(long double);349350double tanh(double);351float tanhf(float);352long double tanhl(long double);353354double tgamma(double);355float tgammaf(float);356long double tgammal(long double);357358double trunc(double);359float truncf(float);360long double truncl(long double);361362363#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE)364#undef MAXFLOAT365#define MAXFLOAT 3.40282346638528859812e+38F366#endif367368#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)369#define M_E 2.7182818284590452354 /* e */370#define M_LOG2E 1.4426950408889634074 /* log_2 e */371#define M_LOG10E 0.43429448190325182765 /* log_10 e */372#define M_LN2 0.69314718055994530942 /* log_e 2 */373#define M_LN10 2.30258509299404568402 /* log_e 10 */374#define M_PI 3.14159265358979323846 /* pi */375#define M_PI_2 1.57079632679489661923 /* pi/2 */376#define M_PI_4 0.78539816339744830962 /* pi/4 */377#define M_1_PI 0.31830988618379067154 /* 1/pi */378#define M_2_PI 0.63661977236758134308 /* 2/pi */379#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */380#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */381#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */382383extern int signgam;384385double j0(double);386double j1(double);387double jn(int, double);388389double y0(double);390double y1(double);391double yn(int, double);392#endif393394#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)395#define HUGE 3.40282346638528859812e+38F396397double drem(double, double);398float dremf(float, float);399400int finite(double);401int finitef(float);402403double scalb(double, double);404float scalbf(float, float);405406double significand(double);407float significandf(float);408409double lgamma_r(double, int*);410float lgammaf_r(float, int*);411412float j0f(float);413float j1f(float);414float jnf(int, float);415416float y0f(float);417float y1f(float);418float ynf(int, float);419#endif420421#ifdef _GNU_SOURCE422long double lgammal_r(long double, int*);423424void sincos(double, double*, double*);425void sincosf(float, float*, float*);426void sincosl(long double, long double*, long double*);427428double exp10(double);429float exp10f(float);430long double exp10l(long double);431432double pow10(double);433float pow10f(float);434long double pow10l(long double);435#endif436437#ifdef __cplusplus438}439#endif440441#endif442443444