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