11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ====================================================
31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Developed at SunPro, a Sun Microsystems, Inc. business.
61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Permission to use, copy, modify, and distribute this
71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * software is freely granted, provided that this notice
81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * is preserved.
91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ====================================================
101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * from: @(#)fdlibm.h 5.1 93/09/24
14a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes * $FreeBSD$
151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _MATH_H_
181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	_MATH_H_
191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/cdefs.h>
211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <limits.h>
221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
23de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes__BEGIN_DECLS
24de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes#pragma GCC visibility push(default)
25de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes
261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANSI/POSIX
281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const union __infinity_un {
301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	unsigned char	__uc[8];
311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	double		__ud;
321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} __infinity;
331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const union __nan_un {
351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	unsigned char	__uc[sizeof(float)];
361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	float		__uf;
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} __nan;
381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
39b2eb09a9ed9e08d9e49f4245d1959b2ca3fbaaf8Elliott Hughes#if __GNUC_PREREQ(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	__MATH_BUILTIN_CONSTANTS
411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
43b2eb09a9ed9e08d9e49f4245d1959b2ca3fbaaf8Elliott Hughes#if __GNUC_PREREQ(3, 0) && !defined(__INTEL_COMPILER)
441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	__MATH_BUILTIN_RELOPS
451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
47a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#ifdef __MATH_BUILTIN_CONSTANTS
481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE_VAL	__builtin_huge_val()
491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else
501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE_VAL	(__infinity.__ud)
511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
53a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __ISO_C_VISIBLE >= 1999
54a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	FP_ILOGB0	(-INT_MAX) /* Android-changed */
55a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	FP_ILOGBNAN	INT_MAX /* Android-changed */
561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef __MATH_BUILTIN_CONSTANTS
581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE_VALF	__builtin_huge_valf()
591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE_VALL	__builtin_huge_vall()
60a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	INFINITY	__builtin_inff()
61a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	NAN		__builtin_nanf("")
621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else
631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE_VALF	(float)HUGE_VAL
641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE_VALL	(long double)HUGE_VAL
651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	INFINITY	HUGE_VALF
661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	NAN		(__nan.__uf)
671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* __MATH_BUILTIN_CONSTANTS */
681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	MATH_ERRNO	1
701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	MATH_ERREXCEPT	2
711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	math_errhandling	MATH_ERREXCEPT
721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
73a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	FP_FAST_FMAF	1
741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef __ia64__
75a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	FP_FAST_FMA	1
76a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#define	FP_FAST_FMAL	1
771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Symbolic constants to classify floating point numbers. */
801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	FP_INFINITE	0x01
811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	FP_NAN		0x02
821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	FP_NORMAL	0x04
831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	FP_SUBNORMAL	0x08
841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	FP_ZERO		0x10
851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	fpclassify(x) \
861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \
871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \
881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : __fpclassifyl(x))
891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isfinite(x)					\
911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    ((sizeof (x) == sizeof (float)) ? __isfinitef(x)	\
921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : (sizeof (x) == sizeof (double)) ? __isfinite(x)	\
931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : __isfinitel(x))
941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isinf(x)					\
951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    ((sizeof (x) == sizeof (float)) ? __isinff(x)	\
96a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes    : (sizeof (x) == sizeof (double)) ? isinf(x)	\
971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : __isinfl(x))
981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isnan(x)					\
99a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes    ((sizeof (x) == sizeof (float)) ? __isnanf(x)	\
1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : (sizeof (x) == sizeof (double)) ? isnan(x)	\
1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : __isnanl(x))
1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isnormal(x)					\
1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    ((sizeof (x) == sizeof (float)) ? __isnormalf(x)	\
1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : (sizeof (x) == sizeof (double)) ? __isnormal(x)	\
1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : __isnormall(x))
1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef __MATH_BUILTIN_RELOPS
1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isgreater(x, y)		__builtin_isgreater((x), (y))
1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isgreaterequal(x, y)	__builtin_isgreaterequal((x), (y))
1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isless(x, y)		__builtin_isless((x), (y))
1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	islessequal(x, y)	__builtin_islessequal((x), (y))
1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	islessgreater(x, y)	__builtin_islessgreater((x), (y))
1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isunordered(x, y)	__builtin_isunordered((x), (y))
1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else
1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isgreater(x, y)		(!isunordered((x), (y)) && (x) > (y))
1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isgreaterequal(x, y)	(!isunordered((x), (y)) && (x) >= (y))
1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isless(x, y)		(!isunordered((x), (y)) && (x) < (y))
1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	islessequal(x, y)	(!isunordered((x), (y)) && (x) <= (y))
1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	islessgreater(x, y)	(!isunordered((x), (y)) && \
1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project					((x) > (y) || (y) > (x)))
1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	isunordered(x, y)	(isnan(x) || isnan(y))
1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* __MATH_BUILTIN_RELOPS */
1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	signbit(x)					\
1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    ((sizeof (x) == sizeof (float)) ? __signbitf(x)	\
1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : (sizeof (x) == sizeof (double)) ? __signbit(x)	\
1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project    : __signbitl(x))
1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1299f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef double __double_t;
1309f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef __double_t double_t;
1319f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef float __float_t;
1329f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef __float_t float_t;
133a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __ISO_C_VISIBLE >= 1999 */
1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * XOPEN/SVID
1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
138a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __XSI_VISIBLE
1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_E		2.7182818284590452354	/* e */
1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LOG2E		1.4426950408889634074	/* log 2e */
1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LOG10E	0.43429448190325182765	/* log 10e */
1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LN2		0.69314718055994530942	/* log e2 */
1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LN10		2.30258509299404568402	/* log e10 */
1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_PI		3.14159265358979323846	/* pi */
1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_PI_2		1.57079632679489661923	/* pi/2 */
1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_PI_4		0.78539816339744830962	/* pi/4 */
1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_1_PI		0.31830988618379067154	/* 1/pi */
1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_2_PI		0.63661977236758134308	/* 2/pi */
1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	MAXFLOAT	((float)3.40282346638528860e+38)
1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern int signgam;
155a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if __BSD_VISIBLE
1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if 0
1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Old value from 4.4BSD-Lite math.h; this is probably better. */
1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE		HUGE_VAL
1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else
1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE		MAXFLOAT
1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* __BSD_VISIBLE */
1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Most of these functions depend on the rounding mode and have the side
1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * effect of raising floating-point exceptions, so they are not declared
1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * as __pure2.  In C99, FENV_ACCESS affects the purity of these functions.
1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
171de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes
1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANSI/POSIX
1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__fpclassifyd(double) __pure2;
1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__fpclassifyf(float) __pure2;
1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__fpclassifyl(long double) __pure2;
1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isfinitef(float) __pure2;
1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isfinite(double) __pure2;
1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isfinitel(long double) __pure2;
1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isinff(float) __pure2;
1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isinfl(long double) __pure2;
183a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesint	__isnanf(float) __pure2;
1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnanl(long double) __pure2;
1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnormalf(float) __pure2;
1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnormal(double) __pure2;
1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnormall(long double) __pure2;
1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__signbit(double) __pure2;
1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__signbitf(float) __pure2;
1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__signbitl(long double) __pure2;
1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	acos(double);
1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	asin(double);
1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	atan(double);
1951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	atan2(double, double);
1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	cos(double);
1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	sin(double);
1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	tan(double);
1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	cosh(double);
2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	sinh(double);
2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	tanh(double);
2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	exp(double);
2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	frexp(double, int *);	/* fundamentally !__pure2 */
2061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	ldexp(double, int);
2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	log(double);
2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	log10(double);
2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	modf(double, double *);	/* fundamentally !__pure2 */
2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	pow(double, double);
2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	sqrt(double);
2131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	ceil(double);
2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fabs(double) __pure2;
2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	floor(double);
2171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fmod(double, double);
2181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * These functions are not in C90.
2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
222a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
2231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	acosh(double);
2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	asinh(double);
2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	atanh(double);
2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	cbrt(double);
2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	erf(double);
2281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	erfc(double);
2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	exp2(double);
2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	expm1(double);
2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fma(double, double, double);
2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	hypot(double, double);
2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	ilogb(double) __pure2;
234a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesint	(isinf)(double) __pure2;
2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	(isnan)(double) __pure2;
2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	lgamma(double);
2371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llrint(double);
2381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llround(double);
2391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	log1p(double);
240a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesdouble	log2(double);
2411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	logb(double);
2421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lrint(double);
2431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lround(double);
2448e2ff164cc327aad8666333a1d75f86291858da0David 'Digit' Turnerdouble	nan(const char *) __pure2;
2451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	nextafter(double, double);
2461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	remainder(double, double);
2471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	remquo(double, double, int *);
2481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	rint(double);
249a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
2501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
251a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __XSI_VISIBLE
2521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	j0(double);
2531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	j1(double);
2541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	jn(int, double);
2551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	y0(double);
2561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	y1(double);
2571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	yn(int, double);
2581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
259a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
2601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	gamma(double);
261a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
262a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes
263a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE
264a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesdouble	scalb(double, double);
265a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
266a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
2671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
268a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
2691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	copysign(double, double) __pure2;
2701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fdim(double, double);
2711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fmax(double, double) __pure2;
2721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fmin(double, double) __pure2;
2731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	nearbyint(double);
2741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	round(double);
2751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	scalbln(double, long);
2761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	scalbn(double, int);
2771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	tgamma(double);
2781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	trunc(double);
279a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
2801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * BSD math library entry points
2831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
284a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE
2851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	drem(double, double);
2861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	finite(double) __pure2;
2871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	isnanf(float) __pure2;
288de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hugheslong double significandl(long double);
2891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Reentrant version of gamma & lgamma; passes signgam back by reference
2921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * as the second argument; user must allocate space for signgam.
2931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
2941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	gamma_r(double, int *);
2951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	lgamma_r(double, int *);
2961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * IEEE Test Vector
2991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
3001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	significand(double);
301a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE */
3021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* float versions of ANSI/POSIX functions */
304a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __ISO_C_VISIBLE >= 1999
3051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	acosf(float);
3061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	asinf(float);
3071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	atanf(float);
3081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	atan2f(float, float);
3091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	cosf(float);
3101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	sinf(float);
3111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	tanf(float);
3121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	coshf(float);
3141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	sinhf(float);
3151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	tanhf(float);
3161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	exp2f(float);
3181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	expf(float);
3191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	expm1f(float);
3201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	frexpf(float, int *);	/* fundamentally !__pure2 */
3211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	ilogbf(float) __pure2;
3221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	ldexpf(float, int);
3231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	log10f(float);
3241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	log1pf(float);
325a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesfloat	log2f(float);
3261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	logf(float);
3271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	modff(float, float *);	/* fundamentally !__pure2 */
3281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	powf(float, float);
3301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	sqrtf(float);
3311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	ceilf(float);
3331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fabsf(float) __pure2;
3341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	floorf(float);
3351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fmodf(float, float);
3361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	roundf(float);
3371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	erff(float);
3391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	erfcf(float);
3401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	hypotf(float, float);
3411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	lgammaf(float);
3428e2ff164cc327aad8666333a1d75f86291858da0David 'Digit' Turnerfloat	tgammaf(float);
3431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	acoshf(float);
3451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	asinhf(float);
3461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	atanhf(float);
3471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	cbrtf(float);
3481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	logbf(float);
3491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	copysignf(float, float) __pure2;
3501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llrintf(float);
3511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llroundf(float);
3521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lrintf(float);
3531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lroundf(float);
3548e2ff164cc327aad8666333a1d75f86291858da0David 'Digit' Turnerfloat	nanf(const char *) __pure2;
3551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	nearbyintf(float);
3561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	nextafterf(float, float);
3571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	remainderf(float, float);
3581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	remquof(float, float, int *);
3591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	rintf(float);
3601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	scalblnf(float, long);
3611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	scalbnf(float, int);
3621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	truncf(float);
3631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fdimf(float, float);
3651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fmaf(float, float, float);
3661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fmaxf(float, float) __pure2;
3671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fminf(float, float) __pure2;
368a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
3691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * float versions of BSD math library entry points
3721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
373a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE
3741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	dremf(float, float);
3751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	finitef(float) __pure2;
3761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	gammaf(float);
3771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	j0f(float);
3781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	j1f(float);
3791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	jnf(int, float);
3801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	scalbf(float, float);
3811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	y0f(float);
3821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	y1f(float);
3831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	ynf(int, float);
3841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Float versions of reentrant version of gamma & lgamma; passes
3871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * signgam back by reference as the second argument; user must
3881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * allocate space for signgam.
3891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
3901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	gammaf_r(float, int *);
3911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	lgammaf_r(float, int *);
3921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * float version of IEEE Test Vector
3951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
3961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	significandf(float);
397a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif	/* __BSD_VISIBLE */
3981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
4001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * long double versions of ISO/POSIX math functions
4011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
402a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __ISO_C_VISIBLE >= 1999
4039a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	acoshl(long double);
4041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	acosl(long double);
4059a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	asinhl(long double);
4061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	asinl(long double);
4071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	atan2l(long double, long double);
4089a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	atanhl(long double);
4091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	atanl(long double);
4101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	cbrtl(long double);
4111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	ceill(long double);
4121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	copysignl(long double, long double) __pure2;
4139a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	coshl(long double);
4141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	cosl(long double);
4159a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	erfcl(long double);
4169a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	erfl(long double);
4171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	exp2l(long double);
4181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	expl(long double);
4199a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	expm1l(long double);
4201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fabsl(long double) __pure2;
4211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fdiml(long double, long double);
4221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	floorl(long double);
4231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fmal(long double, long double, long double);
4241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fmaxl(long double, long double) __pure2;
4251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fminl(long double, long double) __pure2;
4261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fmodl(long double, long double);
4271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	frexpl(long double value, int *); /* fundamentally !__pure2 */
4281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	hypotl(long double, long double);
4291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint		ilogbl(long double) __pure2;
4301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	ldexpl(long double, int);
4319a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	lgammal(long double);
4321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long	llrintl(long double);
4331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long	llroundl(long double);
4349a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	log10l(long double);
4359a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	log1pl(long double);
4369a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	log2l(long double);
4371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	logbl(long double);
4389a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	logl(long double);
4391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong		lrintl(long double);
4401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong		lroundl(long double);
4411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	modfl(long double, long double *); /* fundamentally !__pure2 */
4421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nanl(const char *) __pure2;
4431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nearbyintl(long double);
4441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nextafterl(long double, long double);
4451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble		nexttoward(double, long double);
4461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat		nexttowardf(float, long double);
4471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nexttowardl(long double, long double);
4489a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	powl(long double, long double);
4491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	remainderl(long double, long double);
4501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	remquol(long double, long double, int *);
4511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	rintl(long double);
4521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	roundl(long double);
4531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	scalblnl(long double, long);
4541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	scalbnl(long double, int);
4559a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	sinhl(long double);
4561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	sinl(long double);
4571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	sqrtl(long double);
4589a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	tanhl(long double);
4591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	tanl(long double);
4609a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	tgammal(long double);
4611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	truncl(long double);
4621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
463a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __ISO_C_VISIBLE >= 1999 */
464b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes
465b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes#if defined(_GNU_SOURCE)
466b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughesvoid sincos(double, double*, double*);
467b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughesvoid sincosf(float, float*, float*);
468b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughesvoid sincosl(long double, long double*, long double*);
469b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes#endif /* _GNU_SOURCE */
470b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes
471de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes#pragma GCC visibility pop
4721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS
4731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* !_MATH_H_ */
475