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 23de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes__BEGIN_DECLS 24de9ac710534626e6796ea885f8480fc4cfd64158Elliott Hughes 2550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* C11. */ 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughestypedef double __double_t; 2850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughestypedef __double_t double_t; 2950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughestypedef float __float_t; 3050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughestypedef __float_t float_t; 3150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 3250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define HUGE_VAL __builtin_huge_val() 3350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define HUGE_VALF __builtin_huge_valf() 3450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define HUGE_VALL __builtin_huge_vall() 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 3650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define INFINITY __builtin_inff() 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 3850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define NAN __builtin_nanf("") 3950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 4050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_INFINITE 0x01 4150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_NAN 0x02 4250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_NORMAL 0x04 4350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_SUBNORMAL 0x08 4450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_ZERO 0x10 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 46b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#if defined(__FP_FAST_FMA) 47b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_FAST_FMA 1 48b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#endif 49b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#if defined(__FP_FAST_FMAF) 50b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_FAST_FMAF 1 51b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#endif 52b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#if defined(__FP_FAST_FMAL) 53b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define FP_FAST_FMAL 1 541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 5650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_ILOGB0 (-INT_MAX) 5750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define FP_ILOGBNAN INT_MAX 5850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 5950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define MATH_ERRNO 1 6050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define MATH_ERREXCEPT 2 6150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define math_errhandling MATH_ERREXCEPT 6250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 6350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define fpclassify(x) __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x) 64b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes 65b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isfinite(x) __builtin_isfinite(x) 6650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 67b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isinf(x) __builtin_isinf(x) 6850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 69b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define isnan(x) __builtin_isnan(x) 70b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes 7150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define isnormal(x) __builtin_isnormal(x) 72b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes 73b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes#define signbit(x) \ 74b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes ((sizeof(x) == sizeof(float)) ? __builtin_signbitf(x) \ 75b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes : (sizeof(x) == sizeof(double)) ? __builtin_signbit(x) \ 76b662280aaff801ef936fbfab34dd1596acce945eElliott Hughes : __builtin_signbitl(x)) 771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 78684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble acos(double __x); 7950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat acosf(float __x); 8050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double acosl(long double __x) __RENAME_LDBL(acos, 3, 21); 8150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 82684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble asin(double __x); 8350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat asinf(float __x); 8450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double asinl(long double __x) __RENAME_LDBL(asin, 3, 21); 8550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 86684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble atan(double __x); 8750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat atanf(float __x); 8850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double atanl(long double __x) __RENAME_LDBL(atan, 3, 21); 8950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 90684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble atan2(double __y, double __x); 9150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat atan2f(float __y, float __x); 9250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double atan2l(long double __y, long double __x) __RENAME_LDBL(atan2, 3, 21); 9350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 94684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble cos(double __x); 9550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat cosf(float __x); 9650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double cosl(long double __x) __RENAME_LDBL(cos, 3, 21); 9750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 98684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble sin(double __x); 9950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat sinf(float __x); 10050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double sinl(long double __x) __RENAME_LDBL(sin, 3, 21); 10150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 102684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble tan(double __x); 10350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat tanf(float __x); 10450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double tanl(long double __x) __RENAME_LDBL(tan, 3, 21); 10550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 10650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble acosh(double __x); 10750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat acoshf(float __x); 10850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double acoshl(long double __x) __RENAME_LDBL(acosh, 3, 21); 10950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 11050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble asinh(double __x); 11150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat asinhf(float __x); 11250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double asinhl(long double __x) __RENAME_LDBL(asinh, 3, 21); 11350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 11450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble atanh(double __x); 11550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat atanhf(float __x); 11650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double atanhl(long double __x) __RENAME_LDBL(atanh, 3, 21); 117684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 118684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble cosh(double __x); 11950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat coshf(float __x); 12050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double coshl(long double __x) __RENAME_LDBL(cosh, 3, 21); 12150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 122684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble sinh(double __x); 12350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat sinhf(float __x); 12450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double sinhl(long double __x) __RENAME_LDBL(sinh, 3, 21); 12550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 126684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble tanh(double __x); 12750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat tanhf(float __x); 12850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double tanhl(long double __x) __RENAME_LDBL(tanh, 3, 21); 129684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 130684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble exp(double __x); 13150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat expf(float __x); 13250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double expl(long double __x) __RENAME_LDBL(exp, 3, 21); 133684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 134684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble exp2(double __x); 13550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat exp2f(float __x); 13650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double exp2l(long double __x) __RENAME_LDBL(exp2, 3, 21); 13750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 138684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble expm1(double __x); 13950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat expm1f(float __x); 14050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double expm1l(long double __x) __RENAME_LDBL(expm1, 3, 21); 14150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 14250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble frexp(double __x, int* __exponent); 14350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat frexpf(float __x, int* __exponent); 14450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double frexpl(long double __x, int* __exponent) __RENAME_LDBL(frexp, 3, 21); 14550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 146684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesint ilogb(double __x) __attribute_const__; 14750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesint ilogbf(float __x) __attribute_const__; 148d6541c2a97faa1f6401627f4661175b72b53839aElliott Hughesint ilogbl(long double __x) __RENAME_LDBL(ilogb, 3, 3) __attribute_const__; 14950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 15050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble ldexp(double __x, int __exponent); 15150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat ldexpf(float __x, int __exponent); 15250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double ldexpl(long double __x, int __exponent) __RENAME_LDBL(ldexp, 3, 3); 15350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 15450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble log(double __x); 15550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat logf(float __x); 15650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double logl(long double __x) __RENAME_LDBL(log, 3, 21); 15750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 15850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble log10(double __x); 15950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat log10f(float __x); 16050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double log10l(long double __x) __RENAME_LDBL(log10, 3, 21); 16150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 162684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble log1p(double __x); 16350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat log1pf(float __x); 16450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double log1pl(long double __x) __RENAME_LDBL(log1p, 3, 21); 16550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 166684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble log2(double __x) __INTRODUCED_IN(18); 16750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat log2f(float __x) __INTRODUCED_IN(18); 16850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double log2l(long double __x) __RENAME_LDBL(log2, 18, 18); 16946b44160e9e4c466be0faf1bb8d6ec70ecc83273Josh Gao 17050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble logb(double __x); 17150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat logbf(float __x); 17250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double logbl(long double __x) __RENAME_LDBL(logb, 3, 18); 173284c8f1bafd53777c262ee29f941644747eb4ad9Dan Albert 17450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble modf(double __x, double* __integral_part); 17550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat modff(float __x, float* __integral_part); 17650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double modfl(long double __x, long double* __integral_part) __RENAME_LDBL(modf, 3, 21); 17746b44160e9e4c466be0faf1bb8d6ec70ecc83273Josh Gao 17850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble scalbn(double __x, int __exponent); 17950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat scalbnf(float __x, int __exponent); 18050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double scalbnl(long double __x, int __exponent) __RENAME_LDBL(scalbn, 3, 3); 181684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 18250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* TODO: once the NDK only supports >= 18, use __RENAME_LDBL here too. */ 183684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble scalbln(double __x, long __exponent) __INTRODUCED_IN_X86(18) __VERSIONER_NO_GUARD; 18450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat scalblnf(float __x, long __exponent) __INTRODUCED_IN_X86(18) __VERSIONER_NO_GUARD; 18550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double scalblnl(long double __x, long __exponent) __INTRODUCED_IN_X86(18) __VERSIONER_NO_GUARD; 186684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 18750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble cbrt(double __x); 18850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat cbrtf(float __x); 18950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double cbrtl(long double __x) __RENAME_LDBL(cbrt, 3, 21); 190684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 19150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble fabs(double __x) __attribute_const__; 19250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat fabsf(float __x) __attribute_const__; 193d6541c2a97faa1f6401627f4661175b72b53839aElliott Hugheslong double fabsl(long double __x) __RENAME_LDBL(fabs, 3, 3) __attribute_const__; 194684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 19550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble hypot(double __x, double __y); 19650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat hypotf(float __x, float __y); 19750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double hypotl(long double __x, long double __y) __RENAME_LDBL(hypot, 3, 21); 198684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 19950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble pow(double __x, double __y); 200684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat powf(float __x, float __y); 20150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double powl(long double __x, long double __y) __RENAME_LDBL(pow, 3, 21); 202684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 20350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble sqrt(double __x); 20450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat sqrtf(float __x); 20550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double sqrtl(long double __x) __RENAME_LDBL(sqrt, 3, 21); 206684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 20750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble erf(double __x); 208684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat erff(float __x); 20950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double erfl(long double __x) __RENAME_LDBL(erf, 3, 21); 21050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 21150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble erfc(double __x); 212684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat erfcf(float __x); 21350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double erfcl(long double __x) __RENAME_LDBL(erfc, 3, 21); 21450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 21550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble lgamma(double __x); 216684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat lgammaf(float __x); 21750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double lgammal(long double __x) __RENAME_LDBL(lgamma, 3, 21); 21850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 21950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble tgamma(double __x); 220684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat tgammaf(float __x) __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13) __INTRODUCED_IN_X86(9); 22150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double tgammal(long double __x) __RENAME_LDBL(tgamma, 3, 21); 222684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 22350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble ceil(double __x); 22450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat ceilf(float __x); 22550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double ceill(long double __x) __RENAME_LDBL(ceil, 3, 3); 22650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 22750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble floor(double __x); 22850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat floorf(float __x); 22950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double floorl(long double __x) __RENAME_LDBL(floor, 3, 3); 23050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 23150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble nearbyint(double __x); 23250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat nearbyintf(float __x); 23350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double nearbyintl(long double __x) __RENAME_LDBL(nearbyint, 3, 21); 23450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 23550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble rint(double __x); 23650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat rintf(float __x); 23750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double rintl(long double __x) __RENAME_LDBL(rint, 3, 21); 23850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 23950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong lrint(double __x); 240684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hugheslong lrintf(float __x); 24150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong lrintl(long double __x) __RENAME_LDBL(lrint, 3, 21); 24250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 24350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong long llrint(double __x); 24450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong long llrintf(float __x); 24550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong long llrintl(long double __x) __RENAME_LDBL(llrint, 3, 21); 24650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 24750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble round(double __x); 24850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat roundf(float __x); 24950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double roundl(long double __x) __RENAME_LDBL(roundl, 3, 3); 25050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 25150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong lround(double __x); 252684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hugheslong lroundf(float __x); 25350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong lroundl(long double __x) __RENAME_LDBL(lround, 3, 3); 25450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 25550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong long llround(double __x); 25650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong long llroundf(float __x); 25750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong long llroundl(long double __x) __RENAME_LDBL(llround, 3, 3); 25850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 25950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble trunc(double __x); 26050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat truncf(float __x); 26150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double truncl(long double __x) __RENAME_LDBL(trunc, 3, 3); 26250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 26350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble fmod(double __x, double __y); 26450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat fmodf(float __x, float __y); 26550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double fmodl(long double __x, long double __y) __RENAME_LDBL(fmod, 3, 21); 26650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 26750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble remainder(double __x, double __y); 268684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat remainderf(float __x, float __y); 26950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double remainderl(long double __x, long double __y) __RENAME_LDBL(remainder, 3, 21); 27050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 27150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble remquo(double __x, double __y, int* __quotient_bits); 272684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat remquof(float __x, float __y, int* __quotient_bits); 27350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double remquol(long double __x, long double __y, int* __quotient_bits) __RENAME_LDBL(remquo, 3, 21); 27450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 27550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble copysign(double __value, double __sign) __attribute_const__; 27650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat copysignf(float __value, float __sign) __attribute_const__; 277d6541c2a97faa1f6401627f4661175b72b53839aElliott Hugheslong double copysignl(long double __value, long double __sign) __RENAME_LDBL(copysign, 3, 3) __attribute_const__; 27850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 27950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble nan(const char* __kind) __attribute_const__ __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13) __INTRODUCED_IN_X86(9); 28050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat nanf(const char* __kind) __attribute_const__ __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13) __INTRODUCED_IN_X86(9); 281d6541c2a97faa1f6401627f4661175b72b53839aElliott Hugheslong double nanl(const char* __kind) __RENAME_LDBL(nan, 13, 13) __attribute_const__; 28250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 28350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble nextafter(double __x, double __y); 28450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat nextafterf(float __x, float __y); 28550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double nextafterl(long double __x, long double __y) __RENAME_LDBL(nextafter, 3, 21) __VERSIONER_NO_GUARD; 286684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 28750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble nexttoward(double __x, long double __y) __INTRODUCED_IN(18) __VERSIONER_NO_GUARD; 28850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat nexttowardf(float __x, long double __y); 28950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double nexttowardl(long double __x, long double __y) __RENAME_LDBL(nexttoward, 18, 18) __VERSIONER_NO_GUARD; 29050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 29150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble fdim(double __x, double __y); 292684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat fdimf(float __x, float __y); 29350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double fdiml(long double __x, long double __y) __RENAME_LDBL(fdim, 3, 3); 29450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 29550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble fmax(double __x, double __y) __attribute_const__; 296684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat fmaxf(float __x, float __y) __attribute_const__; 297d6541c2a97faa1f6401627f4661175b72b53839aElliott Hugheslong double fmaxl(long double __x, long double __y) __RENAME_LDBL(fmax, 3, 3) __attribute_const__; 29850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 29950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble fmin(double __x, double __y) __attribute_const__; 300684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat fminf(float __x, float __y) __attribute_const__; 301d6541c2a97faa1f6401627f4661175b72b53839aElliott Hugheslong double fminl(long double __x, long double __y) __RENAME_LDBL(fmin, 3, 3) __attribute_const__; 302684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 30350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesdouble fma(double __x, double __y, double __z); 30450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesfloat fmaf(float __x, float __y, float __z); 30550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hugheslong double fmal(long double __x, long double __y, long double __z) __RENAME_LDBL(fma, 3, 21) __VERSIONER_NO_GUARD; 30650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 30750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define isgreater(x, y) __builtin_isgreater((x), (y)) 30850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y)) 30950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define isless(x, y) __builtin_isless((x), (y)) 31050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define islessequal(x, y) __builtin_islessequal((x), (y)) 31150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define islessgreater(x, y) __builtin_islessgreater((x), (y)) 31250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define isunordered(x, y) __builtin_isunordered((x), (y)) 31350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 31450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* 31550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * https://code.google.com/p/android/issues/detail?id=271629 31650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * To be fully compliant with C++, we need to not define these (C doesn't 31750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * specify them either). Exposing these means that isinf and isnan will have a 31850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * return type of int in C++ rather than bool like they're supposed to be. 31950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * 32050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * GNU libstdc++ 4.9 isn't able to handle a standard compliant C library. Its 32150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * <cmath> will `#undef isnan` from math.h and only adds the function overloads 32250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * to the std namespace, making it impossible to use both <cmath> (which gets 32350cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes * included by a lot of other standard headers) and ::isnan. 32450cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes */ 32550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesint (isinf)(double __x) __attribute_const__ __INTRODUCED_IN(21); 32650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesint (isnan)(double __x) __attribute_const__; 32750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 32850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* POSIX extensions. */ 32950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 33050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughesextern int signgam; 331684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes 332684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble j0(double __x); 333684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble j1(double __x); 334684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble jn(int __n, double __x); 335684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble y0(double __x); 336684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble y1(double __x); 337684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble yn(int __n, double __x); 338c1929e44524c7c9fa2cc4fe33a5fedfdca2445a5Elliott Hughes 3393ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_E 2.7182818284590452354 /* e */ 3403ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LOG2E 1.4426950408889634074 /* log 2e */ 3413ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LOG10E 0.43429448190325182765 /* log 10e */ 3423ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LN2 0.69314718055994530942 /* log e2 */ 3433ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LN10 2.30258509299404568402 /* log e10 */ 3443ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_PI 3.14159265358979323846 /* pi */ 3453ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_PI_2 1.57079632679489661923 /* pi/2 */ 3463ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_PI_4 0.78539816339744830962 /* pi/4 */ 3473ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_1_PI 0.31830988618379067154 /* 1/pi */ 3483ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_2_PI 0.63661977236758134308 /* 2/pi */ 3493ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ 3503ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ 3513ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ 3529c8d711aa5ee3108a8e1e8959be9d0355ca0fa6aElliott Hughes 3533ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define MAXFLOAT ((float)3.40282346638528860e+38) 3549c8d711aa5ee3108a8e1e8959be9d0355ca0fa6aElliott Hughes 35550cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* BSD extensions. */ 35650cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 35750cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#if defined(__USE_BSD) 35850cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#define HUGE MAXFLOAT 35950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes#endif 36050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 36150cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* Extensions in both BSD and GNU. */ 36250cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 3639c8d711aa5ee3108a8e1e8959be9d0355ca0fa6aElliott Hughes#if defined(__USE_BSD) || defined(__USE_GNU) 364684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble gamma(double __x); 365684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble scalb(double __x, double __exponent); 366684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble drem(double __x, double __y); 367684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesint finite(double __x) __attribute_const__; 368684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesint isnanf(float __x) __attribute_const__; 369684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble gamma_r(double __x, int* __sign); 370684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble lgamma_r(double __x, int* __sign); 371684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesdouble significand(double __x); 372684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hugheslong double lgammal_r(long double __x, int* __sign) __INTRODUCED_IN(23); 373684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hugheslong double significandl(long double __x) __INTRODUCED_IN(21); 374684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat dremf(float __x, float __y); 375684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesint finitef(float __x) __attribute_const__; 376684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat gammaf(float __x); 377684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat j0f(float __x); 378684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat j1f(float __x); 379684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat jnf(int __n, float __x); 380684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat scalbf(float __x, float __exponent); 381684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat y0f(float __x); 382684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat y1f(float __x); 383684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat ynf(int __n, float __x); 384684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat gammaf_r(float __x, int* __sign); 385684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat lgammaf_r(float __x, int* __sign); 386684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesfloat significandf(float __x); 387755318548d787c7ca36901be064c69efba41c6cfElliott Hughes#endif 388755318548d787c7ca36901be064c69efba41c6cfElliott Hughes 38950cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes/* GNU extensions. */ 39050cda38f1ddfb0216e986f60cdc877fb9c55ebbaElliott Hughes 3915f5cc45cf0e027f6ca503dc229a4890fc7164b66Elliott Hughes#if defined(__USE_GNU) 3923ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_El 2.718281828459045235360287471352662498L /* e */ 3933ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LOG2El 1.442695040888963407359924681001892137L /* log 2e */ 3943ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LOG10El 0.434294481903251827651128918916605082L /* log 10e */ 3953ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LN2l 0.693147180559945309417232121458176568L /* log e2 */ 3963ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_LN10l 2.302585092994045684017991454684364208L /* log e10 */ 3973ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_PIl 3.141592653589793238462643383279502884L /* pi */ 3983ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ 3993ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ 4003ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ 4013ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ 4023ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */ 4033ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ 4043ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ 405684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesvoid sincos(double __x, double* __sin, double* __cos); 406684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesvoid sincosf(float __x, float* __sin, float* __cos); 407684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughesvoid sincosl(long double __x, long double* __sin, long double* __cos); 4083ba55f8022f3d5c5ca94a3df46fa658eda791987Elliott Hughes#endif 409b4f2f28054bf89b1367a99f67a9e9b569e4fda06Elliott Hughes 4101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS 4111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 412684c31a2676772ad1fa2005941dcb6f6493b7dfcElliott Hughes#endif 413