1839bc985SFrançois Tigeot /* $OpenBSD: math.h,v 1.36 2018/03/10 20:52:58 kettenis Exp $ */ 205a0b428SJohn Marino /* 305a0b428SJohn Marino * ==================================================== 405a0b428SJohn Marino * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 505a0b428SJohn Marino * 605a0b428SJohn Marino * Developed at SunPro, a Sun Microsystems, Inc. business. 705a0b428SJohn Marino * Permission to use, copy, modify, and distribute this 805a0b428SJohn Marino * software is freely granted, provided that this notice 905a0b428SJohn Marino * is preserved. 1005a0b428SJohn Marino * ==================================================== 1105a0b428SJohn Marino */ 1205a0b428SJohn Marino 1305a0b428SJohn Marino /* 1405a0b428SJohn Marino * from: @(#)fdlibm.h 5.1 93/09/24 1505a0b428SJohn Marino */ 1605a0b428SJohn Marino 1705a0b428SJohn Marino #ifndef _MATH_H_ 1805a0b428SJohn Marino #define _MATH_H_ 1905a0b428SJohn Marino 20cc7dc49eSSascha Wildner #include <machine/limits.h> 21*26314e03SSascha Wildner #include <machine/stdint.h> 2205a0b428SJohn Marino 2305a0b428SJohn Marino __BEGIN_DECLS 2405a0b428SJohn Marino /* 2505a0b428SJohn Marino * ANSI/POSIX 2605a0b428SJohn Marino */ 2705a0b428SJohn Marino extern char __infinity[]; 281bd3f1e4SSascha Wildner #if __GNUC_PREREQ__(3, 3) 2905a0b428SJohn Marino #define HUGE_VAL __builtin_huge_val() 301bd3f1e4SSascha Wildner #else /* __GNUC_PREREQ__(3, 3) */ 3105a0b428SJohn Marino #define HUGE_VAL (*(double *)(void *)__infinity) 321bd3f1e4SSascha Wildner #endif /* __GNUC_PREREQ__(3, 3) */ 3305a0b428SJohn Marino 3405a0b428SJohn Marino /* 3505a0b428SJohn Marino * C99 3605a0b428SJohn Marino */ 3705a0b428SJohn Marino #if __ISO_C_VISIBLE >= 1999 38*26314e03SSascha Wildner typedef __double_t double_t; 39*26314e03SSascha Wildner typedef __float_t float_t; 4005a0b428SJohn Marino 411bd3f1e4SSascha Wildner #if __GNUC_PREREQ__(3, 3) 4205a0b428SJohn Marino #define HUGE_VALF __builtin_huge_valf() 4305a0b428SJohn Marino #define HUGE_VALL __builtin_huge_vall() 4405a0b428SJohn Marino #define INFINITY __builtin_inff() 4505a0b428SJohn Marino #define NAN __builtin_nanf("") 461bd3f1e4SSascha Wildner #else /* __GNUC_PREREQ__(3, 3) */ 4705a0b428SJohn Marino #define HUGE_VALF ((float)HUGE_VAL) 4805a0b428SJohn Marino #define HUGE_VALL ((long double)HUGE_VAL) 4905a0b428SJohn Marino #define INFINITY HUGE_VALF 5005a0b428SJohn Marino extern char __nan[]; 5105a0b428SJohn Marino #define NAN (*(float *)(void *)__nan) 521bd3f1e4SSascha Wildner #endif /* __GNUC_PREREQ__(3, 3) */ 5305a0b428SJohn Marino 5405a0b428SJohn Marino #define FP_INFINITE 0x01 5505a0b428SJohn Marino #define FP_NAN 0x02 5605a0b428SJohn Marino #define FP_NORMAL 0x04 5705a0b428SJohn Marino #define FP_SUBNORMAL 0x08 5805a0b428SJohn Marino #define FP_ZERO 0x10 5905a0b428SJohn Marino 6005a0b428SJohn Marino #define FP_ILOGB0 (-INT_MAX) 6105a0b428SJohn Marino #define FP_ILOGBNAN INT_MAX 6205a0b428SJohn Marino 631bd3f1e4SSascha Wildner #ifdef __FP_FAST_FMA 64d5168ee9SJohn Marino #define FP_FAST_FMA 1 651bd3f1e4SSascha Wildner #endif /* __FP_FAST_FMA */ 661bd3f1e4SSascha Wildner 671bd3f1e4SSascha Wildner #ifdef __FP_FAST_FMAF 6845bf7e55SJohn Marino #define FP_FAST_FMAF 1 691bd3f1e4SSascha Wildner #endif /* __FP_FAST_FMAF */ 701bd3f1e4SSascha Wildner 711bd3f1e4SSascha Wildner #ifdef __FP_FAST_FMAL 721bd3f1e4SSascha Wildner #define FP_FAST_FMAL 1 731bd3f1e4SSascha Wildner #endif /* __FP_FAST_FMAL */ 74d5168ee9SJohn Marino 75d5168ee9SJohn Marino #define MATH_ERRNO 1 76d5168ee9SJohn Marino #define MATH_ERREXCEPT 2 77d5168ee9SJohn Marino #define math_errhandling MATH_ERREXCEPT 78d5168ee9SJohn Marino 7905a0b428SJohn Marino #define fpclassify(x) \ 8005a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 8105a0b428SJohn Marino __fpclassifyf(x) \ 8205a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 8374b7c7a8SJohn Marino __fpclassifyd(x) \ 8405a0b428SJohn Marino : __fpclassifyl(x)) 8505a0b428SJohn Marino #define isfinite(x) \ 8605a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 8705a0b428SJohn Marino __isfinitef(x) \ 8805a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 8905a0b428SJohn Marino __isfinite(x) \ 9005a0b428SJohn Marino : __isfinitel(x)) 9105a0b428SJohn Marino #define isnormal(x) \ 9205a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 9305a0b428SJohn Marino __isnormalf(x) \ 9405a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 9505a0b428SJohn Marino __isnormal(x) \ 9605a0b428SJohn Marino : __isnormall(x)) 9705a0b428SJohn Marino #define signbit(x) \ 9805a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 9905a0b428SJohn Marino __signbitf(x) \ 10005a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 10105a0b428SJohn Marino __signbit(x) \ 10205a0b428SJohn Marino : __signbitl(x)) 10305a0b428SJohn Marino 10405a0b428SJohn Marino #define isgreater(x, y) (!isunordered((x), (y)) && (x) > (y)) 10505a0b428SJohn Marino #define isgreaterequal(x, y) (!isunordered((x), (y)) && (x) >= (y)) 10605a0b428SJohn Marino #define isless(x, y) (!isunordered((x), (y)) && (x) < (y)) 10705a0b428SJohn Marino #define islessequal(x, y) (!isunordered((x), (y)) && (x) <= (y)) 10805a0b428SJohn Marino #define islessgreater(x, y) (!isunordered((x), (y)) && \ 10905a0b428SJohn Marino ((x) > (y) || (y) > (x))) 11005a0b428SJohn Marino #define isunordered(x, y) (isnan(x) || isnan(y)) 11105a0b428SJohn Marino #endif /* __ISO_C_VISIBLE >= 1999 */ 11205a0b428SJohn Marino 11305a0b428SJohn Marino #define isinf(x) \ 11405a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 11505a0b428SJohn Marino __isinff(x) \ 11605a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 11705a0b428SJohn Marino __isinf(x) \ 11805a0b428SJohn Marino : __isinfl(x)) 11905a0b428SJohn Marino #define isnan(x) \ 12005a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 12105a0b428SJohn Marino __isnanf(x) \ 12205a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 12305a0b428SJohn Marino __isnan(x) \ 12405a0b428SJohn Marino : __isnanl(x)) 12505a0b428SJohn Marino 12605a0b428SJohn Marino /* 12705a0b428SJohn Marino * XOPEN/SVID 12805a0b428SJohn Marino */ 12968c3dbacSJohn Marino #if __BSD_VISIBLE || __XSI_VISIBLE 13005a0b428SJohn Marino #define M_E ((double)2.7182818284590452354) /* e */ 13105a0b428SJohn Marino #define M_LOG2E ((double)1.4426950408889634074) /* log 2e */ 13205a0b428SJohn Marino #define M_LOG10E ((double)0.43429448190325182765) /* log 10e */ 13305a0b428SJohn Marino #define M_LN2 ((double)0.69314718055994530942) /* log e2 */ 13405a0b428SJohn Marino #define M_LN10 ((double)2.30258509299404568402) /* log e10 */ 13505a0b428SJohn Marino #define M_PI ((double)3.14159265358979323846) /* pi */ 13605a0b428SJohn Marino #define M_PI_2 ((double)1.57079632679489661923) /* pi/2 */ 13705a0b428SJohn Marino #define M_PI_4 ((double)0.78539816339744830962) /* pi/4 */ 13805a0b428SJohn Marino #define M_1_PI ((double)0.31830988618379067154) /* 1/pi */ 13905a0b428SJohn Marino #define M_2_PI ((double)0.63661977236758134308) /* 2/pi */ 14005a0b428SJohn Marino #define M_2_SQRTPI ((double)1.12837916709551257390) /* 2/sqrt(pi) */ 14105a0b428SJohn Marino #define M_SQRT2 ((double)1.41421356237309504880) /* sqrt(2) */ 14205a0b428SJohn Marino #define M_SQRT1_2 ((double)0.70710678118654752440) /* 1/sqrt(2) */ 14305a0b428SJohn Marino 14405a0b428SJohn Marino #define MAXFLOAT ((float)3.40282346638528860e+38) 14505a0b428SJohn Marino 14605a0b428SJohn Marino extern int signgam; 14768c3dbacSJohn Marino #endif /* __BSD_VISIBLE || __XSI_VISIBLE */ 14805a0b428SJohn Marino 14905a0b428SJohn Marino #if __POSIX_VISIBLE >= 201403 15005a0b428SJohn Marino #define M_El 2.718281828459045235360287471352662498L /* e */ 15105a0b428SJohn Marino #define M_LOG2El 1.442695040888963407359924681001892137L /* log 2e */ 15205a0b428SJohn Marino #define M_LOG10El 0.434294481903251827651128918916605082L /* log 10e */ 15305a0b428SJohn Marino #define M_LN2l 0.693147180559945309417232121458176568L /* log e2 */ 15405a0b428SJohn Marino #define M_LN10l 2.302585092994045684017991454684364208L /* log e10 */ 15505a0b428SJohn Marino #define M_PIl 3.141592653589793238462643383279502884L /* pi */ 15605a0b428SJohn Marino #define M_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ 15705a0b428SJohn Marino #define M_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ 15805a0b428SJohn Marino #define M_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ 15905a0b428SJohn Marino #define M_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ 16005a0b428SJohn Marino #define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */ 16105a0b428SJohn Marino #define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ 16205a0b428SJohn Marino #define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ 16305a0b428SJohn Marino #endif /* __POSIX_VISIBLE >= 201403 */ 16405a0b428SJohn Marino 16505a0b428SJohn Marino #if __BSD_VISIBLE 16605a0b428SJohn Marino #define HUGE MAXFLOAT 16705a0b428SJohn Marino #endif /* __BSD_VISIBLE */ 16805a0b428SJohn Marino 16905a0b428SJohn Marino /* 17005a0b428SJohn Marino * ANSI/POSIX 17105a0b428SJohn Marino */ 17205a0b428SJohn Marino double acos(double); 17305a0b428SJohn Marino double asin(double); 17405a0b428SJohn Marino double atan(double); 17505a0b428SJohn Marino double atan2(double, double); 17605a0b428SJohn Marino double cos(double); 17705a0b428SJohn Marino double sin(double); 17805a0b428SJohn Marino double tan(double); 17905a0b428SJohn Marino 18005a0b428SJohn Marino double cosh(double); 18105a0b428SJohn Marino double sinh(double); 18205a0b428SJohn Marino double tanh(double); 18305a0b428SJohn Marino 18405a0b428SJohn Marino double exp(double); 18505a0b428SJohn Marino double frexp(double, int *); 18605a0b428SJohn Marino double ldexp(double, int); 18705a0b428SJohn Marino double log(double); 18805a0b428SJohn Marino double log10(double); 18905a0b428SJohn Marino double modf(double, double *); 19005a0b428SJohn Marino 19105a0b428SJohn Marino double pow(double, double); 19205a0b428SJohn Marino double sqrt(double); 19305a0b428SJohn Marino 19405a0b428SJohn Marino double ceil(double); 19505a0b428SJohn Marino double fabs(double); 19605a0b428SJohn Marino double floor(double); 19705a0b428SJohn Marino double fmod(double, double); 19805a0b428SJohn Marino 19905a0b428SJohn Marino /* 20005a0b428SJohn Marino * C99 20105a0b428SJohn Marino */ 20268c3dbacSJohn Marino #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE 20305a0b428SJohn Marino double acosh(double); 20405a0b428SJohn Marino double asinh(double); 20505a0b428SJohn Marino double atanh(double); 20605a0b428SJohn Marino 20705a0b428SJohn Marino double exp2(double); 20805a0b428SJohn Marino double expm1(double); 20905a0b428SJohn Marino int ilogb(double); 21005a0b428SJohn Marino double log1p(double); 21105a0b428SJohn Marino double log2(double); 21205a0b428SJohn Marino double logb(double); 21305a0b428SJohn Marino double scalbn(double, int); 21405a0b428SJohn Marino double scalbln(double, long int); 21505a0b428SJohn Marino 21605a0b428SJohn Marino double cbrt(double); 21705a0b428SJohn Marino double hypot(double, double); 21805a0b428SJohn Marino 21905a0b428SJohn Marino double erf(double); 22005a0b428SJohn Marino double erfc(double); 22105a0b428SJohn Marino double lgamma(double); 22205a0b428SJohn Marino double tgamma(double); 22305a0b428SJohn Marino 22405a0b428SJohn Marino double nearbyint(double); 22505a0b428SJohn Marino double rint(double); 22605a0b428SJohn Marino long int lrint(double); 22705a0b428SJohn Marino long long int llrint(double); 22805a0b428SJohn Marino double round(double); 22905a0b428SJohn Marino long int lround(double); 23005a0b428SJohn Marino long long int llround(double); 23105a0b428SJohn Marino double trunc(double); 23205a0b428SJohn Marino 23305a0b428SJohn Marino double remainder(double, double); 23405a0b428SJohn Marino double remquo(double, double, int *); 23505a0b428SJohn Marino 23605a0b428SJohn Marino double copysign(double, double); 23705a0b428SJohn Marino double nan(const char *); 23805a0b428SJohn Marino double nextafter(double, double); 23905a0b428SJohn Marino double nexttoward(double, long double); 24005a0b428SJohn Marino 24105a0b428SJohn Marino double fdim(double, double); 24205a0b428SJohn Marino double fmax(double, double); 24305a0b428SJohn Marino double fmin(double, double); 24405a0b428SJohn Marino 24505a0b428SJohn Marino double fma(double, double, double); 24668c3dbacSJohn Marino #endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ 24705a0b428SJohn Marino 24868c3dbacSJohn Marino #if __BSD_VISIBLE || __XSI_VISIBLE 24905a0b428SJohn Marino double j0(double); 25005a0b428SJohn Marino double j1(double); 25105a0b428SJohn Marino double jn(int, double); 25205a0b428SJohn Marino double y0(double); 25305a0b428SJohn Marino double y1(double); 25405a0b428SJohn Marino double yn(int, double); 25568c3dbacSJohn Marino #endif /* __BSD_VISIBLE || __XSI_VISIBLE */ 25605a0b428SJohn Marino 25768c3dbacSJohn Marino #if __BSD_VISIBLE || __XSI_VISIBLE <= 500 25805a0b428SJohn Marino double gamma(double); 25968c3dbacSJohn Marino #endif /* __BSD_VISIBLE || __XSI_VISIBLE <= 500 */ 26005a0b428SJohn Marino 261a096045fSSascha Wildner #if __BSD_VISIBLE || __XSI_VISIBLE <= 600 262a096045fSSascha Wildner double scalb(double, double); 263a096045fSSascha Wildner #endif /* __BSD_VISIBLE || __XSI_VISIBLE <= 600 */ 264a096045fSSascha Wildner 26505a0b428SJohn Marino /* 26605a0b428SJohn Marino * BSD math library entry points 26705a0b428SJohn Marino */ 26805a0b428SJohn Marino #if __BSD_VISIBLE 26905a0b428SJohn Marino double drem(double, double); 27005a0b428SJohn Marino int finite(double); 27105a0b428SJohn Marino 27205a0b428SJohn Marino /* 27305a0b428SJohn Marino * Reentrant version of gamma & lgamma; passes signgam back by reference 27405a0b428SJohn Marino * as the second argument; user must allocate space for signgam. 27505a0b428SJohn Marino */ 27605a0b428SJohn Marino double gamma_r(double, int *); 27705a0b428SJohn Marino double lgamma_r(double, int *); 27805a0b428SJohn Marino 279839bc985SFrançois Tigeot void sincos(double, double *, double *); 280839bc985SFrançois Tigeot 28105a0b428SJohn Marino /* 28205a0b428SJohn Marino * IEEE Test Vector 28305a0b428SJohn Marino */ 28405a0b428SJohn Marino double significand(double); 28505a0b428SJohn Marino #endif /* __BSD_VISIBLE */ 28605a0b428SJohn Marino 28705a0b428SJohn Marino /* 28805a0b428SJohn Marino * Float versions of C99 functions 28905a0b428SJohn Marino */ 29005a0b428SJohn Marino #if __ISO_C_VISIBLE >= 1999 29105a0b428SJohn Marino float acosf(float); 29205a0b428SJohn Marino float asinf(float); 29305a0b428SJohn Marino float atanf(float); 29405a0b428SJohn Marino float atan2f(float, float); 29505a0b428SJohn Marino float cosf(float); 29605a0b428SJohn Marino float sinf(float); 29705a0b428SJohn Marino float tanf(float); 29805a0b428SJohn Marino 29905a0b428SJohn Marino float acoshf(float); 30005a0b428SJohn Marino float asinhf(float); 30105a0b428SJohn Marino float atanhf(float); 30205a0b428SJohn Marino float coshf(float); 30305a0b428SJohn Marino float sinhf(float); 30405a0b428SJohn Marino float tanhf(float); 30505a0b428SJohn Marino 30605a0b428SJohn Marino float expf(float); 30705a0b428SJohn Marino float exp2f(float); 30805a0b428SJohn Marino float expm1f(float); 30905a0b428SJohn Marino float frexpf(float, int *); 31005a0b428SJohn Marino int ilogbf(float); 31105a0b428SJohn Marino float ldexpf(float, int); 31205a0b428SJohn Marino float logf(float); 31305a0b428SJohn Marino float log10f(float); 31405a0b428SJohn Marino float log1pf(float); 31505a0b428SJohn Marino float log2f(float); 31605a0b428SJohn Marino float logbf(float); 31705a0b428SJohn Marino float modff(float, float *); 31805a0b428SJohn Marino float scalbnf(float, int); 31905a0b428SJohn Marino float scalblnf(float, long int); 32005a0b428SJohn Marino 32105a0b428SJohn Marino float cbrtf(float); 32205a0b428SJohn Marino float fabsf(float); 32305a0b428SJohn Marino float hypotf(float, float); 32405a0b428SJohn Marino float powf(float, float); 32505a0b428SJohn Marino float sqrtf(float); 32605a0b428SJohn Marino 32705a0b428SJohn Marino float erff(float); 32805a0b428SJohn Marino float erfcf(float); 32905a0b428SJohn Marino float lgammaf(float); 33005a0b428SJohn Marino float tgammaf(float); 33105a0b428SJohn Marino 33205a0b428SJohn Marino float ceilf(float); 33305a0b428SJohn Marino float floorf(float); 33405a0b428SJohn Marino float nearbyintf(float); 33505a0b428SJohn Marino float rintf(float); 33605a0b428SJohn Marino long int lrintf(float); 33705a0b428SJohn Marino long long int llrintf(float); 33805a0b428SJohn Marino float roundf(float); 33905a0b428SJohn Marino long int lroundf(float); 34005a0b428SJohn Marino long long int llroundf(float); 34105a0b428SJohn Marino float truncf(float); 34205a0b428SJohn Marino 34305a0b428SJohn Marino float fmodf(float, float); 34405a0b428SJohn Marino float remainderf(float, float); 34505a0b428SJohn Marino float remquof(float, float, int *); 34605a0b428SJohn Marino 34705a0b428SJohn Marino float copysignf(float, float); 34805a0b428SJohn Marino float nanf(const char *); 34905a0b428SJohn Marino float nextafterf(float, float); 35005a0b428SJohn Marino float nexttowardf(float, long double); 35105a0b428SJohn Marino 35205a0b428SJohn Marino float fdimf(float, float); 35305a0b428SJohn Marino float fmaxf(float, float); 35405a0b428SJohn Marino float fminf(float, float); 35505a0b428SJohn Marino 35605a0b428SJohn Marino float fmaf(float, float, float); 35705a0b428SJohn Marino #endif /* __ISO_C_VISIBLE >= 1999 */ 35805a0b428SJohn Marino 35968c3dbacSJohn Marino #if __BSD_VISIBLE || __XSI_VISIBLE 36005a0b428SJohn Marino float j0f(float); 36105a0b428SJohn Marino float j1f(float); 36205a0b428SJohn Marino float jnf(int, float); 36305a0b428SJohn Marino float scalbf(float, float); 36405a0b428SJohn Marino float y0f(float); 36505a0b428SJohn Marino float y1f(float); 36605a0b428SJohn Marino float ynf(int, float); 36768c3dbacSJohn Marino #endif /* __BSD_VISIBLE || __XSI_VISIBLE */ 36805a0b428SJohn Marino 36968c3dbacSJohn Marino #if __BSD_VISIBLE || __XSI_VISIBLE <= 500 37005a0b428SJohn Marino float gammaf(float); 37168c3dbacSJohn Marino #endif /* __BSD_VISIBLE || __XSI_VISIBLE <= 500 */ 37205a0b428SJohn Marino 37305a0b428SJohn Marino /* 37405a0b428SJohn Marino * Float versions of BSD math library entry points 37505a0b428SJohn Marino */ 37605a0b428SJohn Marino #if __BSD_VISIBLE 37705a0b428SJohn Marino float dremf(float, float); 37805a0b428SJohn Marino int finitef(float); 37905a0b428SJohn Marino int isinff(float); 38005a0b428SJohn Marino int isnanf(float); 38105a0b428SJohn Marino 38205a0b428SJohn Marino /* 38305a0b428SJohn Marino * Float versions of reentrant version of gamma & lgamma; passes 38405a0b428SJohn Marino * signgam back by reference as the second argument; user must 38505a0b428SJohn Marino * allocate space for signgam. 38605a0b428SJohn Marino */ 38705a0b428SJohn Marino float gammaf_r(float, int *); 38805a0b428SJohn Marino float lgammaf_r(float, int *); 38905a0b428SJohn Marino 390839bc985SFrançois Tigeot void sincosf(float, float *, float *); 391839bc985SFrançois Tigeot 39205a0b428SJohn Marino /* 39305a0b428SJohn Marino * Float version of IEEE Test Vector 39405a0b428SJohn Marino */ 39505a0b428SJohn Marino float significandf(float); 39605a0b428SJohn Marino #endif /* __BSD_VISIBLE */ 39705a0b428SJohn Marino 39805a0b428SJohn Marino /* 39905a0b428SJohn Marino * Long double versions of C99 functions 40005a0b428SJohn Marino */ 40105a0b428SJohn Marino #if __ISO_C_VISIBLE >= 1999 40205a0b428SJohn Marino long double acosl(long double); 40305a0b428SJohn Marino long double asinl(long double); 40405a0b428SJohn Marino long double atanl(long double); 40505a0b428SJohn Marino long double atan2l(long double, long double); 40605a0b428SJohn Marino long double cosl(long double); 40705a0b428SJohn Marino long double sinl(long double); 40805a0b428SJohn Marino long double tanl(long double); 40905a0b428SJohn Marino 41005a0b428SJohn Marino long double acoshl(long double); 41105a0b428SJohn Marino long double asinhl(long double); 41205a0b428SJohn Marino long double atanhl(long double); 41305a0b428SJohn Marino long double coshl(long double); 41405a0b428SJohn Marino long double sinhl(long double); 41505a0b428SJohn Marino long double tanhl(long double); 41605a0b428SJohn Marino 41705a0b428SJohn Marino long double expl(long double); 41805a0b428SJohn Marino long double exp2l(long double); 41905a0b428SJohn Marino long double expm1l(long double); 42005a0b428SJohn Marino long double frexpl(long double, int *); 42105a0b428SJohn Marino int ilogbl(long double); 42205a0b428SJohn Marino long double ldexpl(long double, int); 42305a0b428SJohn Marino long double logl(long double); 42405a0b428SJohn Marino long double log10l(long double); 42505a0b428SJohn Marino long double log1pl(long double); 42605a0b428SJohn Marino long double log2l(long double); 42705a0b428SJohn Marino long double logbl(long double); 42805a0b428SJohn Marino long double modfl(long double, long double *); 42905a0b428SJohn Marino long double scalbnl(long double, int); 43005a0b428SJohn Marino long double scalblnl(long double, long int); 43105a0b428SJohn Marino 43205a0b428SJohn Marino long double cbrtl(long double); 43305a0b428SJohn Marino long double fabsl(long double); 43405a0b428SJohn Marino long double hypotl(long double, long double); 43505a0b428SJohn Marino long double powl(long double, long double); 43605a0b428SJohn Marino long double sqrtl(long double); 43705a0b428SJohn Marino 43805a0b428SJohn Marino long double erfl(long double); 43905a0b428SJohn Marino long double erfcl(long double); 44005a0b428SJohn Marino long double lgammal(long double); 44105a0b428SJohn Marino long double tgammal(long double); 44205a0b428SJohn Marino 44305a0b428SJohn Marino long double ceill(long double); 44405a0b428SJohn Marino long double floorl(long double); 44505a0b428SJohn Marino long double nearbyintl(long double); 44605a0b428SJohn Marino long double rintl(long double); 44705a0b428SJohn Marino long int lrintl(long double); 44805a0b428SJohn Marino long long int llrintl(long double); 44905a0b428SJohn Marino long double roundl(long double); 45005a0b428SJohn Marino long int lroundl(long double); 45105a0b428SJohn Marino long long int llroundl(long double); 45205a0b428SJohn Marino long double truncl(long double); 45305a0b428SJohn Marino 45405a0b428SJohn Marino long double fmodl(long double, long double); 45505a0b428SJohn Marino long double remainderl(long double, long double); 45605a0b428SJohn Marino long double remquol(long double, long double, int *); 45705a0b428SJohn Marino 45805a0b428SJohn Marino long double copysignl(long double, long double); 45905a0b428SJohn Marino long double nanl(const char *); 46005a0b428SJohn Marino long double nextafterl(long double, long double); 46105a0b428SJohn Marino long double nexttowardl(long double, long double); 46205a0b428SJohn Marino 46305a0b428SJohn Marino long double fdiml(long double, long double); 46405a0b428SJohn Marino long double fmaxl(long double, long double); 46505a0b428SJohn Marino long double fminl(long double, long double); 46605a0b428SJohn Marino 46705a0b428SJohn Marino long double fmal(long double, long double, long double); 46805a0b428SJohn Marino #endif /* __ISO_C_VISIBLE >= 1999 */ 46905a0b428SJohn Marino 47005a0b428SJohn Marino /* 471839bc985SFrançois Tigeot * Long double versions of BSD math library entry points 472839bc985SFrançois Tigeot */ 473839bc985SFrançois Tigeot #if __BSD_VISIBLE 474839bc985SFrançois Tigeot void sincosl(long double, long double *, long double *); 475839bc985SFrançois Tigeot #endif 476839bc985SFrançois Tigeot 477839bc985SFrançois Tigeot /* 47805a0b428SJohn Marino * Library implementation 47905a0b428SJohn Marino */ 4802fa870f1SJohn Marino int __fpclassifyd(double); 48105a0b428SJohn Marino int __fpclassifyf(float); 48205a0b428SJohn Marino int __fpclassifyl(long double); 48305a0b428SJohn Marino int __isfinite(double); 48405a0b428SJohn Marino int __isfinitef(float); 48505a0b428SJohn Marino int __isfinitel(long double); 48605a0b428SJohn Marino int __isinf(double); 48705a0b428SJohn Marino int __isinff(float); 48805a0b428SJohn Marino int __isinfl(long double); 48905a0b428SJohn Marino int __isnan(double); 49005a0b428SJohn Marino int __isnanf(float); 49105a0b428SJohn Marino int __isnanl(long double); 49205a0b428SJohn Marino int __isnormal(double); 49305a0b428SJohn Marino int __isnormalf(float); 49405a0b428SJohn Marino int __isnormall(long double); 49505a0b428SJohn Marino int __signbit(double); 49605a0b428SJohn Marino int __signbitf(float); 49705a0b428SJohn Marino int __signbitl(long double); 49805a0b428SJohn Marino __END_DECLS 49905a0b428SJohn Marino 50005a0b428SJohn Marino #endif /* !_MATH_H_ */ 501