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_
18b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#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
23f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes#if !defined(__BIONIC_NO_MATH_INLINES)
24f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes#define __BIONIC_MATH_INLINE(__def) extern __inline__ __always_inline __attribute__((gnu_inline)) __attribute__((__artificial__)) __def
25f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes#else
26f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes#define __BIONIC_MATH_INLINE(__def)
27f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes#endif
28f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes
29de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes__BEGIN_DECLS
30de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes#pragma GCC visibility push(default)
31de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes
32b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define HUGE_VAL	__builtin_huge_val()
331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
34a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __ISO_C_VISIBLE >= 1999
35b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_ILOGB0	(-INT_MAX)
36b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_ILOGBNAN	INT_MAX
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
38b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define HUGE_VALF	__builtin_huge_valf()
39b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define HUGE_VALL	__builtin_huge_vall()
40b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define INFINITY	__builtin_inff()
41b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define NAN		__builtin_nanf("")
421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
43b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define MATH_ERRNO	1
44b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define MATH_ERREXCEPT	2
45b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define math_errhandling	MATH_ERREXCEPT
461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
47b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#if defined(__FP_FAST_FMA)
48b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_FAST_FMA 1
49b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#endif
50b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#if defined(__FP_FAST_FMAF)
51b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_FAST_FMAF 1
52b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#endif
53b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#if defined(__FP_FAST_FMAL)
54b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_FAST_FMAL 1
551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Symbolic constants to classify floating point numbers. */
58b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_INFINITE	0x01
59b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_NAN		0x02
60b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_NORMAL	0x04
61b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_SUBNORMAL	0x08
62b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_ZERO		0x10
63b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define fpclassify(x) \
64b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes    __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
65b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes
66b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isfinite(x) __builtin_isfinite(x)
67b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isinf(x) __builtin_isinf(x)
68b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isnan(x) __builtin_isnan(x)
69b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isnormal(x) __builtin_isnormal(x)
70b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes
71b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isgreater(x, y) __builtin_isgreater((x), (y))
72b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y))
73b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isless(x, y) __builtin_isless((x), (y))
74b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define islessequal(x, y) __builtin_islessequal((x), (y))
75b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define islessgreater(x, y) __builtin_islessgreater((x), (y))
76b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isunordered(x, y) __builtin_isunordered((x), (y))
77b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes
78b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define signbit(x) \
79b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes    ((sizeof(x) == sizeof(float)) ? __builtin_signbitf(x) \
80b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes    : (sizeof(x) == sizeof(double)) ? __builtin_signbit(x) \
81b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes    : __builtin_signbitl(x))
821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
839f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef double __double_t;
849f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef __double_t double_t;
859f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef float __float_t;
869f87a0b285128542a221f2b69d3b959a4e33c054Elliott Hughestypedef __float_t float_t;
87a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __ISO_C_VISIBLE >= 1999 */
881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * XOPEN/SVID
911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
92a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __XSI_VISIBLE
931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_E		2.7182818284590452354	/* e */
941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LOG2E		1.4426950408889634074	/* log 2e */
951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LOG10E	0.43429448190325182765	/* log 10e */
961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LN2		0.69314718055994530942	/* log e2 */
971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_LN10		2.30258509299404568402	/* log e10 */
981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_PI		3.14159265358979323846	/* pi */
991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_PI_2		1.57079632679489661923	/* pi/2 */
1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_PI_4		0.78539816339744830962	/* pi/4 */
1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_1_PI		0.31830988618379067154	/* 1/pi */
1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_2_PI		0.63661977236758134308	/* 2/pi */
1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	MAXFLOAT	((float)3.40282346638528860e+38)
1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern int signgam;
109a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if __BSD_VISIBLE
1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if 0
1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Old value from 4.4BSD-Lite math.h; this is probably better. */
1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE		HUGE_VAL
1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else
1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	HUGE		MAXFLOAT
1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* __BSD_VISIBLE */
1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Most of these functions depend on the rounding mode and have the side
1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * effect of raising floating-point exceptions, so they are not declared
1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * as __pure2.  In C99, FENV_ACCESS affects the purity of these functions.
1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
125de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes
1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANSI/POSIX
1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__fpclassifyd(double) __pure2;
1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__fpclassifyf(float) __pure2;
1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__fpclassifyl(long double) __pure2;
1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isfinitef(float) __pure2;
1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isfinite(double) __pure2;
1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isfinitel(long double) __pure2;
1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isinff(float) __pure2;
1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isinfl(long double) __pure2;
137a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesint	__isnanf(float) __pure2;
1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnanl(long double) __pure2;
1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnormalf(float) __pure2;
1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnormal(double) __pure2;
1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__isnormall(long double) __pure2;
1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__signbit(double) __pure2;
1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__signbitf(float) __pure2;
1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	__signbitl(long double) __pure2;
1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	acos(double);
1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	asin(double);
1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	atan(double);
1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	atan2(double, double);
1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	cos(double);
1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	sin(double);
1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	tan(double);
1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	cosh(double);
1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	sinh(double);
1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	tanh(double);
1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	exp(double);
1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	frexp(double, int *);	/* fundamentally !__pure2 */
1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	ldexp(double, int);
1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	log(double);
1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	log10(double);
1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	modf(double, double *);	/* fundamentally !__pure2 */
1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	pow(double, double);
1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	sqrt(double);
1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	ceil(double);
1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fabs(double) __pure2;
170f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes__BIONIC_MATH_INLINE(double fabs(double x) { return __builtin_fabs(x); })
1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	floor(double);
1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fmod(double, double);
1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * These functions are not in C90.
1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
177a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	acosh(double);
1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	asinh(double);
1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	atanh(double);
1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	cbrt(double);
1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	erf(double);
1831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	erfc(double);
1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	exp2(double);
1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	expm1(double);
1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fma(double, double, double);
1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	hypot(double, double);
1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	ilogb(double) __pure2;
189a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesint	(isinf)(double) __pure2;
1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	(isnan)(double) __pure2;
1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	lgamma(double);
1921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llrint(double);
1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llround(double);
1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	log1p(double);
195a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesdouble	log2(double);
1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	logb(double);
1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lrint(double);
1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lround(double);
1998e2ff164cc327aad8666333a1d75f86291858da0David 'Digit' Turnerdouble	nan(const char *) __pure2;
2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	nextafter(double, double);
2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	remainder(double, double);
2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	remquo(double, double, int *);
2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	rint(double);
204a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
206a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __XSI_VISIBLE
2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	j0(double);
2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	j1(double);
2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	jn(int, double);
2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	y0(double);
2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	y1(double);
2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	yn(int, double);
2131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
214a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	gamma(double);
216a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
217a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes
218a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE
219a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesdouble	scalb(double, double);
220a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
221a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
223a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	copysign(double, double) __pure2;
2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fdim(double, double);
2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fmax(double, double) __pure2;
2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	fmin(double, double) __pure2;
2281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	nearbyint(double);
2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	round(double);
2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	scalbln(double, long);
2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	scalbn(double, int);
2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	tgamma(double);
2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	trunc(double);
234a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * BSD math library entry points
2381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
239a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE
2401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	drem(double, double);
2411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	finite(double) __pure2;
2421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	isnanf(float) __pure2;
243de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hugheslong double significandl(long double);
2441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Reentrant version of gamma & lgamma; passes signgam back by reference
2471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * as the second argument; user must allocate space for signgam.
2481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
2491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	gamma_r(double, int *);
2501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	lgamma_r(double, int *);
2511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
2531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * IEEE Test Vector
2541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
2551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble	significand(double);
256a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __BSD_VISIBLE */
2571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* float versions of ANSI/POSIX functions */
259a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __ISO_C_VISIBLE >= 1999
2601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	acosf(float);
2611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	asinf(float);
2621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	atanf(float);
2631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	atan2f(float, float);
2641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	cosf(float);
2651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	sinf(float);
2661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	tanf(float);
2671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	coshf(float);
2691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	sinhf(float);
2701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	tanhf(float);
2711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	exp2f(float);
2731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	expf(float);
2741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	expm1f(float);
2751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	frexpf(float, int *);	/* fundamentally !__pure2 */
2761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	ilogbf(float) __pure2;
2771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	ldexpf(float, int);
2781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	log10f(float);
2791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	log1pf(float);
280a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughesfloat	log2f(float);
2811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	logf(float);
2821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	modff(float, float *);	/* fundamentally !__pure2 */
2831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	powf(float, float);
2851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	sqrtf(float);
2861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	ceilf(float);
2881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fabsf(float) __pure2;
289f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes__BIONIC_MATH_INLINE(float fabsf(float x) { return __builtin_fabsf(x); })
2901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	floorf(float);
2911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fmodf(float, float);
2921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	roundf(float);
2931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	erff(float);
2951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	erfcf(float);
2961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	hypotf(float, float);
2971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	lgammaf(float);
2988e2ff164cc327aad8666333a1d75f86291858da0David 'Digit' Turnerfloat	tgammaf(float);
2991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	acoshf(float);
3011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	asinhf(float);
3021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	atanhf(float);
3031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	cbrtf(float);
3041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	logbf(float);
3051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	copysignf(float, float) __pure2;
3061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llrintf(float);
3071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long llroundf(float);
3081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lrintf(float);
3091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong	lroundf(float);
3108e2ff164cc327aad8666333a1d75f86291858da0David 'Digit' Turnerfloat	nanf(const char *) __pure2;
3111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	nearbyintf(float);
3121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	nextafterf(float, float);
3131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	remainderf(float, float);
3141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	remquof(float, float, int *);
3151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	rintf(float);
3161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	scalblnf(float, long);
3171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	scalbnf(float, int);
3181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	truncf(float);
3191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fdimf(float, float);
3211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fmaf(float, float, float);
3221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fmaxf(float, float) __pure2;
3231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	fminf(float, float) __pure2;
324a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif
3251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * float versions of BSD math library entry points
3281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
329a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __BSD_VISIBLE
3301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	dremf(float, float);
3311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint	finitef(float) __pure2;
3321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	gammaf(float);
3331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	j0f(float);
3341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	j1f(float);
3351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	jnf(int, float);
3361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	scalbf(float, float);
3371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	y0f(float);
3381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	y1f(float);
3391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	ynf(int, float);
3401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Float versions of reentrant version of gamma & lgamma; passes
3431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * signgam back by reference as the second argument; user must
3441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * allocate space for signgam.
3451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
3461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	gammaf_r(float, int *);
3471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	lgammaf_r(float, int *);
3481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * float version of IEEE Test Vector
3511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
3521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat	significandf(float);
353a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif	/* __BSD_VISIBLE */
3541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
3561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * long double versions of ISO/POSIX math functions
3571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
358a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#if __ISO_C_VISIBLE >= 1999
3599a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	acoshl(long double);
3601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	acosl(long double);
3619a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	asinhl(long double);
3621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	asinl(long double);
3631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	atan2l(long double, long double);
3649a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	atanhl(long double);
3651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	atanl(long double);
3661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	cbrtl(long double);
3671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	ceill(long double);
3681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	copysignl(long double, long double) __pure2;
3699a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	coshl(long double);
3701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	cosl(long double);
3719a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	erfcl(long double);
3729a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	erfl(long double);
3731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	exp2l(long double);
3741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	expl(long double);
3759a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	expm1l(long double);
3761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fabsl(long double) __pure2;
377f9f4a432ee4f56b8cb24b2033d3b1068200a6d30Elliott Hughes__BIONIC_MATH_INLINE(long double fabsl(long double x) { return __builtin_fabsl(x); })
3781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fdiml(long double, long double);
3791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	floorl(long double);
3801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fmal(long double, long double, long double);
3811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fmaxl(long double, long double) __pure2;
3821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fminl(long double, long double) __pure2;
3831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	fmodl(long double, long double);
3841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	frexpl(long double value, int *); /* fundamentally !__pure2 */
3851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	hypotl(long double, long double);
3861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint		ilogbl(long double) __pure2;
3871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	ldexpl(long double, int);
3889a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	lgammal(long double);
3891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long	llrintl(long double);
3901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong long	llroundl(long double);
3919a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	log10l(long double);
3929a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	log1pl(long double);
3939a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	log2l(long double);
3941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	logbl(long double);
3959a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	logl(long double);
3961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong		lrintl(long double);
3971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong		lroundl(long double);
3981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	modfl(long double, long double *); /* fundamentally !__pure2 */
3991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nanl(const char *) __pure2;
4001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nearbyintl(long double);
4011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nextafterl(long double, long double);
4021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble		nexttoward(double, long double);
4031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat		nexttowardf(float, long double);
4041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	nexttowardl(long double, long double);
4059a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	powl(long double, long double);
4061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	remainderl(long double, long double);
4071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	remquol(long double, long double, int *);
4081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	rintl(long double);
4091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	roundl(long double);
4101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	scalblnl(long double, long);
4111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	scalbnl(long double, int);
4129a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	sinhl(long double);
4131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	sinl(long double);
4141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	sqrtl(long double);
4159a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	tanhl(long double);
4161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	tanl(long double);
4179a5a3e8e74e2c6d7850ab29711189acf0f7378a2Elliott Hugheslong double	tgammal(long double);
4181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectlong double	truncl(long double);
419a0ee07829a9ba7e99ef68e8c12551301cc797f0fElliott Hughes#endif /* __ISO_C_VISIBLE >= 1999 */
420b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes
421755318548d787c7ca36901be064c69efba41c6cfElliott Hughes#if __BSD_VISIBLE
422755318548d787c7ca36901be064c69efba41c6cfElliott Hugheslong double	lgammal_r(long double, int *);
423755318548d787c7ca36901be064c69efba41c6cfElliott Hughes#endif
424755318548d787c7ca36901be064c69efba41c6cfElliott Hughes
4255f5cc45cf0e027f6ca503dc229a4890fc7164b66Elliott Hughes#if defined(__USE_GNU)
426b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughesvoid sincos(double, double*, double*);
427b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughesvoid sincosf(float, float*, float*);
428b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughesvoid sincosl(long double, long double*, long double*);
4295f5cc45cf0e027f6ca503dc229a4890fc7164b66Elliott Hughes#endif /* __USE_GNU */
430b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes
431de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes#pragma GCC visibility pop
4321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS
4331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* !_MATH_H_ */
435