12116Sjkh/* 22116Sjkh * ==================================================== 32116Sjkh * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 42116Sjkh * 52116Sjkh * Developed at SunPro, a Sun Microsystems, Inc. business. 62116Sjkh * Permission to use, copy, modify, and distribute this 78870Srgrimes * software is freely granted, provided that this notice 82116Sjkh * is preserved. 92116Sjkh * ==================================================== 102116Sjkh */ 112116Sjkh 122116Sjkh/* 132116Sjkh * from: @(#)fdlibm.h 5.1 93/09/24 1450476Speter * $FreeBSD$ 152116Sjkh */ 162116Sjkh 172116Sjkh#ifndef _MATH_H_ 1887805Sphantom#define _MATH_H_ 192116Sjkh 20130264Sdas#include <sys/cdefs.h> 21110566Smike#include <sys/_types.h> 22130713Sstefanf#include <machine/_limits.h> 23110566Smike 242116Sjkh/* 252116Sjkh * ANSI/POSIX 262116Sjkh */ 27106268Sarchieextern const union __infinity_un { 28106268Sarchie unsigned char __uc[8]; 29106268Sarchie double __ud; 30106268Sarchie} __infinity; 31110566Smike 32110566Smikeextern const union __nan_un { 33110566Smike unsigned char __uc[sizeof(float)]; 34110566Smike float __uf; 35110566Smike} __nan; 36110566Smike 37135360Sdas#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800) 38131851Sdas#define __MATH_BUILTIN_CONSTANTS 39131851Sdas#endif 40131851Sdas 41135360Sdas#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER) 42131851Sdas#define __MATH_BUILTIN_RELOPS 43131851Sdas#endif 44131851Sdas 45131851Sdas#ifdef __MATH_BUILTIN_CONSTANTS 46131851Sdas#define HUGE_VAL __builtin_huge_val() 47131851Sdas#else 48128628Sdas#define HUGE_VAL (__infinity.__ud) 49131851Sdas#endif 50128628Sdas 51128628Sdas#if __ISO_C_VISIBLE >= 1999 52130713Sstefanf#define FP_ILOGB0 (-__INT_MAX) 53130713Sstefanf#define FP_ILOGBNAN __INT_MAX 54131851Sdas 55131851Sdas#ifdef __MATH_BUILTIN_CONSTANTS 56131851Sdas#define HUGE_VALF __builtin_huge_valf() 57131851Sdas#define HUGE_VALL __builtin_huge_vall() 58186886Sdas#define INFINITY __builtin_inff() 59186886Sdas#define NAN __builtin_nanf("") 60131851Sdas#else 61110566Smike#define HUGE_VALF (float)HUGE_VAL 62110566Smike#define HUGE_VALL (long double)HUGE_VAL 63110566Smike#define INFINITY HUGE_VALF 64110566Smike#define NAN (__nan.__uf) 65131851Sdas#endif /* __MATH_BUILTIN_CONSTANTS */ 662116Sjkh 67126871Sbde#define MATH_ERRNO 1 68126871Sbde#define MATH_ERREXCEPT 2 69140265Sdas#define math_errhandling MATH_ERREXCEPT 70126871Sbde 71226374Sdas#define FP_FAST_FMAF 1 72226374Sdas#ifdef __ia64__ 73188272Sdas#define FP_FAST_FMA 1 74188272Sdas#define FP_FAST_FMAL 1 75143221Sdas#endif 76140609Sdas 77110566Smike/* Symbolic constants to classify floating point numbers. */ 78110769Smike#define FP_INFINITE 0x01 79110769Smike#define FP_NAN 0x02 80110769Smike#define FP_NORMAL 0x04 81110769Smike#define FP_SUBNORMAL 0x08 82110769Smike#define FP_ZERO 0x10 83253215Stheraven 84253260Stheraven#if (__STDC_VERSION__ >= 201112L && defined(__clang__)) || \ 85253260Stheraven __has_extension(c_generic_selections) 86253766Stheraven#define __fp_type_select(x, f, d, ld) _Generic((x), \ 87253319Stheraven float: f(x), \ 88253319Stheraven double: d(x), \ 89253766Stheraven long double: ld(x), \ 90253766Stheraven volatile float: f(x), \ 91253766Stheraven volatile double: d(x), \ 92253766Stheraven volatile long double: ld(x), \ 93253766Stheraven volatile const float: f(x), \ 94253766Stheraven volatile const double: d(x), \ 95253766Stheraven volatile const long double: ld(x), \ 96253766Stheraven const float: f(x), \ 97253766Stheraven const double: d(x), \ 98253766Stheraven const long double: ld(x)) 99253260Stheraven#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus) 100253319Stheraven#define __fp_type_select(x, f, d, ld) __builtin_choose_expr( \ 101253319Stheraven __builtin_types_compatible_p(__typeof(x), long double), ld(x), \ 102253319Stheraven __builtin_choose_expr( \ 103253319Stheraven __builtin_types_compatible_p(__typeof(x), double), d(x), \ 104253319Stheraven __builtin_choose_expr( \ 105253319Stheraven __builtin_types_compatible_p(__typeof(x), float), f(x), (void)0))) 106253215Stheraven#else 107253319Stheraven#define __fp_type_select(x, f, d, ld) \ 108253319Stheraven ((sizeof(x) == sizeof(float)) ? f(x) \ 109253319Stheraven : (sizeof(x) == sizeof(double)) ? d(x) \ 110253319Stheraven : ld(x)) 111253215Stheraven#endif 112253215Stheraven 113110566Smike#define fpclassify(x) \ 114253219Stheraven __fp_type_select(x, __fpclassifyf, __fpclassifyd, __fpclassifyl) 115253215Stheraven#define isfinite(x) __fp_type_select(x, __isfinitef, __isfinite, __isfinitel) 116253215Stheraven#define isinf(x) __fp_type_select(x, __isinff, __isinf, __isinfl) 117253215Stheraven#define isnan(x) \ 118253215Stheraven __fp_type_select(x, __inline_isnanf, __inline_isnan, __inline_isnanl) 119253215Stheraven#define isnormal(x) __fp_type_select(x, __isnormalf, __isnormal, __isnormall) 120110769Smike 121131851Sdas#ifdef __MATH_BUILTIN_RELOPS 122131851Sdas#define isgreater(x, y) __builtin_isgreater((x), (y)) 123131851Sdas#define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y)) 124131851Sdas#define isless(x, y) __builtin_isless((x), (y)) 125131851Sdas#define islessequal(x, y) __builtin_islessequal((x), (y)) 126131851Sdas#define islessgreater(x, y) __builtin_islessgreater((x), (y)) 127131851Sdas#define isunordered(x, y) __builtin_isunordered((x), (y)) 128131851Sdas#else 129110769Smike#define isgreater(x, y) (!isunordered((x), (y)) && (x) > (y)) 130110769Smike#define isgreaterequal(x, y) (!isunordered((x), (y)) && (x) >= (y)) 131110769Smike#define isless(x, y) (!isunordered((x), (y)) && (x) < (y)) 132110769Smike#define islessequal(x, y) (!isunordered((x), (y)) && (x) <= (y)) 133110769Smike#define islessgreater(x, y) (!isunordered((x), (y)) && \ 134110769Smike ((x) > (y) || (y) > (x))) 135110769Smike#define isunordered(x, y) (isnan(x) || isnan(y)) 136131851Sdas#endif /* __MATH_BUILTIN_RELOPS */ 137110769Smike 138253215Stheraven#define signbit(x) __fp_type_select(x, __signbitf, __signbit, __signbitl) 139110566Smike 140110566Smiketypedef __double_t double_t; 141110566Smiketypedef __float_t float_t; 142128628Sdas#endif /* __ISO_C_VISIBLE >= 1999 */ 143110566Smike 1442116Sjkh/* 1452116Sjkh * XOPEN/SVID 1462116Sjkh */ 147128628Sdas#if __BSD_VISIBLE || __XSI_VISIBLE 1482116Sjkh#define M_E 2.7182818284590452354 /* e */ 1492116Sjkh#define M_LOG2E 1.4426950408889634074 /* log 2e */ 1502116Sjkh#define M_LOG10E 0.43429448190325182765 /* log 10e */ 1512116Sjkh#define M_LN2 0.69314718055994530942 /* log e2 */ 1522116Sjkh#define M_LN10 2.30258509299404568402 /* log e10 */ 1532116Sjkh#define M_PI 3.14159265358979323846 /* pi */ 1542116Sjkh#define M_PI_2 1.57079632679489661923 /* pi/2 */ 1552116Sjkh#define M_PI_4 0.78539816339744830962 /* pi/4 */ 1562116Sjkh#define M_1_PI 0.31830988618379067154 /* 1/pi */ 1572116Sjkh#define M_2_PI 0.63661977236758134308 /* 2/pi */ 1582116Sjkh#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ 1592116Sjkh#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ 1602116Sjkh#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ 1612116Sjkh 1622116Sjkh#define MAXFLOAT ((float)3.40282346638528860e+38) 1632116Sjkhextern int signgam; 164128628Sdas#endif /* __BSD_VISIBLE || __XSI_VISIBLE */ 1652116Sjkh 166128628Sdas#if __BSD_VISIBLE 167140270Sdas#if 0 168140270Sdas/* Old value from 4.4BSD-Lite math.h; this is probably better. */ 169140270Sdas#define HUGE HUGE_VAL 170140270Sdas#else 171140270Sdas#define HUGE MAXFLOAT 172140270Sdas#endif 173128628Sdas#endif /* __BSD_VISIBLE */ 1742116Sjkh 175104280Sbde/* 176140274Sdas * Most of these functions depend on the rounding mode and have the side 177140274Sdas * effect of raising floating-point exceptions, so they are not declared 178140274Sdas * as __pure2. In C99, FENV_ACCESS affects the purity of these functions. 179104280Sbde */ 18093197Sbde__BEGIN_DECLS 1812116Sjkh/* 1822116Sjkh * ANSI/POSIX 1832116Sjkh */ 184110769Smikeint __fpclassifyd(double) __pure2; 185110769Smikeint __fpclassifyf(float) __pure2; 186110769Smikeint __fpclassifyl(long double) __pure2; 187131852Sdasint __isfinitef(float) __pure2; 188131852Sdasint __isfinite(double) __pure2; 189131852Sdasint __isfinitel(long double) __pure2; 190131852Sdasint __isinff(float) __pure2; 191253215Stheravenint __isinf(double) __pure2; 192131852Sdasint __isinfl(long double) __pure2; 193131852Sdasint __isnormalf(float) __pure2; 194131852Sdasint __isnormal(double) __pure2; 195131852Sdasint __isnormall(long double) __pure2; 196110769Smikeint __signbit(double) __pure2; 197132382Sdasint __signbitf(float) __pure2; 198132382Sdasint __signbitl(long double) __pure2; 199110566Smike 200253215Stheravenstatic __inline int 201253319Stheraven__inline_isnan(__const double __x) 202253215Stheraven{ 203253215Stheraven 204253215Stheraven return (__x != __x); 205253215Stheraven} 206253215Stheraven 207253215Stheravenstatic __inline int 208253319Stheraven__inline_isnanf(__const float __x) 209253215Stheraven{ 210253215Stheraven 211253215Stheraven return (__x != __x); 212253215Stheraven} 213253215Stheraven 214253215Stheravenstatic __inline int 215253319Stheraven__inline_isnanl(__const long double __x) 216253215Stheraven{ 217253215Stheraven 218253215Stheraven return (__x != __x); 219253215Stheraven} 220253215Stheraven 221253764Stheraven/* 222253764Stheraven * Version 2 of the Single UNIX Specification (UNIX98) defined isnan() and 223253764Stheraven * isinf() as functions taking double. C99, and the subsequent POSIX revisions 224253764Stheraven * (SUSv3, POSIX.1-2001, define it as a macro that accepts any real floating 225253764Stheraven * point type. If we are targeting SUSv2 and C99 or C11 (or C++11) then we 226253764Stheraven * expose the newer definition, assuming that the language spec takes 227253764Stheraven * precedence over the operating system interface spec. 228253764Stheraven */ 229253764Stheraven#if __XSI_VISIBLE > 0 && __XSI_VISIBLE < 600 && __ISO_C_VISIBLE < 1999 230253764Stheraven#undef isinf 231253764Stheraven#undef isnan 232253764Stheravenint isinf(double); 233253764Stheravenint isnan(double); 234253764Stheraven#endif 235253764Stheraven 23692917Sobriendouble acos(double); 23792917Sobriendouble asin(double); 23892917Sobriendouble atan(double); 23992917Sobriendouble atan2(double, double); 24092917Sobriendouble cos(double); 24192917Sobriendouble sin(double); 24292917Sobriendouble tan(double); 2432116Sjkh 24492917Sobriendouble cosh(double); 24592917Sobriendouble sinh(double); 24692917Sobriendouble tanh(double); 2472116Sjkh 24892917Sobriendouble exp(double); 249104280Sbdedouble frexp(double, int *); /* fundamentally !__pure2 */ 25092917Sobriendouble ldexp(double, int); 25192917Sobriendouble log(double); 25292917Sobriendouble log10(double); 253104280Sbdedouble modf(double, double *); /* fundamentally !__pure2 */ 2542116Sjkh 25592917Sobriendouble pow(double, double); 25692917Sobriendouble sqrt(double); 2572116Sjkh 25892917Sobriendouble ceil(double); 259140274Sdasdouble fabs(double) __pure2; 26092917Sobriendouble floor(double); 26192917Sobriendouble fmod(double, double); 2622116Sjkh 263104280Sbde/* 264140274Sdas * These functions are not in C90. 265104280Sbde */ 266128628Sdas#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE 267128628Sdasdouble acosh(double); 268128628Sdasdouble asinh(double); 269128628Sdasdouble atanh(double); 270140274Sdasdouble cbrt(double); 27192917Sobriendouble erf(double); 272140274Sdasdouble erfc(double); 273144648Sdasdouble exp2(double); 274140274Sdasdouble expm1(double); 275143777Sdasdouble fma(double, double, double); 27692917Sobriendouble hypot(double, double); 277140274Sdasint ilogb(double) __pure2; 278128628Sdasdouble lgamma(double); 279140088Sdaslong long llrint(double); 280140088Sdaslong long llround(double); 281140274Sdasdouble log1p(double); 282216211Sdasdouble log2(double); 283140274Sdasdouble logb(double); 284140088Sdaslong lrint(double); 285140088Sdaslong lround(double); 286174684Sdasdouble nan(const char *) __pure2; 287128628Sdasdouble nextafter(double, double); 288128628Sdasdouble remainder(double, double); 289144091Sdasdouble remquo(double, double, int *); 290140274Sdasdouble rint(double); 291128628Sdas#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ 292128628Sdas 293128628Sdas#if __BSD_VISIBLE || __XSI_VISIBLE 29492917Sobriendouble j0(double); 29592917Sobriendouble j1(double); 29692917Sobriendouble jn(int, double); 29792917Sobriendouble y0(double); 29892917Sobriendouble y1(double); 29992917Sobriendouble yn(int, double); 3002116Sjkh 301128628Sdas#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE 302128628Sdasdouble gamma(double); 30328971Sbde#endif 304189805Sdas 305189805Sdas#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE 306189805Sdasdouble scalb(double, double); 307189805Sdas#endif 308128628Sdas#endif /* __BSD_VISIBLE || __XSI_VISIBLE */ 3092116Sjkh 310128628Sdas#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 311104280Sbdedouble copysign(double, double) __pure2; 312132292Sstefanfdouble fdim(double, double); 313132292Sstefanfdouble fmax(double, double) __pure2; 314132292Sstefanfdouble fmin(double, double) __pure2; 315140274Sdasdouble nearbyint(double); 316132292Sstefanfdouble round(double); 317130768Sdasdouble scalbln(double, long); 31892917Sobriendouble scalbn(double, int); 319128628Sdasdouble tgamma(double); 320132292Sstefanfdouble trunc(double); 321128628Sdas#endif 3222116Sjkh 3232116Sjkh/* 3242116Sjkh * BSD math library entry points 3252116Sjkh */ 326128628Sdas#if __BSD_VISIBLE 32792917Sobriendouble drem(double, double); 328128628Sdasint finite(double) __pure2; 329131852Sdasint isnanf(float) __pure2; 3302116Sjkh 3312116Sjkh/* 3322116Sjkh * Reentrant version of gamma & lgamma; passes signgam back by reference 3332116Sjkh * as the second argument; user must allocate space for signgam. 3342116Sjkh */ 33592917Sobriendouble gamma_r(double, int *); 33692917Sobriendouble lgamma_r(double, int *); 337128628Sdas 338128628Sdas/* 339128628Sdas * IEEE Test Vector 340128628Sdas */ 341128628Sdasdouble significand(double); 342111546Simp#endif /* __BSD_VISIBLE */ 3432116Sjkh 3442116Sjkh/* float versions of ANSI/POSIX functions */ 345128628Sdas#if __ISO_C_VISIBLE >= 1999 34692917Sobrienfloat acosf(float); 34792917Sobrienfloat asinf(float); 34892917Sobrienfloat atanf(float); 34992917Sobrienfloat atan2f(float, float); 35092917Sobrienfloat cosf(float); 35192917Sobrienfloat sinf(float); 35292917Sobrienfloat tanf(float); 3532116Sjkh 35492917Sobrienfloat coshf(float); 35592917Sobrienfloat sinhf(float); 35692917Sobrienfloat tanhf(float); 3572116Sjkh 358144648Sdasfloat exp2f(float); 35992917Sobrienfloat expf(float); 360140274Sdasfloat expm1f(float); 361104280Sbdefloat frexpf(float, int *); /* fundamentally !__pure2 */ 362140274Sdasint ilogbf(float) __pure2; 36392917Sobrienfloat ldexpf(float, int); 364128628Sdasfloat log10f(float); 365140274Sdasfloat log1pf(float); 366216211Sdasfloat log2f(float); 36792917Sobrienfloat logf(float); 368104280Sbdefloat modff(float, float *); /* fundamentally !__pure2 */ 3692116Sjkh 37092917Sobrienfloat powf(float, float); 37192917Sobrienfloat sqrtf(float); 3722116Sjkh 37392917Sobrienfloat ceilf(float); 374140274Sdasfloat fabsf(float) __pure2; 37592917Sobrienfloat floorf(float); 37692917Sobrienfloat fmodf(float, float); 377130179Sdasfloat roundf(float); 3782116Sjkh 37992917Sobrienfloat erff(float); 380140274Sdasfloat erfcf(float); 381140274Sdasfloat hypotf(float, float); 38292917Sobrienfloat lgammaf(float); 383176388Sdasfloat tgammaf(float); 3842116Sjkh 38592917Sobrienfloat acoshf(float); 38692917Sobrienfloat asinhf(float); 38792917Sobrienfloat atanhf(float); 388140274Sdasfloat cbrtf(float); 389140274Sdasfloat logbf(float); 390128628Sdasfloat copysignf(float, float) __pure2; 391140088Sdaslong long llrintf(float); 392140088Sdaslong long llroundf(float); 393140088Sdaslong lrintf(float); 394140088Sdaslong lroundf(float); 395174684Sdasfloat nanf(const char *) __pure2; 396140274Sdasfloat nearbyintf(float); 39792917Sobrienfloat nextafterf(float, float); 39892917Sobrienfloat remainderf(float, float); 399144091Sdasfloat remquof(float, float, int *); 40092917Sobrienfloat rintf(float); 401130768Sdasfloat scalblnf(float, long); 40292917Sobrienfloat scalbnf(float, int); 403130768Sdasfloat truncf(float); 404131320Sdas 405131320Sdasfloat fdimf(float, float); 406143777Sdasfloat fmaf(float, float, float); 407131320Sdasfloat fmaxf(float, float) __pure2; 408131320Sdasfloat fminf(float, float) __pure2; 409128628Sdas#endif 4102116Sjkh 4112116Sjkh/* 4122116Sjkh * float versions of BSD math library entry points 4132116Sjkh */ 414128628Sdas#if __BSD_VISIBLE 41592917Sobrienfloat dremf(float, float); 416128628Sdasint finitef(float) __pure2; 417128628Sdasfloat gammaf(float); 418128628Sdasfloat j0f(float); 419128628Sdasfloat j1f(float); 420128628Sdasfloat jnf(int, float); 421128628Sdasfloat scalbf(float, float); 422128628Sdasfloat y0f(float); 423128628Sdasfloat y1f(float); 424128628Sdasfloat ynf(int, float); 4252116Sjkh 4262116Sjkh/* 4272116Sjkh * Float versions of reentrant version of gamma & lgamma; passes 4282116Sjkh * signgam back by reference as the second argument; user must 4292116Sjkh * allocate space for signgam. 4302116Sjkh */ 43192917Sobrienfloat gammaf_r(float, int *); 43292917Sobrienfloat lgammaf_r(float, int *); 433128628Sdas 434128628Sdas/* 435128628Sdas * float version of IEEE Test Vector 436128628Sdas */ 437128628Sdasfloat significandf(float); 438111546Simp#endif /* __BSD_VISIBLE */ 4392116Sjkh 440121418Sdes/* 441121418Sdes * long double versions of ISO/POSIX math functions 442121418Sdes */ 443128628Sdas#if __ISO_C_VISIBLE >= 1999 444251599Sdaslong double acoshl(long double); 445121418Sdeslong double acosl(long double); 446251599Sdaslong double asinhl(long double); 447121418Sdeslong double asinl(long double); 448121418Sdeslong double atan2l(long double, long double); 449251599Sdaslong double atanhl(long double); 450121418Sdeslong double atanl(long double); 451121418Sdeslong double cbrtl(long double); 452121418Sdeslong double ceill(long double); 453140274Sdaslong double copysignl(long double, long double) __pure2; 454271779Stijllong double coshl(long double); 455121418Sdeslong double cosl(long double); 456271779Stijllong double erfcl(long double); 457271779Stijllong double erfl(long double); 458121418Sdeslong double exp2l(long double); 459238722Skargllong double expl(long double); 460251343Skargllong double expm1l(long double); 461140274Sdaslong double fabsl(long double) __pure2; 462131320Sdaslong double fdiml(long double, long double); 463140142Sstefanflong double floorl(long double); 464121418Sdeslong double fmal(long double, long double, long double); 465131320Sdaslong double fmaxl(long double, long double) __pure2; 466131320Sdaslong double fminl(long double, long double) __pure2; 467121418Sdeslong double fmodl(long double, long double); 468140274Sdaslong double frexpl(long double value, int *); /* fundamentally !__pure2 */ 469121418Sdeslong double hypotl(long double, long double); 470140274Sdasint ilogbl(long double) __pure2; 471143221Sdaslong double ldexpl(long double, int); 472271779Stijllong double lgammal(long double); 473121418Sdeslong long llrintl(long double); 474121418Sdeslong long llroundl(long double); 475251292Sdaslong double log10l(long double); 476251292Sdaslong double log1pl(long double); 477251292Sdaslong double log2l(long double); 478121418Sdeslong double logbl(long double); 479251292Sdaslong double logl(long double); 480121418Sdeslong lrintl(long double); 481121418Sdeslong lroundl(long double); 482165855Sdaslong double modfl(long double, long double *); /* fundamentally !__pure2 */ 483174684Sdaslong double nanl(const char *) __pure2; 484121418Sdeslong double nearbyintl(long double); 485121418Sdeslong double nextafterl(long double, long double); 486121418Sdesdouble nexttoward(double, long double); 487121418Sdesfloat nexttowardf(float, long double); 488121418Sdeslong double nexttowardl(long double, long double); 489271779Stijllong double powl(long double, long double); 490121418Sdeslong double remainderl(long double, long double); 491121418Sdeslong double remquol(long double, long double, int *); 492121418Sdeslong double rintl(long double); 493121418Sdeslong double roundl(long double); 494121418Sdeslong double scalblnl(long double, long); 495121418Sdeslong double scalbnl(long double, int); 496271779Stijllong double sinhl(long double); 497121418Sdeslong double sinl(long double); 498176720Sdaslong double sqrtl(long double); 499271779Stijllong double tanhl(long double); 500121418Sdeslong double tanl(long double); 501271779Stijllong double tgammal(long double); 502121418Sdeslong double truncl(long double); 503121418Sdes 504128628Sdas#endif /* __ISO_C_VISIBLE >= 1999 */ 5052116Sjkh__END_DECLS 5062116Sjkh 50787805Sphantom#endif /* !_MATH_H_ */ 508