xref: /openbsd-src/include/math.h (revision 6c6408334dbede3a2c0dcd9ff9c489157df0c856)
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