diff --git a/Userland/Libraries/LibM/math.h b/Userland/Libraries/LibM/math.h index 55bfdcfb56..210efad310 100644 --- a/Userland/Libraries/LibM/math.h +++ b/Userland/Libraries/LibM/math.h @@ -77,51 +77,121 @@ __BEGIN_DECLS #define DOUBLE_MAX ((double)0b0111111111101111111111111111111111111111111111111111111111111111) #define DOUBLE_MIN ((double)0b0000000000010000000000000000000000000000000000000000000000000000) +#define FP_ILOGB0 INT_MIN +#define FP_ILOGNAN INT_MAX + +/* Basic floating point operations */ +long double fabsl(long double) NOEXCEPT; +double fabs(double) NOEXCEPT; +float fabsf(float) NOEXCEPT; +long double fmodl(long double, long double) NOEXCEPT; +double fmod(double, double) NOEXCEPT; +float fmodf(float, float) NOEXCEPT; long double nanl(const char*) NOEXCEPT; double nan(const char*) NOEXCEPT; float nanf(const char*) NOEXCEPT; -long double acosl(long double) NOEXCEPT; -double acos(double) NOEXCEPT; -float acosf(float) NOEXCEPT; +/* Exponential functions */ +long double expl(long double) NOEXCEPT; +double exp(double) NOEXCEPT; +float expf(float) NOEXCEPT; +long double exp2l(long double) NOEXCEPT; +double exp2(double) NOEXCEPT; +float exp2f(float) NOEXCEPT; +long double expm1l(long double) NOEXCEPT; +double expm1(double) NOEXCEPT; +float expm1f(float) NOEXCEPT; +long double logl(long double) NOEXCEPT; +double log(double) NOEXCEPT; +float logf(float) NOEXCEPT; +double log2(double) NOEXCEPT; +float log2f(float) NOEXCEPT; +long double log2l(long double) NOEXCEPT; +long double log10l(long double) NOEXCEPT; +double log10(double) NOEXCEPT; +float log10f(float) NOEXCEPT; +long double log1pl(long double) NOEXCEPT; +double log1p(double) NOEXCEPT; +float log1pf(float) NOEXCEPT; + +/* Power functions */ +long double powl(long double x, long double y) NOEXCEPT; +double pow(double x, double y) NOEXCEPT; +float powf(float x, float y) NOEXCEPT; +long double sqrtl(long double) NOEXCEPT; +double sqrt(double) NOEXCEPT; +float sqrtf(float) NOEXCEPT; +long double cbrtl(long double) NOEXCEPT; +double cbrt(double) NOEXCEPT; +float cbrtf(float) NOEXCEPT; +long double hypotl(long double, long double) NOEXCEPT; +double hypot(double, double) NOEXCEPT; +float hypotf(float, float) NOEXCEPT; + +/* Trigonometric functions */ +long double sinl(long double) NOEXCEPT; +double sin(double) NOEXCEPT; +float sinf(float) NOEXCEPT; +long double cosl(long double) NOEXCEPT; +double cos(double) NOEXCEPT; +float cosf(float) NOEXCEPT; +long double tanl(long double) NOEXCEPT; +double tan(double) NOEXCEPT; +float tanf(float) NOEXCEPT; long double asinl(long double) NOEXCEPT; double asin(double) NOEXCEPT; float asinf(float) NOEXCEPT; +long double acosl(long double) NOEXCEPT; +double acos(double) NOEXCEPT; +float acosf(float) NOEXCEPT; long double atanl(long double) NOEXCEPT; double atan(double) NOEXCEPT; float atanf(float) NOEXCEPT; long double atan2l(long double, long double) NOEXCEPT; double atan2(double, double) NOEXCEPT; float atan2f(float, float) NOEXCEPT; -long double cosl(long double) NOEXCEPT; -double cos(double) NOEXCEPT; -float cosf(float) NOEXCEPT; -long double coshl(long double) NOEXCEPT; -double cosh(double) NOEXCEPT; -float coshf(float) NOEXCEPT; -long double sinl(long double) NOEXCEPT; -double sin(double) NOEXCEPT; -float sinf(float) NOEXCEPT; + +/* Hyperbolic functions*/ long double sinhl(long double) NOEXCEPT; double sinh(double) NOEXCEPT; float sinhf(float) NOEXCEPT; -long double tanl(long double) NOEXCEPT; -double tan(double) NOEXCEPT; -float tanf(float) NOEXCEPT; +long double coshl(long double) NOEXCEPT; +double cosh(double) NOEXCEPT; +float coshf(float) NOEXCEPT; long double tanhl(long double) NOEXCEPT; double tanh(double) NOEXCEPT; float tanhf(float) NOEXCEPT; +long double asinhl(long double) NOEXCEPT; +double asinh(double) NOEXCEPT; +float asinhf(float) NOEXCEPT; +long double acoshl(long double) NOEXCEPT; +double acosh(double) NOEXCEPT; +float acoshf(float) NOEXCEPT; +long double atanhl(long double) NOEXCEPT; +double atanh(double) NOEXCEPT; +float atanhf(float) NOEXCEPT; + +/* Error and gamma functions */ +long double erfl(long double) NOEXCEPT; +double erf(double) NOEXCEPT; +float erff(float) NOEXCEPT; +long double erfcl(long double) NOEXCEPT; +double erfc(double) NOEXCEPT; +float erfcf(float) NOEXCEPT; +double gamma(double) NOEXCEPT; + +/* Nearest integer floating point operations */ +long double ceill(long double) NOEXCEPT; double ceil(double) NOEXCEPT; float ceilf(float) NOEXCEPT; -long double ceill(long double) NOEXCEPT; +long double floorl(long double) NOEXCEPT; double floor(double) NOEXCEPT; float floorf(float) NOEXCEPT; -long double floorl(long double) NOEXCEPT; +long double truncl(long double) NOEXCEPT; double trunc(double) NOEXCEPT; float truncf(float) NOEXCEPT; -long double truncl(long double) NOEXCEPT; -double round(double) NOEXCEPT; float roundf(float) NOEXCEPT; +double round(double) NOEXCEPT; long double roundl(long double) NOEXCEPT; long lroundf(float) NOEXCEPT; long lround(double) NOEXCEPT; @@ -129,108 +199,42 @@ long lroundl(long double) NOEXCEPT; long long llroundf(float) NOEXCEPT; long long llround(double) NOEXCEPT; long long llroundd(long double) NOEXCEPT; -double rint(double) NOEXCEPT; float rintf(float) NOEXCEPT; +double rint(double) NOEXCEPT; long lrintl(long double) NOEXCEPT; long lrint(double) NOEXCEPT; long lrintf(float) NOEXCEPT; long long llrintl(long double) NOEXCEPT; long long llrint(double) NOEXCEPT; long long llrintf(float) NOEXCEPT; -long double fabsl(long double) NOEXCEPT; -double fabs(double) NOEXCEPT; -float fabsf(float) NOEXCEPT; -long double fmodl(long double, long double) NOEXCEPT; -double fmod(double, double) NOEXCEPT; -float fmodf(float, float) NOEXCEPT; -long double expl(long double) NOEXCEPT; -double exp(double) NOEXCEPT; -float expf(float) NOEXCEPT; -long double exp2l(long double) NOEXCEPT; -double exp2(double) NOEXCEPT; -float exp2f(float) NOEXCEPT; + +/* Floating point manipulation functions */ long double frexpl(long double, int* exp) NOEXCEPT; double frexp(double, int* exp) NOEXCEPT; float frexpf(float, int* exp) NOEXCEPT; -long double logl(long double) NOEXCEPT; -double log(double) NOEXCEPT; -float logf(float) NOEXCEPT; -long double log10l(long double) NOEXCEPT; -double log10(double) NOEXCEPT; -float log10f(float) NOEXCEPT; -long double sqrtl(long double) NOEXCEPT; -double sqrt(double) NOEXCEPT; -float sqrtf(float) NOEXCEPT; - +double ldexp(double, int exp) NOEXCEPT; +float ldexpf(float, int exp) NOEXCEPT; long double modfl(long double, long double*) NOEXCEPT; double modf(double, double*) NOEXCEPT; float modff(float, float*) NOEXCEPT; -double ldexp(double, int exp) NOEXCEPT; -float ldexpf(float, int exp) NOEXCEPT; - -long double powl(long double x, long double y) NOEXCEPT; -double pow(double x, double y) NOEXCEPT; -float powf(float x, float y) NOEXCEPT; - -#define FP_ILOGB0 INT_MIN -#define FP_ILOGNAN INT_MAX - -int ilogbl(long double) NOEXCEPT; -int ilogb(double) NOEXCEPT; -int ilogbf(float) NOEXCEPT; -long double logbl(long double) NOEXCEPT; -double logb(double) NOEXCEPT; -float logbf(float) NOEXCEPT; -double log2(double) NOEXCEPT; -float log2f(float) NOEXCEPT; -long double log2l(long double) NOEXCEPT; -double frexp(double, int*) NOEXCEPT; -float frexpf(float, int*) NOEXCEPT; -long double frexpl(long double, int*) NOEXCEPT; - -double gamma(double) NOEXCEPT; -long double expm1l(long double) NOEXCEPT; -double expm1(double) NOEXCEPT; -float expm1f(float) NOEXCEPT; -long double cbrtl(long double) NOEXCEPT; -double cbrt(double) NOEXCEPT; -float cbrtf(float) NOEXCEPT; -long double log1pl(long double) NOEXCEPT; -double log1p(double) NOEXCEPT; -float log1pf(float) NOEXCEPT; -long double acoshl(long double) NOEXCEPT; -double acosh(double) NOEXCEPT; -float acoshf(float) NOEXCEPT; -long double asinhl(long double) NOEXCEPT; -double asinh(double) NOEXCEPT; -float asinhf(float) NOEXCEPT; -long double atanhl(long double) NOEXCEPT; -double atanh(double) NOEXCEPT; -float atanhf(float) NOEXCEPT; -long double hypotl(long double, long double) NOEXCEPT; -double hypot(double, double) NOEXCEPT; -float hypotf(float, float) NOEXCEPT; -long double erfl(long double) NOEXCEPT; -double erf(double) NOEXCEPT; -float erff(float) NOEXCEPT; -long double erfcl(long double) NOEXCEPT; -double erfc(double) NOEXCEPT; -float erfcf(float) NOEXCEPT; - -double nextafter(double, double) NOEXCEPT; -float nextafterf(float, float) NOEXCEPT; -long double nextafterl(long double, long double) NOEXCEPT; -double nexttoward(double, long double) NOEXCEPT; -float nexttowardf(float, long double) NOEXCEPT; -long double nexttowardl(long double, long double) NOEXCEPT; - float scalbnf(float, int) NOEXCEPT; double scalbn(double, int) NOEXCEPT; long double scalbnl(long double, int) NOEXCEPT; float scalbnlf(float, long) NOEXCEPT; double scalbln(double, long) NOEXCEPT; long double scalblnl(long double, long) NOEXCEPT; - +int ilogbl(long double) NOEXCEPT; +int ilogb(double) NOEXCEPT; +int ilogbf(float) NOEXCEPT; +long double logbl(long double) NOEXCEPT; +double logb(double) NOEXCEPT; +float logbf(float) NOEXCEPT; +double nextafter(double, double) NOEXCEPT; +float nextafterf(float, float) NOEXCEPT; +long double nextafterl(long double, long double) NOEXCEPT; +double nexttoward(double, long double) NOEXCEPT; +float nexttowardf(float, long double) NOEXCEPT; +long double nexttowardl(long double, long double) NOEXCEPT; float copysignf(float x, float y) NOEXCEPT; double copysign(double x, double y) NOEXCEPT; long double copysignl(long double x, long double y) NOEXCEPT;