1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * ==================================================== 3*8d67ca89SAndroid Build Coastguard Worker * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 4*8d67ca89SAndroid Build Coastguard Worker * 5*8d67ca89SAndroid Build Coastguard Worker * Developed at SunPro, a Sun Microsystems, Inc. business. 6*8d67ca89SAndroid Build Coastguard Worker * Permission to use, copy, modify, and distribute this 7*8d67ca89SAndroid Build Coastguard Worker * software is freely granted, provided that this notice 8*8d67ca89SAndroid Build Coastguard Worker * is preserved. 9*8d67ca89SAndroid Build Coastguard Worker * ==================================================== 10*8d67ca89SAndroid Build Coastguard Worker */ 11*8d67ca89SAndroid Build Coastguard Worker 12*8d67ca89SAndroid Build Coastguard Worker /* 13*8d67ca89SAndroid Build Coastguard Worker * Originally based on fdlibm.h 5.1 via FreeBSD. 14*8d67ca89SAndroid Build Coastguard Worker */ 15*8d67ca89SAndroid Build Coastguard Worker 16*8d67ca89SAndroid Build Coastguard Worker #pragma once 17*8d67ca89SAndroid Build Coastguard Worker 18*8d67ca89SAndroid Build Coastguard Worker #include <sys/cdefs.h> 19*8d67ca89SAndroid Build Coastguard Worker #include <limits.h> 20*8d67ca89SAndroid Build Coastguard Worker 21*8d67ca89SAndroid Build Coastguard Worker __BEGIN_DECLS 22*8d67ca89SAndroid Build Coastguard Worker 23*8d67ca89SAndroid Build Coastguard Worker /* C11. */ 24*8d67ca89SAndroid Build Coastguard Worker 25*8d67ca89SAndroid Build Coastguard Worker typedef double __double_t; 26*8d67ca89SAndroid Build Coastguard Worker typedef __double_t double_t; 27*8d67ca89SAndroid Build Coastguard Worker typedef float __float_t; 28*8d67ca89SAndroid Build Coastguard Worker typedef __float_t float_t; 29*8d67ca89SAndroid Build Coastguard Worker 30*8d67ca89SAndroid Build Coastguard Worker #define HUGE_VAL __builtin_huge_val() 31*8d67ca89SAndroid Build Coastguard Worker #define HUGE_VALF __builtin_huge_valf() 32*8d67ca89SAndroid Build Coastguard Worker #define HUGE_VALL __builtin_huge_vall() 33*8d67ca89SAndroid Build Coastguard Worker 34*8d67ca89SAndroid Build Coastguard Worker #define INFINITY __builtin_inff() 35*8d67ca89SAndroid Build Coastguard Worker 36*8d67ca89SAndroid Build Coastguard Worker #define NAN __builtin_nanf("") 37*8d67ca89SAndroid Build Coastguard Worker 38*8d67ca89SAndroid Build Coastguard Worker #define FP_INFINITE 0x01 39*8d67ca89SAndroid Build Coastguard Worker #define FP_NAN 0x02 40*8d67ca89SAndroid Build Coastguard Worker #define FP_NORMAL 0x04 41*8d67ca89SAndroid Build Coastguard Worker #define FP_SUBNORMAL 0x08 42*8d67ca89SAndroid Build Coastguard Worker #define FP_ZERO 0x10 43*8d67ca89SAndroid Build Coastguard Worker 44*8d67ca89SAndroid Build Coastguard Worker #if defined(__FP_FAST_FMA) 45*8d67ca89SAndroid Build Coastguard Worker #define FP_FAST_FMA 1 46*8d67ca89SAndroid Build Coastguard Worker #endif 47*8d67ca89SAndroid Build Coastguard Worker #if defined(__FP_FAST_FMAF) 48*8d67ca89SAndroid Build Coastguard Worker #define FP_FAST_FMAF 1 49*8d67ca89SAndroid Build Coastguard Worker #endif 50*8d67ca89SAndroid Build Coastguard Worker #if defined(__FP_FAST_FMAL) 51*8d67ca89SAndroid Build Coastguard Worker #define FP_FAST_FMAL 1 52*8d67ca89SAndroid Build Coastguard Worker #endif 53*8d67ca89SAndroid Build Coastguard Worker 54*8d67ca89SAndroid Build Coastguard Worker #define FP_ILOGB0 (-INT_MAX) 55*8d67ca89SAndroid Build Coastguard Worker #define FP_ILOGBNAN INT_MAX 56*8d67ca89SAndroid Build Coastguard Worker 57*8d67ca89SAndroid Build Coastguard Worker #define MATH_ERRNO 1 58*8d67ca89SAndroid Build Coastguard Worker #define MATH_ERREXCEPT 2 59*8d67ca89SAndroid Build Coastguard Worker #define math_errhandling MATH_ERREXCEPT 60*8d67ca89SAndroid Build Coastguard Worker 61*8d67ca89SAndroid Build Coastguard Worker #define fpclassify(x) __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x) 62*8d67ca89SAndroid Build Coastguard Worker 63*8d67ca89SAndroid Build Coastguard Worker #define isfinite(x) __builtin_isfinite(x) 64*8d67ca89SAndroid Build Coastguard Worker 65*8d67ca89SAndroid Build Coastguard Worker #define isinf(x) __builtin_isinf(x) 66*8d67ca89SAndroid Build Coastguard Worker 67*8d67ca89SAndroid Build Coastguard Worker #define isnan(x) __builtin_isnan(x) 68*8d67ca89SAndroid Build Coastguard Worker 69*8d67ca89SAndroid Build Coastguard Worker #define isnormal(x) __builtin_isnormal(x) 70*8d67ca89SAndroid Build Coastguard Worker 71*8d67ca89SAndroid Build Coastguard Worker #define signbit(x) __builtin_signbit(x) 72*8d67ca89SAndroid Build Coastguard Worker 73*8d67ca89SAndroid Build Coastguard Worker double acos(double __x); 74*8d67ca89SAndroid Build Coastguard Worker float acosf(float __x); 75*8d67ca89SAndroid Build Coastguard Worker long double acosl(long double __x); 76*8d67ca89SAndroid Build Coastguard Worker 77*8d67ca89SAndroid Build Coastguard Worker double asin(double __x); 78*8d67ca89SAndroid Build Coastguard Worker float asinf(float __x); 79*8d67ca89SAndroid Build Coastguard Worker long double asinl(long double __x); 80*8d67ca89SAndroid Build Coastguard Worker 81*8d67ca89SAndroid Build Coastguard Worker double atan(double __x); 82*8d67ca89SAndroid Build Coastguard Worker float atanf(float __x); 83*8d67ca89SAndroid Build Coastguard Worker long double atanl(long double __x); 84*8d67ca89SAndroid Build Coastguard Worker 85*8d67ca89SAndroid Build Coastguard Worker double atan2(double __y, double __x); 86*8d67ca89SAndroid Build Coastguard Worker float atan2f(float __y, float __x); 87*8d67ca89SAndroid Build Coastguard Worker long double atan2l(long double __y, long double __x); 88*8d67ca89SAndroid Build Coastguard Worker 89*8d67ca89SAndroid Build Coastguard Worker double cos(double __x); 90*8d67ca89SAndroid Build Coastguard Worker float cosf(float __x); 91*8d67ca89SAndroid Build Coastguard Worker long double cosl(long double __x); 92*8d67ca89SAndroid Build Coastguard Worker 93*8d67ca89SAndroid Build Coastguard Worker double sin(double __x); 94*8d67ca89SAndroid Build Coastguard Worker float sinf(float __x); 95*8d67ca89SAndroid Build Coastguard Worker long double sinl(long double __x); 96*8d67ca89SAndroid Build Coastguard Worker 97*8d67ca89SAndroid Build Coastguard Worker double tan(double __x); 98*8d67ca89SAndroid Build Coastguard Worker float tanf(float __x); 99*8d67ca89SAndroid Build Coastguard Worker long double tanl(long double __x); 100*8d67ca89SAndroid Build Coastguard Worker 101*8d67ca89SAndroid Build Coastguard Worker double acosh(double __x); 102*8d67ca89SAndroid Build Coastguard Worker float acoshf(float __x); 103*8d67ca89SAndroid Build Coastguard Worker long double acoshl(long double __x); 104*8d67ca89SAndroid Build Coastguard Worker 105*8d67ca89SAndroid Build Coastguard Worker double asinh(double __x); 106*8d67ca89SAndroid Build Coastguard Worker float asinhf(float __x); 107*8d67ca89SAndroid Build Coastguard Worker long double asinhl(long double __x); 108*8d67ca89SAndroid Build Coastguard Worker 109*8d67ca89SAndroid Build Coastguard Worker double atanh(double __x); 110*8d67ca89SAndroid Build Coastguard Worker float atanhf(float __x); 111*8d67ca89SAndroid Build Coastguard Worker long double atanhl(long double __x); 112*8d67ca89SAndroid Build Coastguard Worker 113*8d67ca89SAndroid Build Coastguard Worker double cosh(double __x); 114*8d67ca89SAndroid Build Coastguard Worker float coshf(float __x); 115*8d67ca89SAndroid Build Coastguard Worker long double coshl(long double __x); 116*8d67ca89SAndroid Build Coastguard Worker 117*8d67ca89SAndroid Build Coastguard Worker double sinh(double __x); 118*8d67ca89SAndroid Build Coastguard Worker float sinhf(float __x); 119*8d67ca89SAndroid Build Coastguard Worker long double sinhl(long double __x); 120*8d67ca89SAndroid Build Coastguard Worker 121*8d67ca89SAndroid Build Coastguard Worker double tanh(double __x); 122*8d67ca89SAndroid Build Coastguard Worker float tanhf(float __x); 123*8d67ca89SAndroid Build Coastguard Worker long double tanhl(long double __x); 124*8d67ca89SAndroid Build Coastguard Worker 125*8d67ca89SAndroid Build Coastguard Worker double exp(double __x); 126*8d67ca89SAndroid Build Coastguard Worker float expf(float __x); 127*8d67ca89SAndroid Build Coastguard Worker long double expl(long double __x); 128*8d67ca89SAndroid Build Coastguard Worker 129*8d67ca89SAndroid Build Coastguard Worker double exp2(double __x); 130*8d67ca89SAndroid Build Coastguard Worker float exp2f(float __x); 131*8d67ca89SAndroid Build Coastguard Worker long double exp2l(long double __x); 132*8d67ca89SAndroid Build Coastguard Worker 133*8d67ca89SAndroid Build Coastguard Worker double expm1(double __x); 134*8d67ca89SAndroid Build Coastguard Worker float expm1f(float __x); 135*8d67ca89SAndroid Build Coastguard Worker long double expm1l(long double __x); 136*8d67ca89SAndroid Build Coastguard Worker 137*8d67ca89SAndroid Build Coastguard Worker double frexp(double __x, int* _Nonnull __exponent); 138*8d67ca89SAndroid Build Coastguard Worker float frexpf(float __x, int* _Nonnull __exponent); 139*8d67ca89SAndroid Build Coastguard Worker long double frexpl(long double __x, int* _Nonnull __exponent); 140*8d67ca89SAndroid Build Coastguard Worker 141*8d67ca89SAndroid Build Coastguard Worker int ilogb(double __x) __attribute_const__; 142*8d67ca89SAndroid Build Coastguard Worker int ilogbf(float __x) __attribute_const__; 143*8d67ca89SAndroid Build Coastguard Worker int ilogbl(long double __x) __attribute_const__; 144*8d67ca89SAndroid Build Coastguard Worker 145*8d67ca89SAndroid Build Coastguard Worker double ldexp(double __x, int __exponent); 146*8d67ca89SAndroid Build Coastguard Worker float ldexpf(float __x, int __exponent); 147*8d67ca89SAndroid Build Coastguard Worker long double ldexpl(long double __x, int __exponent); 148*8d67ca89SAndroid Build Coastguard Worker 149*8d67ca89SAndroid Build Coastguard Worker double log(double __x); 150*8d67ca89SAndroid Build Coastguard Worker float logf(float __x); 151*8d67ca89SAndroid Build Coastguard Worker long double logl(long double __x); 152*8d67ca89SAndroid Build Coastguard Worker 153*8d67ca89SAndroid Build Coastguard Worker double log10(double __x); 154*8d67ca89SAndroid Build Coastguard Worker float log10f(float __x); 155*8d67ca89SAndroid Build Coastguard Worker long double log10l(long double __x); 156*8d67ca89SAndroid Build Coastguard Worker 157*8d67ca89SAndroid Build Coastguard Worker double log1p(double __x); 158*8d67ca89SAndroid Build Coastguard Worker float log1pf(float __x); 159*8d67ca89SAndroid Build Coastguard Worker long double log1pl(long double __x); 160*8d67ca89SAndroid Build Coastguard Worker 161*8d67ca89SAndroid Build Coastguard Worker double log2(double __x); 162*8d67ca89SAndroid Build Coastguard Worker float log2f(float __x); 163*8d67ca89SAndroid Build Coastguard Worker long double log2l(long double __x); 164*8d67ca89SAndroid Build Coastguard Worker 165*8d67ca89SAndroid Build Coastguard Worker double logb(double __x); 166*8d67ca89SAndroid Build Coastguard Worker float logbf(float __x); 167*8d67ca89SAndroid Build Coastguard Worker long double logbl(long double __x); 168*8d67ca89SAndroid Build Coastguard Worker 169*8d67ca89SAndroid Build Coastguard Worker double modf(double __x, double* _Nonnull __integral_part); 170*8d67ca89SAndroid Build Coastguard Worker float modff(float __x, float* _Nonnull __integral_part); 171*8d67ca89SAndroid Build Coastguard Worker long double modfl(long double __x, long double* _Nonnull __integral_part); 172*8d67ca89SAndroid Build Coastguard Worker 173*8d67ca89SAndroid Build Coastguard Worker double scalbn(double __x, int __exponent); 174*8d67ca89SAndroid Build Coastguard Worker float scalbnf(float __x, int __exponent); 175*8d67ca89SAndroid Build Coastguard Worker long double scalbnl(long double __x, int __exponent); 176*8d67ca89SAndroid Build Coastguard Worker 177*8d67ca89SAndroid Build Coastguard Worker double scalbln(double __x, long __exponent); 178*8d67ca89SAndroid Build Coastguard Worker float scalblnf(float __x, long __exponent); 179*8d67ca89SAndroid Build Coastguard Worker long double scalblnl(long double __x, long __exponent); 180*8d67ca89SAndroid Build Coastguard Worker 181*8d67ca89SAndroid Build Coastguard Worker double cbrt(double __x); 182*8d67ca89SAndroid Build Coastguard Worker float cbrtf(float __x); 183*8d67ca89SAndroid Build Coastguard Worker long double cbrtl(long double __x); 184*8d67ca89SAndroid Build Coastguard Worker 185*8d67ca89SAndroid Build Coastguard Worker double fabs(double __x) __attribute_const__; 186*8d67ca89SAndroid Build Coastguard Worker float fabsf(float __x) __attribute_const__; 187*8d67ca89SAndroid Build Coastguard Worker long double fabsl(long double __x) __attribute_const__; 188*8d67ca89SAndroid Build Coastguard Worker 189*8d67ca89SAndroid Build Coastguard Worker double hypot(double __x, double __y); 190*8d67ca89SAndroid Build Coastguard Worker float hypotf(float __x, float __y); 191*8d67ca89SAndroid Build Coastguard Worker long double hypotl(long double __x, long double __y); 192*8d67ca89SAndroid Build Coastguard Worker 193*8d67ca89SAndroid Build Coastguard Worker double pow(double __x, double __y); 194*8d67ca89SAndroid Build Coastguard Worker float powf(float __x, float __y); 195*8d67ca89SAndroid Build Coastguard Worker long double powl(long double __x, long double __y); 196*8d67ca89SAndroid Build Coastguard Worker 197*8d67ca89SAndroid Build Coastguard Worker double sqrt(double __x); 198*8d67ca89SAndroid Build Coastguard Worker float sqrtf(float __x); 199*8d67ca89SAndroid Build Coastguard Worker long double sqrtl(long double __x); 200*8d67ca89SAndroid Build Coastguard Worker 201*8d67ca89SAndroid Build Coastguard Worker double erf(double __x); 202*8d67ca89SAndroid Build Coastguard Worker float erff(float __x); 203*8d67ca89SAndroid Build Coastguard Worker long double erfl(long double __x); 204*8d67ca89SAndroid Build Coastguard Worker 205*8d67ca89SAndroid Build Coastguard Worker double erfc(double __x); 206*8d67ca89SAndroid Build Coastguard Worker float erfcf(float __x); 207*8d67ca89SAndroid Build Coastguard Worker long double erfcl(long double __x); 208*8d67ca89SAndroid Build Coastguard Worker 209*8d67ca89SAndroid Build Coastguard Worker double lgamma(double __x); 210*8d67ca89SAndroid Build Coastguard Worker float lgammaf(float __x); 211*8d67ca89SAndroid Build Coastguard Worker long double lgammal(long double __x); 212*8d67ca89SAndroid Build Coastguard Worker 213*8d67ca89SAndroid Build Coastguard Worker double tgamma(double __x); 214*8d67ca89SAndroid Build Coastguard Worker float tgammaf(float __x); 215*8d67ca89SAndroid Build Coastguard Worker long double tgammal(long double __x); 216*8d67ca89SAndroid Build Coastguard Worker 217*8d67ca89SAndroid Build Coastguard Worker double ceil(double __x); 218*8d67ca89SAndroid Build Coastguard Worker float ceilf(float __x); 219*8d67ca89SAndroid Build Coastguard Worker long double ceill(long double __x); 220*8d67ca89SAndroid Build Coastguard Worker 221*8d67ca89SAndroid Build Coastguard Worker double floor(double __x); 222*8d67ca89SAndroid Build Coastguard Worker float floorf(float __x); 223*8d67ca89SAndroid Build Coastguard Worker long double floorl(long double __x); 224*8d67ca89SAndroid Build Coastguard Worker 225*8d67ca89SAndroid Build Coastguard Worker double nearbyint(double __x); 226*8d67ca89SAndroid Build Coastguard Worker float nearbyintf(float __x); 227*8d67ca89SAndroid Build Coastguard Worker long double nearbyintl(long double __x); 228*8d67ca89SAndroid Build Coastguard Worker 229*8d67ca89SAndroid Build Coastguard Worker double rint(double __x); 230*8d67ca89SAndroid Build Coastguard Worker float rintf(float __x); 231*8d67ca89SAndroid Build Coastguard Worker long double rintl(long double __x); 232*8d67ca89SAndroid Build Coastguard Worker 233*8d67ca89SAndroid Build Coastguard Worker long lrint(double __x); 234*8d67ca89SAndroid Build Coastguard Worker long lrintf(float __x); 235*8d67ca89SAndroid Build Coastguard Worker long lrintl(long double __x); 236*8d67ca89SAndroid Build Coastguard Worker 237*8d67ca89SAndroid Build Coastguard Worker long long llrint(double __x); 238*8d67ca89SAndroid Build Coastguard Worker long long llrintf(float __x); 239*8d67ca89SAndroid Build Coastguard Worker long long llrintl(long double __x); 240*8d67ca89SAndroid Build Coastguard Worker 241*8d67ca89SAndroid Build Coastguard Worker double round(double __x); 242*8d67ca89SAndroid Build Coastguard Worker float roundf(float __x); 243*8d67ca89SAndroid Build Coastguard Worker long double roundl(long double __x); 244*8d67ca89SAndroid Build Coastguard Worker 245*8d67ca89SAndroid Build Coastguard Worker long lround(double __x); 246*8d67ca89SAndroid Build Coastguard Worker long lroundf(float __x); 247*8d67ca89SAndroid Build Coastguard Worker long lroundl(long double __x); 248*8d67ca89SAndroid Build Coastguard Worker 249*8d67ca89SAndroid Build Coastguard Worker long long llround(double __x); 250*8d67ca89SAndroid Build Coastguard Worker long long llroundf(float __x); 251*8d67ca89SAndroid Build Coastguard Worker long long llroundl(long double __x); 252*8d67ca89SAndroid Build Coastguard Worker 253*8d67ca89SAndroid Build Coastguard Worker double trunc(double __x); 254*8d67ca89SAndroid Build Coastguard Worker float truncf(float __x); 255*8d67ca89SAndroid Build Coastguard Worker long double truncl(long double __x); 256*8d67ca89SAndroid Build Coastguard Worker 257*8d67ca89SAndroid Build Coastguard Worker double fmod(double __x, double __y); 258*8d67ca89SAndroid Build Coastguard Worker float fmodf(float __x, float __y); 259*8d67ca89SAndroid Build Coastguard Worker long double fmodl(long double __x, long double __y); 260*8d67ca89SAndroid Build Coastguard Worker 261*8d67ca89SAndroid Build Coastguard Worker double remainder(double __x, double __y); 262*8d67ca89SAndroid Build Coastguard Worker float remainderf(float __x, float __y); 263*8d67ca89SAndroid Build Coastguard Worker long double remainderl(long double __x, long double __y); 264*8d67ca89SAndroid Build Coastguard Worker 265*8d67ca89SAndroid Build Coastguard Worker double remquo(double __x, double __y, int* _Nonnull __quotient_bits); 266*8d67ca89SAndroid Build Coastguard Worker float remquof(float __x, float __y, int* _Nonnull __quotient_bits); 267*8d67ca89SAndroid Build Coastguard Worker long double remquol(long double __x, long double __y, int* _Nonnull __quotient_bits); 268*8d67ca89SAndroid Build Coastguard Worker 269*8d67ca89SAndroid Build Coastguard Worker double copysign(double __value, double __sign) __attribute_const__; 270*8d67ca89SAndroid Build Coastguard Worker float copysignf(float __value, float __sign) __attribute_const__; 271*8d67ca89SAndroid Build Coastguard Worker long double copysignl(long double __value, long double __sign) __attribute_const__; 272*8d67ca89SAndroid Build Coastguard Worker 273*8d67ca89SAndroid Build Coastguard Worker double nan(const char* _Nonnull __kind) __attribute_const__; 274*8d67ca89SAndroid Build Coastguard Worker float nanf(const char* _Nonnull __kind) __attribute_const__; 275*8d67ca89SAndroid Build Coastguard Worker long double nanl(const char* _Nonnull __kind) __attribute_const__; 276*8d67ca89SAndroid Build Coastguard Worker 277*8d67ca89SAndroid Build Coastguard Worker double nextafter(double __x, double __y); 278*8d67ca89SAndroid Build Coastguard Worker float nextafterf(float __x, float __y); 279*8d67ca89SAndroid Build Coastguard Worker long double nextafterl(long double __x, long double __y); 280*8d67ca89SAndroid Build Coastguard Worker 281*8d67ca89SAndroid Build Coastguard Worker double nexttoward(double __x, long double __y); 282*8d67ca89SAndroid Build Coastguard Worker float nexttowardf(float __x, long double __y); 283*8d67ca89SAndroid Build Coastguard Worker long double nexttowardl(long double __x, long double __y); 284*8d67ca89SAndroid Build Coastguard Worker 285*8d67ca89SAndroid Build Coastguard Worker double fdim(double __x, double __y); 286*8d67ca89SAndroid Build Coastguard Worker float fdimf(float __x, float __y); 287*8d67ca89SAndroid Build Coastguard Worker long double fdiml(long double __x, long double __y); 288*8d67ca89SAndroid Build Coastguard Worker 289*8d67ca89SAndroid Build Coastguard Worker double fmax(double __x, double __y) __attribute_const__; 290*8d67ca89SAndroid Build Coastguard Worker float fmaxf(float __x, float __y) __attribute_const__; 291*8d67ca89SAndroid Build Coastguard Worker long double fmaxl(long double __x, long double __y) __attribute_const__; 292*8d67ca89SAndroid Build Coastguard Worker 293*8d67ca89SAndroid Build Coastguard Worker double fmin(double __x, double __y) __attribute_const__; 294*8d67ca89SAndroid Build Coastguard Worker float fminf(float __x, float __y) __attribute_const__; 295*8d67ca89SAndroid Build Coastguard Worker long double fminl(long double __x, long double __y) __attribute_const__; 296*8d67ca89SAndroid Build Coastguard Worker 297*8d67ca89SAndroid Build Coastguard Worker double fma(double __x, double __y, double __z); 298*8d67ca89SAndroid Build Coastguard Worker float fmaf(float __x, float __y, float __z); 299*8d67ca89SAndroid Build Coastguard Worker long double fmal(long double __x, long double __y, long double __z); 300*8d67ca89SAndroid Build Coastguard Worker 301*8d67ca89SAndroid Build Coastguard Worker #define isgreater(x, y) __builtin_isgreater((x), (y)) 302*8d67ca89SAndroid Build Coastguard Worker #define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y)) 303*8d67ca89SAndroid Build Coastguard Worker #define isless(x, y) __builtin_isless((x), (y)) 304*8d67ca89SAndroid Build Coastguard Worker #define islessequal(x, y) __builtin_islessequal((x), (y)) 305*8d67ca89SAndroid Build Coastguard Worker #define islessgreater(x, y) __builtin_islessgreater((x), (y)) 306*8d67ca89SAndroid Build Coastguard Worker #define isunordered(x, y) __builtin_isunordered((x), (y)) 307*8d67ca89SAndroid Build Coastguard Worker 308*8d67ca89SAndroid Build Coastguard Worker /* POSIX extensions. */ 309*8d67ca89SAndroid Build Coastguard Worker 310*8d67ca89SAndroid Build Coastguard Worker extern int signgam; 311*8d67ca89SAndroid Build Coastguard Worker 312*8d67ca89SAndroid Build Coastguard Worker double j0(double __x); 313*8d67ca89SAndroid Build Coastguard Worker double j1(double __x); 314*8d67ca89SAndroid Build Coastguard Worker double jn(int __n, double __x); 315*8d67ca89SAndroid Build Coastguard Worker double y0(double __x); 316*8d67ca89SAndroid Build Coastguard Worker double y1(double __x); 317*8d67ca89SAndroid Build Coastguard Worker double yn(int __n, double __x); 318*8d67ca89SAndroid Build Coastguard Worker 319*8d67ca89SAndroid Build Coastguard Worker #define M_E 2.7182818284590452354 /* e */ 320*8d67ca89SAndroid Build Coastguard Worker #define M_LOG2E 1.4426950408889634074 /* log 2e */ 321*8d67ca89SAndroid Build Coastguard Worker #define M_LOG10E 0.43429448190325182765 /* log 10e */ 322*8d67ca89SAndroid Build Coastguard Worker #define M_LN2 0.69314718055994530942 /* log e2 */ 323*8d67ca89SAndroid Build Coastguard Worker #define M_LN10 2.30258509299404568402 /* log e10 */ 324*8d67ca89SAndroid Build Coastguard Worker #define M_PI 3.14159265358979323846 /* pi */ 325*8d67ca89SAndroid Build Coastguard Worker #define M_PI_2 1.57079632679489661923 /* pi/2 */ 326*8d67ca89SAndroid Build Coastguard Worker #define M_PI_4 0.78539816339744830962 /* pi/4 */ 327*8d67ca89SAndroid Build Coastguard Worker #define M_1_PI 0.31830988618379067154 /* 1/pi */ 328*8d67ca89SAndroid Build Coastguard Worker #define M_2_PI 0.63661977236758134308 /* 2/pi */ 329*8d67ca89SAndroid Build Coastguard Worker #define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ 330*8d67ca89SAndroid Build Coastguard Worker #define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ 331*8d67ca89SAndroid Build Coastguard Worker #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ 332*8d67ca89SAndroid Build Coastguard Worker 333*8d67ca89SAndroid Build Coastguard Worker #define MAXFLOAT ((float)3.40282346638528860e+38) 334*8d67ca89SAndroid Build Coastguard Worker 335*8d67ca89SAndroid Build Coastguard Worker /* BSD extensions. */ 336*8d67ca89SAndroid Build Coastguard Worker 337*8d67ca89SAndroid Build Coastguard Worker #if defined(__USE_BSD) 338*8d67ca89SAndroid Build Coastguard Worker #define HUGE MAXFLOAT 339*8d67ca89SAndroid Build Coastguard Worker #endif 340*8d67ca89SAndroid Build Coastguard Worker 341*8d67ca89SAndroid Build Coastguard Worker /* Extensions in both BSD and GNU. */ 342*8d67ca89SAndroid Build Coastguard Worker 343*8d67ca89SAndroid Build Coastguard Worker #if defined(__USE_BSD) || defined(__USE_GNU) 344*8d67ca89SAndroid Build Coastguard Worker double gamma(double __x); 345*8d67ca89SAndroid Build Coastguard Worker double scalb(double __x, double __exponent); 346*8d67ca89SAndroid Build Coastguard Worker double drem(double __x, double __y); 347*8d67ca89SAndroid Build Coastguard Worker int finite(double __x) __attribute_const__; 348*8d67ca89SAndroid Build Coastguard Worker int isinff(float __x) __attribute_const__; 349*8d67ca89SAndroid Build Coastguard Worker int isnanf(float __x) __attribute_const__; 350*8d67ca89SAndroid Build Coastguard Worker double gamma_r(double __x, int* _Nonnull __sign); 351*8d67ca89SAndroid Build Coastguard Worker double lgamma_r(double __x, int* _Nonnull __sign); 352*8d67ca89SAndroid Build Coastguard Worker double significand(double __x); 353*8d67ca89SAndroid Build Coastguard Worker 354*8d67ca89SAndroid Build Coastguard Worker #if __BIONIC_AVAILABILITY_GUARD(23) 355*8d67ca89SAndroid Build Coastguard Worker long double lgammal_r(long double __x, int* _Nonnull __sign) __INTRODUCED_IN(23); 356*8d67ca89SAndroid Build Coastguard Worker #endif /* __BIONIC_AVAILABILITY_GUARD(23) */ 357*8d67ca89SAndroid Build Coastguard Worker 358*8d67ca89SAndroid Build Coastguard Worker long double significandl(long double __x); 359*8d67ca89SAndroid Build Coastguard Worker float dremf(float __x, float __y); 360*8d67ca89SAndroid Build Coastguard Worker int finitef(float __x) __attribute_const__; 361*8d67ca89SAndroid Build Coastguard Worker float gammaf(float __x); 362*8d67ca89SAndroid Build Coastguard Worker float j0f(float __x); 363*8d67ca89SAndroid Build Coastguard Worker float j1f(float __x); 364*8d67ca89SAndroid Build Coastguard Worker float jnf(int __n, float __x); 365*8d67ca89SAndroid Build Coastguard Worker float scalbf(float __x, float __exponent); 366*8d67ca89SAndroid Build Coastguard Worker float y0f(float __x); 367*8d67ca89SAndroid Build Coastguard Worker float y1f(float __x); 368*8d67ca89SAndroid Build Coastguard Worker float ynf(int __n, float __x); 369*8d67ca89SAndroid Build Coastguard Worker float gammaf_r(float __x, int* _Nonnull __sign); 370*8d67ca89SAndroid Build Coastguard Worker float lgammaf_r(float __x, int* _Nonnull __sign); 371*8d67ca89SAndroid Build Coastguard Worker float significandf(float __x); 372*8d67ca89SAndroid Build Coastguard Worker void sincos(double __x, double* _Nonnull __sin, double* _Nonnull __cos); 373*8d67ca89SAndroid Build Coastguard Worker void sincosf(float __x, float* _Nonnull __sin, float* _Nonnull __cos); 374*8d67ca89SAndroid Build Coastguard Worker void sincosl(long double __x, long double* _Nonnull __sin, long double* _Nonnull __cos); 375*8d67ca89SAndroid Build Coastguard Worker #endif 376*8d67ca89SAndroid Build Coastguard Worker 377*8d67ca89SAndroid Build Coastguard Worker /* GNU extensions. */ 378*8d67ca89SAndroid Build Coastguard Worker 379*8d67ca89SAndroid Build Coastguard Worker #if defined(__USE_GNU) 380*8d67ca89SAndroid Build Coastguard Worker #define M_El 2.718281828459045235360287471352662498L /* e */ 381*8d67ca89SAndroid Build Coastguard Worker #define M_LOG2El 1.442695040888963407359924681001892137L /* log 2e */ 382*8d67ca89SAndroid Build Coastguard Worker #define M_LOG10El 0.434294481903251827651128918916605082L /* log 10e */ 383*8d67ca89SAndroid Build Coastguard Worker #define M_LN2l 0.693147180559945309417232121458176568L /* log e2 */ 384*8d67ca89SAndroid Build Coastguard Worker #define M_LN10l 2.302585092994045684017991454684364208L /* log e10 */ 385*8d67ca89SAndroid Build Coastguard Worker #define M_PIl 3.141592653589793238462643383279502884L /* pi */ 386*8d67ca89SAndroid Build Coastguard Worker #define M_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ 387*8d67ca89SAndroid Build Coastguard Worker #define M_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ 388*8d67ca89SAndroid Build Coastguard Worker #define M_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ 389*8d67ca89SAndroid Build Coastguard Worker #define M_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ 390*8d67ca89SAndroid Build Coastguard Worker #define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */ 391*8d67ca89SAndroid Build Coastguard Worker #define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ 392*8d67ca89SAndroid Build Coastguard Worker #define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ 393*8d67ca89SAndroid Build Coastguard Worker int isinfl(long double __x) __attribute_const__; 394*8d67ca89SAndroid Build Coastguard Worker int isnanl(long double __x) __attribute_const__; 395*8d67ca89SAndroid Build Coastguard Worker #endif 396*8d67ca89SAndroid Build Coastguard Worker 397*8d67ca89SAndroid Build Coastguard Worker __END_DECLS 398