1*05a0b428SJohn Marino /* $OpenBSD: math.h,v 1.33 2014/05/03 16:13:03 martynas Exp $ */ 2*05a0b428SJohn Marino /* 3*05a0b428SJohn Marino * ==================================================== 4*05a0b428SJohn Marino * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 5*05a0b428SJohn Marino * 6*05a0b428SJohn Marino * Developed at SunPro, a Sun Microsystems, Inc. business. 7*05a0b428SJohn Marino * Permission to use, copy, modify, and distribute this 8*05a0b428SJohn Marino * software is freely granted, provided that this notice 9*05a0b428SJohn Marino * is preserved. 10*05a0b428SJohn Marino * ==================================================== 11*05a0b428SJohn Marino */ 12*05a0b428SJohn Marino 13*05a0b428SJohn Marino /* 14*05a0b428SJohn Marino * from: @(#)fdlibm.h 5.1 93/09/24 15*05a0b428SJohn Marino */ 16*05a0b428SJohn Marino 17*05a0b428SJohn Marino #ifndef _MATH_H_ 18*05a0b428SJohn Marino #define _MATH_H_ 19*05a0b428SJohn Marino 20*05a0b428SJohn Marino #include <sys/_types.h> 21*05a0b428SJohn Marino #include <sys/limits.h> 22*05a0b428SJohn Marino 23*05a0b428SJohn Marino __BEGIN_DECLS 24*05a0b428SJohn Marino /* 25*05a0b428SJohn Marino * ANSI/POSIX 26*05a0b428SJohn Marino */ 27*05a0b428SJohn Marino extern char __infinity[]; 28*05a0b428SJohn Marino #if __GNUC_PREREQ__(3, 3) && !defined(__vax__) 29*05a0b428SJohn Marino #define HUGE_VAL __builtin_huge_val() 30*05a0b428SJohn Marino #else /* __GNUC_PREREQ__(3, 3) && !__vax__ */ 31*05a0b428SJohn Marino #define HUGE_VAL (*(double *)(void *)__infinity) 32*05a0b428SJohn Marino #endif /* __GNUC_PREREQ__(3, 3) && !__vax__ */ 33*05a0b428SJohn Marino 34*05a0b428SJohn Marino /* 35*05a0b428SJohn Marino * C99 36*05a0b428SJohn Marino */ 37*05a0b428SJohn Marino #if __ISO_C_VISIBLE >= 1999 38*05a0b428SJohn Marino typedef __double_t double_t; 39*05a0b428SJohn Marino typedef __float_t float_t; 40*05a0b428SJohn Marino 41*05a0b428SJohn Marino #if __GNUC_PREREQ__(3, 3) && !defined(__vax__) 42*05a0b428SJohn Marino #define HUGE_VALF __builtin_huge_valf() 43*05a0b428SJohn Marino #define HUGE_VALL __builtin_huge_vall() 44*05a0b428SJohn Marino #define INFINITY __builtin_inff() 45*05a0b428SJohn Marino #define NAN __builtin_nanf("") 46*05a0b428SJohn Marino #else /* __GNUC_PREREQ__(3, 3) && !__vax__ */ 47*05a0b428SJohn Marino #ifdef __vax__ 48*05a0b428SJohn Marino extern char __infinityf[]; 49*05a0b428SJohn Marino #define HUGE_VALF (*(float *)(void *)__infinityf) 50*05a0b428SJohn Marino #else /* __vax__ */ 51*05a0b428SJohn Marino #define HUGE_VALF ((float)HUGE_VAL) 52*05a0b428SJohn Marino #endif /* __vax__ */ 53*05a0b428SJohn Marino #define HUGE_VALL ((long double)HUGE_VAL) 54*05a0b428SJohn Marino #define INFINITY HUGE_VALF 55*05a0b428SJohn Marino #ifndef __vax__ 56*05a0b428SJohn Marino extern char __nan[]; 57*05a0b428SJohn Marino #define NAN (*(float *)(void *)__nan) 58*05a0b428SJohn Marino #endif /* !__vax__ */ 59*05a0b428SJohn Marino #endif /* __GNUC_PREREQ__(3, 3) && !__vax__ */ 60*05a0b428SJohn Marino 61*05a0b428SJohn Marino #define FP_INFINITE 0x01 62*05a0b428SJohn Marino #define FP_NAN 0x02 63*05a0b428SJohn Marino #define FP_NORMAL 0x04 64*05a0b428SJohn Marino #define FP_SUBNORMAL 0x08 65*05a0b428SJohn Marino #define FP_ZERO 0x10 66*05a0b428SJohn Marino 67*05a0b428SJohn Marino #define FP_ILOGB0 (-INT_MAX) 68*05a0b428SJohn Marino #define FP_ILOGBNAN INT_MAX 69*05a0b428SJohn Marino 70*05a0b428SJohn Marino #define fpclassify(x) \ 71*05a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 72*05a0b428SJohn Marino __fpclassifyf(x) \ 73*05a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 74*05a0b428SJohn Marino __fpclassify(x) \ 75*05a0b428SJohn Marino : __fpclassifyl(x)) 76*05a0b428SJohn Marino #define isfinite(x) \ 77*05a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 78*05a0b428SJohn Marino __isfinitef(x) \ 79*05a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 80*05a0b428SJohn Marino __isfinite(x) \ 81*05a0b428SJohn Marino : __isfinitel(x)) 82*05a0b428SJohn Marino #define isnormal(x) \ 83*05a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 84*05a0b428SJohn Marino __isnormalf(x) \ 85*05a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 86*05a0b428SJohn Marino __isnormal(x) \ 87*05a0b428SJohn Marino : __isnormall(x)) 88*05a0b428SJohn Marino #define signbit(x) \ 89*05a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 90*05a0b428SJohn Marino __signbitf(x) \ 91*05a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 92*05a0b428SJohn Marino __signbit(x) \ 93*05a0b428SJohn Marino : __signbitl(x)) 94*05a0b428SJohn Marino 95*05a0b428SJohn Marino #define isgreater(x, y) (!isunordered((x), (y)) && (x) > (y)) 96*05a0b428SJohn Marino #define isgreaterequal(x, y) (!isunordered((x), (y)) && (x) >= (y)) 97*05a0b428SJohn Marino #define isless(x, y) (!isunordered((x), (y)) && (x) < (y)) 98*05a0b428SJohn Marino #define islessequal(x, y) (!isunordered((x), (y)) && (x) <= (y)) 99*05a0b428SJohn Marino #define islessgreater(x, y) (!isunordered((x), (y)) && \ 100*05a0b428SJohn Marino ((x) > (y) || (y) > (x))) 101*05a0b428SJohn Marino #define isunordered(x, y) (isnan(x) || isnan(y)) 102*05a0b428SJohn Marino #endif /* __ISO_C_VISIBLE >= 1999 */ 103*05a0b428SJohn Marino 104*05a0b428SJohn Marino #define isinf(x) \ 105*05a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 106*05a0b428SJohn Marino __isinff(x) \ 107*05a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 108*05a0b428SJohn Marino __isinf(x) \ 109*05a0b428SJohn Marino : __isinfl(x)) 110*05a0b428SJohn Marino #define isnan(x) \ 111*05a0b428SJohn Marino ((sizeof (x) == sizeof (float)) ? \ 112*05a0b428SJohn Marino __isnanf(x) \ 113*05a0b428SJohn Marino : (sizeof (x) == sizeof (double)) ? \ 114*05a0b428SJohn Marino __isnan(x) \ 115*05a0b428SJohn Marino : __isnanl(x)) 116*05a0b428SJohn Marino 117*05a0b428SJohn Marino /* 118*05a0b428SJohn Marino * XOPEN/SVID 119*05a0b428SJohn Marino */ 120*05a0b428SJohn Marino #if __BSD_VISIBLE || __XPG_VISIBLE 121*05a0b428SJohn Marino #define M_E ((double)2.7182818284590452354) /* e */ 122*05a0b428SJohn Marino #define M_LOG2E ((double)1.4426950408889634074) /* log 2e */ 123*05a0b428SJohn Marino #define M_LOG10E ((double)0.43429448190325182765) /* log 10e */ 124*05a0b428SJohn Marino #define M_LN2 ((double)0.69314718055994530942) /* log e2 */ 125*05a0b428SJohn Marino #define M_LN10 ((double)2.30258509299404568402) /* log e10 */ 126*05a0b428SJohn Marino #define M_PI ((double)3.14159265358979323846) /* pi */ 127*05a0b428SJohn Marino #define M_PI_2 ((double)1.57079632679489661923) /* pi/2 */ 128*05a0b428SJohn Marino #define M_PI_4 ((double)0.78539816339744830962) /* pi/4 */ 129*05a0b428SJohn Marino #define M_1_PI ((double)0.31830988618379067154) /* 1/pi */ 130*05a0b428SJohn Marino #define M_2_PI ((double)0.63661977236758134308) /* 2/pi */ 131*05a0b428SJohn Marino #define M_2_SQRTPI ((double)1.12837916709551257390) /* 2/sqrt(pi) */ 132*05a0b428SJohn Marino #define M_SQRT2 ((double)1.41421356237309504880) /* sqrt(2) */ 133*05a0b428SJohn Marino #define M_SQRT1_2 ((double)0.70710678118654752440) /* 1/sqrt(2) */ 134*05a0b428SJohn Marino 135*05a0b428SJohn Marino #ifdef __vax__ 136*05a0b428SJohn Marino #define MAXFLOAT ((float)1.70141173319264430e+38) 137*05a0b428SJohn Marino #else 138*05a0b428SJohn Marino #define MAXFLOAT ((float)3.40282346638528860e+38) 139*05a0b428SJohn Marino #endif /* __vax__ */ 140*05a0b428SJohn Marino 141*05a0b428SJohn Marino extern int signgam; 142*05a0b428SJohn Marino #endif /* __BSD_VISIBLE || __XPG_VISIBLE */ 143*05a0b428SJohn Marino 144*05a0b428SJohn Marino #if __POSIX_VISIBLE >= 201403 145*05a0b428SJohn Marino #define M_El 2.718281828459045235360287471352662498L /* e */ 146*05a0b428SJohn Marino #define M_LOG2El 1.442695040888963407359924681001892137L /* log 2e */ 147*05a0b428SJohn Marino #define M_LOG10El 0.434294481903251827651128918916605082L /* log 10e */ 148*05a0b428SJohn Marino #define M_LN2l 0.693147180559945309417232121458176568L /* log e2 */ 149*05a0b428SJohn Marino #define M_LN10l 2.302585092994045684017991454684364208L /* log e10 */ 150*05a0b428SJohn Marino #define M_PIl 3.141592653589793238462643383279502884L /* pi */ 151*05a0b428SJohn Marino #define M_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ 152*05a0b428SJohn Marino #define M_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ 153*05a0b428SJohn Marino #define M_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ 154*05a0b428SJohn Marino #define M_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ 155*05a0b428SJohn Marino #define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */ 156*05a0b428SJohn Marino #define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ 157*05a0b428SJohn Marino #define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ 158*05a0b428SJohn Marino #endif /* __POSIX_VISIBLE >= 201403 */ 159*05a0b428SJohn Marino 160*05a0b428SJohn Marino #if __BSD_VISIBLE 161*05a0b428SJohn Marino #define HUGE MAXFLOAT 162*05a0b428SJohn Marino #endif /* __BSD_VISIBLE */ 163*05a0b428SJohn Marino 164*05a0b428SJohn Marino /* 165*05a0b428SJohn Marino * ANSI/POSIX 166*05a0b428SJohn Marino */ 167*05a0b428SJohn Marino double acos(double); 168*05a0b428SJohn Marino double asin(double); 169*05a0b428SJohn Marino double atan(double); 170*05a0b428SJohn Marino double atan2(double, double); 171*05a0b428SJohn Marino double cos(double); 172*05a0b428SJohn Marino double sin(double); 173*05a0b428SJohn Marino double tan(double); 174*05a0b428SJohn Marino 175*05a0b428SJohn Marino double cosh(double); 176*05a0b428SJohn Marino double sinh(double); 177*05a0b428SJohn Marino double tanh(double); 178*05a0b428SJohn Marino 179*05a0b428SJohn Marino double exp(double); 180*05a0b428SJohn Marino double frexp(double, int *); 181*05a0b428SJohn Marino double ldexp(double, int); 182*05a0b428SJohn Marino double log(double); 183*05a0b428SJohn Marino double log10(double); 184*05a0b428SJohn Marino double modf(double, double *); 185*05a0b428SJohn Marino 186*05a0b428SJohn Marino double pow(double, double); 187*05a0b428SJohn Marino double sqrt(double); 188*05a0b428SJohn Marino 189*05a0b428SJohn Marino double ceil(double); 190*05a0b428SJohn Marino double fabs(double); 191*05a0b428SJohn Marino double floor(double); 192*05a0b428SJohn Marino double fmod(double, double); 193*05a0b428SJohn Marino 194*05a0b428SJohn Marino /* 195*05a0b428SJohn Marino * C99 196*05a0b428SJohn Marino */ 197*05a0b428SJohn Marino #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XPG_VISIBLE 198*05a0b428SJohn Marino double acosh(double); 199*05a0b428SJohn Marino double asinh(double); 200*05a0b428SJohn Marino double atanh(double); 201*05a0b428SJohn Marino 202*05a0b428SJohn Marino double exp2(double); 203*05a0b428SJohn Marino double expm1(double); 204*05a0b428SJohn Marino int ilogb(double); 205*05a0b428SJohn Marino double log1p(double); 206*05a0b428SJohn Marino double log2(double); 207*05a0b428SJohn Marino double logb(double); 208*05a0b428SJohn Marino double scalbn(double, int); 209*05a0b428SJohn Marino double scalbln(double, long int); 210*05a0b428SJohn Marino 211*05a0b428SJohn Marino double cbrt(double); 212*05a0b428SJohn Marino double hypot(double, double); 213*05a0b428SJohn Marino 214*05a0b428SJohn Marino double erf(double); 215*05a0b428SJohn Marino double erfc(double); 216*05a0b428SJohn Marino double lgamma(double); 217*05a0b428SJohn Marino double tgamma(double); 218*05a0b428SJohn Marino 219*05a0b428SJohn Marino double nearbyint(double); 220*05a0b428SJohn Marino double rint(double); 221*05a0b428SJohn Marino long int lrint(double); 222*05a0b428SJohn Marino long long int llrint(double); 223*05a0b428SJohn Marino double round(double); 224*05a0b428SJohn Marino long int lround(double); 225*05a0b428SJohn Marino long long int llround(double); 226*05a0b428SJohn Marino double trunc(double); 227*05a0b428SJohn Marino 228*05a0b428SJohn Marino double remainder(double, double); 229*05a0b428SJohn Marino double remquo(double, double, int *); 230*05a0b428SJohn Marino 231*05a0b428SJohn Marino double copysign(double, double); 232*05a0b428SJohn Marino double nan(const char *); 233*05a0b428SJohn Marino double nextafter(double, double); 234*05a0b428SJohn Marino double nexttoward(double, long double); 235*05a0b428SJohn Marino 236*05a0b428SJohn Marino double fdim(double, double); 237*05a0b428SJohn Marino double fmax(double, double); 238*05a0b428SJohn Marino double fmin(double, double); 239*05a0b428SJohn Marino 240*05a0b428SJohn Marino double fma(double, double, double); 241*05a0b428SJohn Marino #endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XPG_VISIBLE */ 242*05a0b428SJohn Marino 243*05a0b428SJohn Marino #if __BSD_VISIBLE || __XPG_VISIBLE 244*05a0b428SJohn Marino double j0(double); 245*05a0b428SJohn Marino double j1(double); 246*05a0b428SJohn Marino double jn(int, double); 247*05a0b428SJohn Marino double scalb(double, double); 248*05a0b428SJohn Marino double y0(double); 249*05a0b428SJohn Marino double y1(double); 250*05a0b428SJohn Marino double yn(int, double); 251*05a0b428SJohn Marino #endif /* __BSD_VISIBLE || __XPG_VISIBLE */ 252*05a0b428SJohn Marino 253*05a0b428SJohn Marino #if __BSD_VISIBLE || __XPG_VISIBLE <= 500 254*05a0b428SJohn Marino double gamma(double); 255*05a0b428SJohn Marino #endif /* __BSD_VISIBLE || __XPG_VISIBLE <= 500 */ 256*05a0b428SJohn Marino 257*05a0b428SJohn Marino /* 258*05a0b428SJohn Marino * BSD math library entry points 259*05a0b428SJohn Marino */ 260*05a0b428SJohn Marino #if __BSD_VISIBLE 261*05a0b428SJohn Marino double drem(double, double); 262*05a0b428SJohn Marino int finite(double); 263*05a0b428SJohn Marino 264*05a0b428SJohn Marino /* 265*05a0b428SJohn Marino * Reentrant version of gamma & lgamma; passes signgam back by reference 266*05a0b428SJohn Marino * as the second argument; user must allocate space for signgam. 267*05a0b428SJohn Marino */ 268*05a0b428SJohn Marino double gamma_r(double, int *); 269*05a0b428SJohn Marino double lgamma_r(double, int *); 270*05a0b428SJohn Marino 271*05a0b428SJohn Marino /* 272*05a0b428SJohn Marino * IEEE Test Vector 273*05a0b428SJohn Marino */ 274*05a0b428SJohn Marino double significand(double); 275*05a0b428SJohn Marino #endif /* __BSD_VISIBLE */ 276*05a0b428SJohn Marino 277*05a0b428SJohn Marino /* 278*05a0b428SJohn Marino * Float versions of C99 functions 279*05a0b428SJohn Marino */ 280*05a0b428SJohn Marino #if __ISO_C_VISIBLE >= 1999 281*05a0b428SJohn Marino float acosf(float); 282*05a0b428SJohn Marino float asinf(float); 283*05a0b428SJohn Marino float atanf(float); 284*05a0b428SJohn Marino float atan2f(float, float); 285*05a0b428SJohn Marino float cosf(float); 286*05a0b428SJohn Marino float sinf(float); 287*05a0b428SJohn Marino float tanf(float); 288*05a0b428SJohn Marino 289*05a0b428SJohn Marino float acoshf(float); 290*05a0b428SJohn Marino float asinhf(float); 291*05a0b428SJohn Marino float atanhf(float); 292*05a0b428SJohn Marino float coshf(float); 293*05a0b428SJohn Marino float sinhf(float); 294*05a0b428SJohn Marino float tanhf(float); 295*05a0b428SJohn Marino 296*05a0b428SJohn Marino float expf(float); 297*05a0b428SJohn Marino float exp2f(float); 298*05a0b428SJohn Marino float expm1f(float); 299*05a0b428SJohn Marino float frexpf(float, int *); 300*05a0b428SJohn Marino int ilogbf(float); 301*05a0b428SJohn Marino float ldexpf(float, int); 302*05a0b428SJohn Marino float logf(float); 303*05a0b428SJohn Marino float log10f(float); 304*05a0b428SJohn Marino float log1pf(float); 305*05a0b428SJohn Marino float log2f(float); 306*05a0b428SJohn Marino float logbf(float); 307*05a0b428SJohn Marino float modff(float, float *); 308*05a0b428SJohn Marino float scalbnf(float, int); 309*05a0b428SJohn Marino float scalblnf(float, long int); 310*05a0b428SJohn Marino 311*05a0b428SJohn Marino float cbrtf(float); 312*05a0b428SJohn Marino float fabsf(float); 313*05a0b428SJohn Marino float hypotf(float, float); 314*05a0b428SJohn Marino float powf(float, float); 315*05a0b428SJohn Marino float sqrtf(float); 316*05a0b428SJohn Marino 317*05a0b428SJohn Marino float erff(float); 318*05a0b428SJohn Marino float erfcf(float); 319*05a0b428SJohn Marino float lgammaf(float); 320*05a0b428SJohn Marino float tgammaf(float); 321*05a0b428SJohn Marino 322*05a0b428SJohn Marino float ceilf(float); 323*05a0b428SJohn Marino float floorf(float); 324*05a0b428SJohn Marino float nearbyintf(float); 325*05a0b428SJohn Marino float rintf(float); 326*05a0b428SJohn Marino long int lrintf(float); 327*05a0b428SJohn Marino long long int llrintf(float); 328*05a0b428SJohn Marino float roundf(float); 329*05a0b428SJohn Marino long int lroundf(float); 330*05a0b428SJohn Marino long long int llroundf(float); 331*05a0b428SJohn Marino float truncf(float); 332*05a0b428SJohn Marino 333*05a0b428SJohn Marino float fmodf(float, float); 334*05a0b428SJohn Marino float remainderf(float, float); 335*05a0b428SJohn Marino float remquof(float, float, int *); 336*05a0b428SJohn Marino 337*05a0b428SJohn Marino float copysignf(float, float); 338*05a0b428SJohn Marino float nanf(const char *); 339*05a0b428SJohn Marino float nextafterf(float, float); 340*05a0b428SJohn Marino float nexttowardf(float, long double); 341*05a0b428SJohn Marino 342*05a0b428SJohn Marino float fdimf(float, float); 343*05a0b428SJohn Marino float fmaxf(float, float); 344*05a0b428SJohn Marino float fminf(float, float); 345*05a0b428SJohn Marino 346*05a0b428SJohn Marino float fmaf(float, float, float); 347*05a0b428SJohn Marino #endif /* __ISO_C_VISIBLE >= 1999 */ 348*05a0b428SJohn Marino 349*05a0b428SJohn Marino #if __BSD_VISIBLE || __XPG_VISIBLE 350*05a0b428SJohn Marino float j0f(float); 351*05a0b428SJohn Marino float j1f(float); 352*05a0b428SJohn Marino float jnf(int, float); 353*05a0b428SJohn Marino float scalbf(float, float); 354*05a0b428SJohn Marino float y0f(float); 355*05a0b428SJohn Marino float y1f(float); 356*05a0b428SJohn Marino float ynf(int, float); 357*05a0b428SJohn Marino #endif /* __BSD_VISIBLE || __XPG_VISIBLE */ 358*05a0b428SJohn Marino 359*05a0b428SJohn Marino #if __BSD_VISIBLE || __XPG_VISIBLE <= 500 360*05a0b428SJohn Marino float gammaf(float); 361*05a0b428SJohn Marino #endif /* __BSD_VISIBLE || __XPG_VISIBLE <= 500 */ 362*05a0b428SJohn Marino 363*05a0b428SJohn Marino /* 364*05a0b428SJohn Marino * Float versions of BSD math library entry points 365*05a0b428SJohn Marino */ 366*05a0b428SJohn Marino #if __BSD_VISIBLE 367*05a0b428SJohn Marino float dremf(float, float); 368*05a0b428SJohn Marino int finitef(float); 369*05a0b428SJohn Marino int isinff(float); 370*05a0b428SJohn Marino int isnanf(float); 371*05a0b428SJohn Marino 372*05a0b428SJohn Marino /* 373*05a0b428SJohn Marino * Float versions of reentrant version of gamma & lgamma; passes 374*05a0b428SJohn Marino * signgam back by reference as the second argument; user must 375*05a0b428SJohn Marino * allocate space for signgam. 376*05a0b428SJohn Marino */ 377*05a0b428SJohn Marino float gammaf_r(float, int *); 378*05a0b428SJohn Marino float lgammaf_r(float, int *); 379*05a0b428SJohn Marino 380*05a0b428SJohn Marino /* 381*05a0b428SJohn Marino * Float version of IEEE Test Vector 382*05a0b428SJohn Marino */ 383*05a0b428SJohn Marino float significandf(float); 384*05a0b428SJohn Marino #endif /* __BSD_VISIBLE */ 385*05a0b428SJohn Marino 386*05a0b428SJohn Marino /* 387*05a0b428SJohn Marino * Long double versions of C99 functions 388*05a0b428SJohn Marino */ 389*05a0b428SJohn Marino #if __ISO_C_VISIBLE >= 1999 390*05a0b428SJohn Marino long double acosl(long double); 391*05a0b428SJohn Marino long double asinl(long double); 392*05a0b428SJohn Marino long double atanl(long double); 393*05a0b428SJohn Marino long double atan2l(long double, long double); 394*05a0b428SJohn Marino long double cosl(long double); 395*05a0b428SJohn Marino long double sinl(long double); 396*05a0b428SJohn Marino long double tanl(long double); 397*05a0b428SJohn Marino 398*05a0b428SJohn Marino long double acoshl(long double); 399*05a0b428SJohn Marino long double asinhl(long double); 400*05a0b428SJohn Marino long double atanhl(long double); 401*05a0b428SJohn Marino long double coshl(long double); 402*05a0b428SJohn Marino long double sinhl(long double); 403*05a0b428SJohn Marino long double tanhl(long double); 404*05a0b428SJohn Marino 405*05a0b428SJohn Marino long double expl(long double); 406*05a0b428SJohn Marino long double exp2l(long double); 407*05a0b428SJohn Marino long double expm1l(long double); 408*05a0b428SJohn Marino long double frexpl(long double, int *); 409*05a0b428SJohn Marino int ilogbl(long double); 410*05a0b428SJohn Marino long double ldexpl(long double, int); 411*05a0b428SJohn Marino long double logl(long double); 412*05a0b428SJohn Marino long double log10l(long double); 413*05a0b428SJohn Marino long double log1pl(long double); 414*05a0b428SJohn Marino long double log2l(long double); 415*05a0b428SJohn Marino long double logbl(long double); 416*05a0b428SJohn Marino long double modfl(long double, long double *); 417*05a0b428SJohn Marino long double scalbnl(long double, int); 418*05a0b428SJohn Marino long double scalblnl(long double, long int); 419*05a0b428SJohn Marino 420*05a0b428SJohn Marino long double cbrtl(long double); 421*05a0b428SJohn Marino long double fabsl(long double); 422*05a0b428SJohn Marino long double hypotl(long double, long double); 423*05a0b428SJohn Marino long double powl(long double, long double); 424*05a0b428SJohn Marino long double sqrtl(long double); 425*05a0b428SJohn Marino 426*05a0b428SJohn Marino long double erfl(long double); 427*05a0b428SJohn Marino long double erfcl(long double); 428*05a0b428SJohn Marino long double lgammal(long double); 429*05a0b428SJohn Marino long double tgammal(long double); 430*05a0b428SJohn Marino 431*05a0b428SJohn Marino long double ceill(long double); 432*05a0b428SJohn Marino long double floorl(long double); 433*05a0b428SJohn Marino long double nearbyintl(long double); 434*05a0b428SJohn Marino long double rintl(long double); 435*05a0b428SJohn Marino long int lrintl(long double); 436*05a0b428SJohn Marino long long int llrintl(long double); 437*05a0b428SJohn Marino long double roundl(long double); 438*05a0b428SJohn Marino long int lroundl(long double); 439*05a0b428SJohn Marino long long int llroundl(long double); 440*05a0b428SJohn Marino long double truncl(long double); 441*05a0b428SJohn Marino 442*05a0b428SJohn Marino long double fmodl(long double, long double); 443*05a0b428SJohn Marino long double remainderl(long double, long double); 444*05a0b428SJohn Marino long double remquol(long double, long double, int *); 445*05a0b428SJohn Marino 446*05a0b428SJohn Marino long double copysignl(long double, long double); 447*05a0b428SJohn Marino long double nanl(const char *); 448*05a0b428SJohn Marino long double nextafterl(long double, long double); 449*05a0b428SJohn Marino long double nexttowardl(long double, long double); 450*05a0b428SJohn Marino 451*05a0b428SJohn Marino long double fdiml(long double, long double); 452*05a0b428SJohn Marino long double fmaxl(long double, long double); 453*05a0b428SJohn Marino long double fminl(long double, long double); 454*05a0b428SJohn Marino 455*05a0b428SJohn Marino long double fmal(long double, long double, long double); 456*05a0b428SJohn Marino #endif /* __ISO_C_VISIBLE >= 1999 */ 457*05a0b428SJohn Marino 458*05a0b428SJohn Marino /* 459*05a0b428SJohn Marino * Library implementation 460*05a0b428SJohn Marino */ 461*05a0b428SJohn Marino int __fpclassify(double); 462*05a0b428SJohn Marino int __fpclassifyf(float); 463*05a0b428SJohn Marino int __fpclassifyl(long double); 464*05a0b428SJohn Marino int __isfinite(double); 465*05a0b428SJohn Marino int __isfinitef(float); 466*05a0b428SJohn Marino int __isfinitel(long double); 467*05a0b428SJohn Marino int __isinf(double); 468*05a0b428SJohn Marino int __isinff(float); 469*05a0b428SJohn Marino int __isinfl(long double); 470*05a0b428SJohn Marino int __isnan(double); 471*05a0b428SJohn Marino int __isnanf(float); 472*05a0b428SJohn Marino int __isnanl(long double); 473*05a0b428SJohn Marino int __isnormal(double); 474*05a0b428SJohn Marino int __isnormalf(float); 475*05a0b428SJohn Marino int __isnormall(long double); 476*05a0b428SJohn Marino int __signbit(double); 477*05a0b428SJohn Marino int __signbitf(float); 478*05a0b428SJohn Marino int __signbitl(long double); 479*05a0b428SJohn Marino 480*05a0b428SJohn Marino #if __BSD_VISIBLE && defined(__vax__) 481*05a0b428SJohn Marino double infnan(int); 482*05a0b428SJohn Marino #endif /* __BSD_VISIBLE && defined(__vax__) */ 483*05a0b428SJohn Marino __END_DECLS 484*05a0b428SJohn Marino 485*05a0b428SJohn Marino #endif /* !_MATH_H_ */ 486