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