111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ====================================================
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Developed at SunPro, a Sun Microsystems, Inc. business.
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use, copy, modify, and distribute this
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * software is freely granted, provided that this notice
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * is preserved.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ====================================================
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * from: @(#)fdlibm.h 5.1 93/09/24
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * $FreeBSD: src/lib/msun/src/math.h,v 1.61 2005/04/16 21:12:47 das Exp $
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _MATH_H_
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_MATH_H_
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/cdefs.h>
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/types.h>
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <limits.h>
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __pure2
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ANSI/POSIX
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern const union __infinity_un {
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	unsigned char	__uc[8];
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	double		__ud;
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} __infinity;
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern const union __nan_un {
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	unsigned char	__uc[sizeof(float)];
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	float		__uf;
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} __nan;
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800) */
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 1
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	__MATH_BUILTIN_CONSTANTS
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER) */
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 1
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	__MATH_BUILTIN_RELOPS
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #ifdef __MATH_BUILTIN_CONSTANTS */
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 1
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE_VAL	__builtin_huge_val()
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE_VAL	(__infinity.__ud)
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __ISO_C_VISIBLE >= 1999 */
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_ILOGB0	(-__INT_MAX)
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_ILOGBNAN	__INT_MAX
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_ILOGB0	(-INT_MAX)
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_ILOGBNAN	INT_MAX
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __MATH_BUILTIN_CONSTANTS
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE_VALF	__builtin_huge_valf()
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE_VALL	__builtin_huge_vall()
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	INFINITY	__builtin_inf()
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	NAN		__builtin_nan("")
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE_VALF	(float)HUGE_VAL
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE_VALL	(long double)HUGE_VAL
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	INFINITY	HUGE_VALF
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	NAN		(__nan.__uf)
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __MATH_BUILTIN_CONSTANTS */
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	MATH_ERRNO	1
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	MATH_ERREXCEPT	2
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	math_errhandling	MATH_ERREXCEPT
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* XXX We need a <machine/math.h>. */
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(__ia64__) || defined(__sparc64__)
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_FAST_FMA
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __ia64__
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_FAST_FMAL
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_FAST_FMAF
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Symbolic constants to classify floating point numbers. */
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_INFINITE	0x01
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_NAN		0x02
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_NORMAL	0x04
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_SUBNORMAL	0x08
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	FP_ZERO		0x10
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	fpclassify(x) \
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : __fpclassifyl(x))
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isfinite(x)					\
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((sizeof (x) == sizeof (float)) ? __isfinitef(x)	\
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : (sizeof (x) == sizeof (double)) ? __isfinite(x)	\
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : __isfinitel(x))
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isinf(x)					\
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((sizeof (x) == sizeof (float)) ? __isinff(x)	\
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : (sizeof (x) == sizeof (double)) ? __isinf(x)	\
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : __isinfl(x))
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isnan(x)					\
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((sizeof (x) == sizeof (float)) ? isnanf(x)		\
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : (sizeof (x) == sizeof (double)) ? isnan(x)	\
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : __isnanl(x))
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isnormal(x)					\
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((sizeof (x) == sizeof (float)) ? __isnormalf(x)	\
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : (sizeof (x) == sizeof (double)) ? __isnormal(x)	\
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : __isnormall(x))
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __MATH_BUILTIN_RELOPS
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isgreater(x, y)		__builtin_isgreater((x), (y))
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isgreaterequal(x, y)	__builtin_isgreaterequal((x), (y))
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isless(x, y)		__builtin_isless((x), (y))
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	islessequal(x, y)	__builtin_islessequal((x), (y))
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	islessgreater(x, y)	__builtin_islessgreater((x), (y))
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isunordered(x, y)	__builtin_isunordered((x), (y))
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isgreater(x, y)		(!isunordered((x), (y)) && (x) > (y))
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isgreaterequal(x, y)	(!isunordered((x), (y)) && (x) >= (y))
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isless(x, y)		(!isunordered((x), (y)) && (x) < (y))
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	islessequal(x, y)	(!isunordered((x), (y)) && (x) <= (y))
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	islessgreater(x, y)	(!isunordered((x), (y)) && \
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert					((x) > (y) || (y) > (x)))
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	isunordered(x, y)	(isnan(x) || isnan(y))
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __MATH_BUILTIN_RELOPS */
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	signbit(x)					\
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((sizeof (x) == sizeof (float)) ? __signbitf(x)	\
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : (sizeof (x) == sizeof (double)) ? __signbit(x)	\
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : __signbitl(x))
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef	__double_t	double_t;
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef	__float_t	float_t;
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */ /* __ISO_C_VISIBLE >= 1999 */
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * XOPEN/SVID
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __BSD_VISIBLE || __XSI_VISIBLE */
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_E		2.7182818284590452354	/* e */
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_LOG2E		1.4426950408889634074	/* log 2e */
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_LOG10E	0.43429448190325182765	/* log 10e */
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_LN2		0.69314718055994530942	/* log e2 */
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_LN10		2.30258509299404568402	/* log e10 */
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_PI		3.14159265358979323846	/* pi */
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_PI_2		1.57079632679489661923	/* pi/2 */
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_PI_4		0.78539816339744830962	/* pi/4 */
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_1_PI		0.31830988618379067154	/* 1/pi */
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_2_PI		0.63661977236758134308	/* 2/pi */
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	MAXFLOAT	((float)3.40282346638528860e+38)
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern int signgam;
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if __BSD_VISIBLE
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Old value from 4.4BSD-Lite math.h; this is probably better. */
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE		HUGE_VAL
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	HUGE		MAXFLOAT
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __BSD_VISIBLE */
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Most of these functions depend on the rounding mode and have the side
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * effect of raising floating-point exceptions, so they are not declared
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * as __pure2.  In C99, FENV_ACCESS affects the purity of these functions.
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__BEGIN_DECLS
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ANSI/POSIX
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__fpclassifyd(double) __NDK_FPABI_MATH__ __pure2;
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__fpclassifyf(float) __NDK_FPABI_MATH__ __pure2;
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__fpclassifyl(long double) __NDK_FPABI_MATH__ __pure2;
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isfinitef(float) __NDK_FPABI_MATH__ __pure2;
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isfinite(double) __NDK_FPABI_MATH__ __pure2;
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isfinitel(long double) __NDK_FPABI_MATH__ __pure2;
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isinff(float) __NDK_FPABI_MATH__ __pure2;
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint     __isinf(double) __NDK_FPABI_MATH__ __pure2;
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isinfl(long double) __NDK_FPABI_MATH__ __pure2;
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isnanl(long double) __NDK_FPABI_MATH__ __pure2;
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isnormalf(float) __NDK_FPABI_MATH__ __pure2;
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isnormal(double) __NDK_FPABI_MATH__ __pure2;
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__isnormall(long double) __NDK_FPABI_MATH__ __pure2;
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__signbit(double) __NDK_FPABI_MATH__ __pure2;
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__signbitf(float) __NDK_FPABI_MATH__ __pure2;
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__signbitl(long double) __NDK_FPABI_MATH__ __pure2;
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	acos(double) __NDK_FPABI_MATH__;
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	asin(double) __NDK_FPABI_MATH__;
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	atan(double) __NDK_FPABI_MATH__;
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	atan2(double, double) __NDK_FPABI_MATH__;
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	cos(double) __NDK_FPABI_MATH__;
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	sin(double) __NDK_FPABI_MATH__;
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	tan(double) __NDK_FPABI_MATH__;
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	cosh(double) __NDK_FPABI_MATH__;
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	sinh(double) __NDK_FPABI_MATH__;
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	tanh(double) __NDK_FPABI_MATH__;
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	exp(double) __NDK_FPABI_MATH__;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	frexp(double, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	ldexp(double, int) __NDK_FPABI_MATH__;
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	log(double) __NDK_FPABI_MATH__;
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	log10(double) __NDK_FPABI_MATH__;
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	modf(double, double *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	pow(double, double) __NDK_FPABI_MATH__;
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	sqrt(double) __NDK_FPABI_MATH__;
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	ceil(double) __NDK_FPABI_MATH__;
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	fabs(double) __NDK_FPABI_MATH__ __pure2;
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	floor(double) __NDK_FPABI_MATH__;
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	fmod(double, double) __NDK_FPABI_MATH__;
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * These functions are not in C90.
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	acosh(double) __NDK_FPABI_MATH__;
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	asinh(double) __NDK_FPABI_MATH__;
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	atanh(double) __NDK_FPABI_MATH__;
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	cbrt(double) __NDK_FPABI_MATH__;
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	erf(double) __NDK_FPABI_MATH__;
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	erfc(double) __NDK_FPABI_MATH__;
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	exp2(double) __NDK_FPABI_MATH__;
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	expm1(double) __NDK_FPABI_MATH__;
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	fma(double, double, double) __NDK_FPABI_MATH__;
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	hypot(double, double) __NDK_FPABI_MATH__;
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	ilogb(double) __NDK_FPABI_MATH__ __pure2;
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* int	(isinf)(double) __NDK_FPABI_MATH__ __pure2; */
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	(isnan)(double) __NDK_FPABI_MATH__ __pure2;
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	lgamma(double) __NDK_FPABI_MATH__;
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long llrint(double) __NDK_FPABI_MATH__;
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long llround(double) __NDK_FPABI_MATH__;
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	log1p(double) __NDK_FPABI_MATH__;
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	logb(double) __NDK_FPABI_MATH__;
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	lrint(double) __NDK_FPABI_MATH__;
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	lround(double) __NDK_FPABI_MATH__;
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	nextafter(double, double) __NDK_FPABI_MATH__;
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	remainder(double, double) __NDK_FPABI_MATH__;
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	remquo(double, double, int *) __NDK_FPABI_MATH__;
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	rint(double) __NDK_FPABI_MATH__;
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */ /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __BSD_VISIBLE || __XSI_VISIBLE */
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	j0(double) __NDK_FPABI_MATH__;
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	j1(double) __NDK_FPABI_MATH__;
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	jn(int, double) __NDK_FPABI_MATH__;
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	scalb(double, double) __NDK_FPABI_MATH__;
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	y0(double) __NDK_FPABI_MATH__;
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	y1(double) __NDK_FPABI_MATH__;
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	yn(int, double) __NDK_FPABI_MATH__;
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __XSI_VISIBLE <= 500 || __BSD_VISIBLE */
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	gamma(double) __NDK_FPABI_MATH__;
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */ /* __BSD_VISIBLE || __XSI_VISIBLE */
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 */
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	copysign(double, double) __NDK_FPABI_MATH__ __pure2;
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	fdim(double, double) __NDK_FPABI_MATH__;
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	fmax(double, double) __NDK_FPABI_MATH__ __pure2;
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	fmin(double, double) __NDK_FPABI_MATH__ __pure2;
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	nearbyint(double) __NDK_FPABI_MATH__;
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	round(double) __NDK_FPABI_MATH__;
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	scalbln(double, long) __NDK_FPABI_MATH__;
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	scalbn(double, int) __NDK_FPABI_MATH__;
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	tgamma(double) __NDK_FPABI_MATH__;
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	trunc(double) __NDK_FPABI_MATH__;
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * BSD math library entry points
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __BSD_VISIBLE */
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	drem(double, double) __NDK_FPABI_MATH__;
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	finite(double) __NDK_FPABI_MATH__ __pure2;
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	isnanf(float) __NDK_FPABI_MATH__ __pure2;
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Reentrant version of gamma & lgamma; passes signgam back by reference
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * as the second argument; user must allocate space for signgam.
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	gamma_r(double, int *) __NDK_FPABI_MATH__;
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	lgamma_r(double, int *) __NDK_FPABI_MATH__;
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * IEEE Test Vector
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	significand(double) __NDK_FPABI_MATH__;
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */ /* __BSD_VISIBLE */
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* float versions of ANSI/POSIX functions */
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*#if __ISO_C_VISIBLE >= 1999 */
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	acosf(float) __NDK_FPABI_MATH__;
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	asinf(float) __NDK_FPABI_MATH__;
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	atanf(float) __NDK_FPABI_MATH__;
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	atan2f(float, float) __NDK_FPABI_MATH__;
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	cosf(float) __NDK_FPABI_MATH__;
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	sinf(float) __NDK_FPABI_MATH__;
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	tanf(float) __NDK_FPABI_MATH__;
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	coshf(float) __NDK_FPABI_MATH__;
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	sinhf(float) __NDK_FPABI_MATH__;
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	tanhf(float) __NDK_FPABI_MATH__;
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	exp2f(float) __NDK_FPABI_MATH__;
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	expf(float) __NDK_FPABI_MATH__;
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	expm1f(float) __NDK_FPABI_MATH__;
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	frexpf(float, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	ilogbf(float) __NDK_FPABI_MATH__ __pure2;
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	ldexpf(float, int) __NDK_FPABI_MATH__;
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	log10f(float) __NDK_FPABI_MATH__;
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	log1pf(float) __NDK_FPABI_MATH__;
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	logf(float) __NDK_FPABI_MATH__;
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	modff(float, float *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	powf(float, float) __NDK_FPABI_MATH__;
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	sqrtf(float) __NDK_FPABI_MATH__;
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	ceilf(float) __NDK_FPABI_MATH__;
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	fabsf(float) __NDK_FPABI_MATH__ __pure2;
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	floorf(float) __NDK_FPABI_MATH__;
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	fmodf(float, float) __NDK_FPABI_MATH__;
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	roundf(float) __NDK_FPABI_MATH__;
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	erff(float) __NDK_FPABI_MATH__;
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	erfcf(float) __NDK_FPABI_MATH__;
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	hypotf(float, float) __NDK_FPABI_MATH__;
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	lgammaf(float) __NDK_FPABI_MATH__;
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	acoshf(float) __NDK_FPABI_MATH__;
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	asinhf(float) __NDK_FPABI_MATH__;
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	atanhf(float) __NDK_FPABI_MATH__;
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	cbrtf(float) __NDK_FPABI_MATH__;
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	logbf(float) __NDK_FPABI_MATH__;
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long llrintf(float) __NDK_FPABI_MATH__;
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long llroundf(float) __NDK_FPABI_MATH__;
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	lrintf(float) __NDK_FPABI_MATH__;
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	lroundf(float) __NDK_FPABI_MATH__;
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	nearbyintf(float) __NDK_FPABI_MATH__;
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	nextafterf(float, float) __NDK_FPABI_MATH__;
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	remainderf(float, float) __NDK_FPABI_MATH__;
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	remquof(float, float, int *) __NDK_FPABI_MATH__;
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	rintf(float) __NDK_FPABI_MATH__;
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	scalblnf(float, long) __NDK_FPABI_MATH__;
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	scalbnf(float, int) __NDK_FPABI_MATH__;
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	truncf(float) __NDK_FPABI_MATH__;
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	fdimf(float, float) __NDK_FPABI_MATH__;
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	fmaf(float, float, float) __NDK_FPABI_MATH__;
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	fminf(float, float) __NDK_FPABI_MATH__ __pure2;
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * float versions of BSD math library entry points
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __BSD_VISIBLE */
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	dremf(float, float) __NDK_FPABI_MATH__;
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	finitef(float) __NDK_FPABI_MATH__ __pure2;
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	gammaf(float) __NDK_FPABI_MATH__;
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	j0f(float) __NDK_FPABI_MATH__;
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	j1f(float) __NDK_FPABI_MATH__;
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	jnf(int, float) __NDK_FPABI_MATH__;
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	scalbf(float, float) __NDK_FPABI_MATH__;
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	y0f(float) __NDK_FPABI_MATH__;
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	y1f(float) __NDK_FPABI_MATH__;
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	ynf(int, float) __NDK_FPABI_MATH__;
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Float versions of reentrant version of gamma & lgamma; passes
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * signgam back by reference as the second argument; user must
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * allocate space for signgam.
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	gammaf_r(float, int *) __NDK_FPABI_MATH__;
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	lgammaf_r(float, int *) __NDK_FPABI_MATH__;
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * float version of IEEE Test Vector
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	significandf(float) __NDK_FPABI_MATH__;
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #endif */	/* __BSD_VISIBLE */
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * long double versions of ISO/POSIX math functions
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* #if __ISO_C_VISIBLE >= 1999 */
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	acoshl(long double) __NDK_FPABI_MATH__;
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	acosl(long double) __NDK_FPABI_MATH__;
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	asinhl(long double) __NDK_FPABI_MATH__;
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	asinl(long double) __NDK_FPABI_MATH__;
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	atan2l(long double, long double) __NDK_FPABI_MATH__;
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	atanhl(long double) __NDK_FPABI_MATH__;
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	atanl(long double) __NDK_FPABI_MATH__;
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	cbrtl(long double) __NDK_FPABI_MATH__;
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	ceill(long double) __NDK_FPABI_MATH__;
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	coshl(long double) __NDK_FPABI_MATH__;
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	cosl(long double) __NDK_FPABI_MATH__;
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	erfcl(long double) __NDK_FPABI_MATH__;
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	erfl(long double) __NDK_FPABI_MATH__;
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	exp2l(long double) __NDK_FPABI_MATH__;
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	expl(long double) __NDK_FPABI_MATH__;
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	expm1l(long double) __NDK_FPABI_MATH__;
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	fabsl(long double) __NDK_FPABI_MATH__ __pure2;
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	fdiml(long double, long double) __NDK_FPABI_MATH__;
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	floorl(long double) __NDK_FPABI_MATH__;
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	fmal(long double, long double, long double) __NDK_FPABI_MATH__;
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	fmodl(long double, long double) __NDK_FPABI_MATH__;
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	hypotl(long double, long double) __NDK_FPABI_MATH__;
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint		ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	ldexpl(long double, int) __NDK_FPABI_MATH__;
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	lgammal(long double) __NDK_FPABI_MATH__;
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long	llrintl(long double) __NDK_FPABI_MATH__;
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long	llroundl(long double) __NDK_FPABI_MATH__;
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	log10l(long double) __NDK_FPABI_MATH__;
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	log1pl(long double) __NDK_FPABI_MATH__;
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	log2l(long double) __NDK_FPABI_MATH__;
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	logbl(long double) __NDK_FPABI_MATH__;
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	logl(long double) __NDK_FPABI_MATH__;
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong		lrintl(long double) __NDK_FPABI_MATH__;
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong		lroundl(long double) __NDK_FPABI_MATH__;
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	nanl(const char *) __NDK_FPABI_MATH__ __pure2;
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	nearbyintl(long double) __NDK_FPABI_MATH__;
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	nextafterl(long double, long double) __NDK_FPABI_MATH__;
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble		nexttoward(double, long double) __NDK_FPABI_MATH__;
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat		nexttowardf(float, long double) __NDK_FPABI_MATH__;
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	nexttowardl(long double, long double) __NDK_FPABI_MATH__;
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	powl(long double, long double) __NDK_FPABI_MATH__;
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	remainderl(long double, long double) __NDK_FPABI_MATH__;
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	remquol(long double, long double, int *) __NDK_FPABI_MATH__;
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	rintl(long double) __NDK_FPABI_MATH__;
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	roundl(long double) __NDK_FPABI_MATH__;
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	scalblnl(long double, long) __NDK_FPABI_MATH__;
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	scalbnl(long double, int) __NDK_FPABI_MATH__;
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if 0
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	sinhl(long double) __NDK_FPABI_MATH__;
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	sinl(long double) __NDK_FPABI_MATH__;
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	sqrtl(long double) __NDK_FPABI_MATH__;
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	tanhl(long double) __NDK_FPABI_MATH__;
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	tanl(long double) __NDK_FPABI_MATH__;
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	tgammal(long double) __NDK_FPABI_MATH__;
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	truncl(long double) __NDK_FPABI_MATH__;
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* BIONIC: GLibc compatibility - required by the ARM toolchain */
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef _GNU_SOURCE
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid  sincos(double x, double *sin, double *cos) __NDK_FPABI_MATH__;
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid  sincosf(float x, float *sin, float *cos) __NDK_FPABI_MATH__;
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid  sincosl(long double x, long double *sin, long double *cos) __NDK_FPABI_MATH__;
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* builtin version of all the above math functions are annotated too */
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_acos(double) __NDK_FPABI_MATH__;
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_asin(double) __NDK_FPABI_MATH__;
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_atan(double) __NDK_FPABI_MATH__;
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_atan2(double, double) __NDK_FPABI_MATH__;
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_cos(double) __NDK_FPABI_MATH__;
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_sin(double) __NDK_FPABI_MATH__;
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_tan(double) __NDK_FPABI_MATH__;
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_cosh(double) __NDK_FPABI_MATH__;
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_sinh(double) __NDK_FPABI_MATH__;
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_tanh(double) __NDK_FPABI_MATH__;
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_exp(double) __NDK_FPABI_MATH__;
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_frexp(double, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_ldexp(double, int) __NDK_FPABI_MATH__;
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_log(double) __NDK_FPABI_MATH__;
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_log10(double) __NDK_FPABI_MATH__;
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_modf(double, double *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_pow(double, double) __NDK_FPABI_MATH__;
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_sqrt(double) __NDK_FPABI_MATH__;
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_ceil(double) __NDK_FPABI_MATH__;
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_fabs(double) __NDK_FPABI_MATH__ __pure2;
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_floor(double) __NDK_FPABI_MATH__;
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_fmod(double, double) __NDK_FPABI_MATH__;
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_acosh(double) __NDK_FPABI_MATH__;
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_asinh(double) __NDK_FPABI_MATH__;
51611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_atanh(double) __NDK_FPABI_MATH__;
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_cbrt(double) __NDK_FPABI_MATH__;
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_erf(double) __NDK_FPABI_MATH__;
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_erfc(double) __NDK_FPABI_MATH__;
52011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_exp2(double) __NDK_FPABI_MATH__;
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_expm1(double) __NDK_FPABI_MATH__;
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_fma(double, double, double) __NDK_FPABI_MATH__;
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_hypot(double, double) __NDK_FPABI_MATH__;
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2;
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* int	__builtin_isinf(double) __NDK_FPABI_MATH__ __pure2; */
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined(__clang__)
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958 */
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__builtin_isnan(double) __NDK_FPABI_MATH__ __pure2;
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_lgamma(double) __NDK_FPABI_MATH__;
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long __builtin_llrint(double) __NDK_FPABI_MATH__;
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long __builtin_llround(double) __NDK_FPABI_MATH__;
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_log1p(double) __NDK_FPABI_MATH__;
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_logb(double) __NDK_FPABI_MATH__;
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	__builtin_lrint(double) __NDK_FPABI_MATH__;
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	__builtin_lround(double) __NDK_FPABI_MATH__;
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_nextafter(double, double) __NDK_FPABI_MATH__;
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_remainder(double, double) __NDK_FPABI_MATH__;
53911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_remquo(double, double, int *) __NDK_FPABI_MATH__;
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_rint(double) __NDK_FPABI_MATH__;
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_j0(double) __NDK_FPABI_MATH__;
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_j1(double) __NDK_FPABI_MATH__;
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_jn(int, double) __NDK_FPABI_MATH__;
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_scalb(double, double) __NDK_FPABI_MATH__;
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_y0(double) __NDK_FPABI_MATH__;
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_y1(double) __NDK_FPABI_MATH__;
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_yn(int, double) __NDK_FPABI_MATH__;
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_gamma(double) __NDK_FPABI_MATH__;
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_copysign(double, double) __NDK_FPABI_MATH__ __pure2;
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_fdim(double, double) __NDK_FPABI_MATH__;
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_fmax(double, double) __NDK_FPABI_MATH__ __pure2;
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_fmin(double, double) __NDK_FPABI_MATH__ __pure2;
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_nearbyint(double) __NDK_FPABI_MATH__;
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_round(double) __NDK_FPABI_MATH__;
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_scalbln(double, long) __NDK_FPABI_MATH__;
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_scalbn(double, int) __NDK_FPABI_MATH__;
55711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_tgamma(double) __NDK_FPABI_MATH__;
55811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_trunc(double) __NDK_FPABI_MATH__;
55911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_drem(double, double) __NDK_FPABI_MATH__;
56011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__builtin_finite(double) __NDK_FPABI_MATH__ __pure2;
56111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__builtin_isnanf(float) __NDK_FPABI_MATH__ __pure2;
56211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_gamma_r(double, int *) __NDK_FPABI_MATH__;
56311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_lgamma_r(double, int *) __NDK_FPABI_MATH__;
56411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble	__builtin_significand(double) __NDK_FPABI_MATH__;
56511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_acosf(float) __NDK_FPABI_MATH__;
56611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_asinf(float) __NDK_FPABI_MATH__;
56711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_atanf(float) __NDK_FPABI_MATH__;
56811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_atan2f(float, float) __NDK_FPABI_MATH__;
56911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_cosf(float) __NDK_FPABI_MATH__;
57011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_sinf(float) __NDK_FPABI_MATH__;
57111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_tanf(float) __NDK_FPABI_MATH__;
57211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_coshf(float) __NDK_FPABI_MATH__;
57311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_sinhf(float) __NDK_FPABI_MATH__;
57411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_tanhf(float) __NDK_FPABI_MATH__;
57511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_exp2f(float) __NDK_FPABI_MATH__;
57611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_expf(float) __NDK_FPABI_MATH__;
57711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_expm1f(float) __NDK_FPABI_MATH__;
57811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_frexpf(float, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
57911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__builtin_ilogbf(float) __NDK_FPABI_MATH__ __pure2;
58011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_ldexpf(float, int) __NDK_FPABI_MATH__;
58111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_log10f(float) __NDK_FPABI_MATH__;
58211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_log1pf(float) __NDK_FPABI_MATH__;
58311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_logf(float) __NDK_FPABI_MATH__;
58411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_modff(float, float *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
58511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_powf(float, float) __NDK_FPABI_MATH__;
58611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_sqrtf(float) __NDK_FPABI_MATH__;
58711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_ceilf(float) __NDK_FPABI_MATH__;
58811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_fabsf(float) __NDK_FPABI_MATH__ __pure2;
58911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_floorf(float) __NDK_FPABI_MATH__;
59011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_fmodf(float, float) __NDK_FPABI_MATH__;
59111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_roundf(float) __NDK_FPABI_MATH__;
59211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_erff(float) __NDK_FPABI_MATH__;
59311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_erfcf(float) __NDK_FPABI_MATH__;
59411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_hypotf(float, float) __NDK_FPABI_MATH__;
59511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_lgammaf(float) __NDK_FPABI_MATH__;
59611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_acoshf(float) __NDK_FPABI_MATH__;
59711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_asinhf(float) __NDK_FPABI_MATH__;
59811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_atanhf(float) __NDK_FPABI_MATH__;
59911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_cbrtf(float) __NDK_FPABI_MATH__;
60011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_logbf(float) __NDK_FPABI_MATH__;
60111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
60211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long __builtin_llrintf(float) __NDK_FPABI_MATH__;
60311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long __builtin_llroundf(float) __NDK_FPABI_MATH__;
60411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	__builtin_lrintf(float) __NDK_FPABI_MATH__;
60511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong	__builtin_lroundf(float) __NDK_FPABI_MATH__;
60611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_nearbyintf(float) __NDK_FPABI_MATH__;
60711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_nextafterf(float, float) __NDK_FPABI_MATH__;
60811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_remainderf(float, float) __NDK_FPABI_MATH__;
60911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_remquof(float, float, int *) __NDK_FPABI_MATH__;
61011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_rintf(float) __NDK_FPABI_MATH__;
61111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_scalblnf(float, long) __NDK_FPABI_MATH__;
61211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_scalbnf(float, int) __NDK_FPABI_MATH__;
61311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_truncf(float) __NDK_FPABI_MATH__;
61411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_fdimf(float, float) __NDK_FPABI_MATH__;
61511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_fmaf(float, float, float) __NDK_FPABI_MATH__;
61611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
61711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_fminf(float, float) __NDK_FPABI_MATH__ __pure2;
61811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_dremf(float, float) __NDK_FPABI_MATH__;
61911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint	__builtin_finitef(float) __NDK_FPABI_MATH__ __pure2;
62011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_gammaf(float) __NDK_FPABI_MATH__;
62111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_j0f(float) __NDK_FPABI_MATH__;
62211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_j1f(float) __NDK_FPABI_MATH__;
62311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_jnf(int, float) __NDK_FPABI_MATH__;
62411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_scalbf(float, float) __NDK_FPABI_MATH__;
62511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_y0f(float) __NDK_FPABI_MATH__;
62611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_y1f(float) __NDK_FPABI_MATH__;
62711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_ynf(int, float) __NDK_FPABI_MATH__;
62811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_gammaf_r(float, int *) __NDK_FPABI_MATH__;
62911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_lgammaf_r(float, int *) __NDK_FPABI_MATH__;
63011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat	__builtin_significandf(float) __NDK_FPABI_MATH__;
63111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_acoshl(long double) __NDK_FPABI_MATH__;
63211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_acosl(long double) __NDK_FPABI_MATH__;
63311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_asinhl(long double) __NDK_FPABI_MATH__;
63411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_asinl(long double) __NDK_FPABI_MATH__;
63511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_atan2l(long double, long double) __NDK_FPABI_MATH__;
63611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_atanhl(long double) __NDK_FPABI_MATH__;
63711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_atanl(long double) __NDK_FPABI_MATH__;
63811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_cbrtl(long double) __NDK_FPABI_MATH__;
63911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_ceill(long double) __NDK_FPABI_MATH__;
64011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
64111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_coshl(long double) __NDK_FPABI_MATH__;
64211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_cosl(long double) __NDK_FPABI_MATH__;
64311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_erfcl(long double) __NDK_FPABI_MATH__;
64411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_erfl(long double) __NDK_FPABI_MATH__;
64511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_exp2l(long double) __NDK_FPABI_MATH__;
64611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_expl(long double) __NDK_FPABI_MATH__;
64711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_expm1l(long double) __NDK_FPABI_MATH__;
64811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_fabsl(long double) __NDK_FPABI_MATH__ __pure2;
64911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_fdiml(long double, long double) __NDK_FPABI_MATH__;
65011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_floorl(long double) __NDK_FPABI_MATH__;
65111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_fmal(long double, long double, long double) __NDK_FPABI_MATH__;
65211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
65311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
65411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_fmodl(long double, long double) __NDK_FPABI_MATH__;
65511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
65611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_hypotl(long double, long double) __NDK_FPABI_MATH__;
65711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint		__builtin_ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
65811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_ldexpl(long double, int) __NDK_FPABI_MATH__;
65911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_lgammal(long double) __NDK_FPABI_MATH__;
66011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long	__builtin_llrintl(long double) __NDK_FPABI_MATH__;
66111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong long	__builtin_llroundl(long double) __NDK_FPABI_MATH__;
66211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_log10l(long double) __NDK_FPABI_MATH__;
66311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_log1pl(long double) __NDK_FPABI_MATH__;
66411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_log2l(long double) __NDK_FPABI_MATH__;
66511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_logbl(long double) __NDK_FPABI_MATH__;
66611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_logl(long double) __NDK_FPABI_MATH__;
66711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong		__builtin_lrintl(long double) __NDK_FPABI_MATH__;
66811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong		__builtin_lroundl(long double) __NDK_FPABI_MATH__;
66911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
67011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_nanl(const char *) __NDK_FPABI_MATH__ __pure2;
67111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_nearbyintl(long double) __NDK_FPABI_MATH__;
67211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_nextafterl(long double, long double) __NDK_FPABI_MATH__;
67311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4)
67411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble		__builtin_nexttoward(double, long double) __NDK_FPABI_MATH__;
67511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat		__builtin_nexttowardf(float, long double) __NDK_FPABI_MATH__;
67611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
67711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* clang < 3.4 */
67811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdouble		__builtin_nexttoward(double, double) __NDK_FPABI_MATH__;
67911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat		__builtin_nexttowardf(float, float) __NDK_FPABI_MATH__;
68011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
68111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_nexttowardl(long double, long double) __NDK_FPABI_MATH__;
68211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_powl(long double, long double) __NDK_FPABI_MATH__;
68311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_remainderl(long double, long double) __NDK_FPABI_MATH__;
68411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_remquol(long double, long double, int *) __NDK_FPABI_MATH__;
68511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_rintl(long double) __NDK_FPABI_MATH__;
68611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_roundl(long double) __NDK_FPABI_MATH__;
68711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_scalblnl(long double, long) __NDK_FPABI_MATH__;
68811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_scalbnl(long double, int) __NDK_FPABI_MATH__;
68911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_sinhl(long double) __NDK_FPABI_MATH__;
69011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_sinl(long double) __NDK_FPABI_MATH__;
69111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_sqrtl(long double) __NDK_FPABI_MATH__;
69211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_tanhl(long double) __NDK_FPABI_MATH__;
69311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_tanl(long double) __NDK_FPABI_MATH__;
69411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_tgammal(long double) __NDK_FPABI_MATH__;
69511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlong double	__builtin_truncl(long double) __NDK_FPABI_MATH__;
69611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__END_DECLS
69811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* !_MATH_H_ */
700