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 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * $FreeBSD: src/lib/msun/src/math_private.h,v 1.20 2005/11/28 04:58:57 bde Exp $ 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _MATH_PRIVATE_H_ 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _MATH_PRIVATE_H_ 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/types.h> 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <endian.h> 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * The original fdlibm code used statements like: 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * n0 = ((*(int*)&one)>>29)^1; * index of high word * 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ix0 = *(n0+(int*)&x); * high word of x * 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ix1 = *((1-n0)+(int*)&x); * low word of x * 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * to dig two 32 bit words out of the 64 bit IEEE floating point 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * value. That is non-ANSI, and, moreover, the gcc instruction 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * scheduler gets it wrong. We instead use the following macros. 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Unlike the original code, we determine the endianness at compile 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * time, not at run time; I don't see much benefit to selecting 331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * endianness at run time. 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * A union which permits us to convert between a double and two 32 bit 381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ints. 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if (__BYTE_ORDER == __BIG_ENDIAN) || (defined(__arm__) && !defined(__VFP_FP__)) 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef union 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project double value; 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project { 481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int32_t msw; 491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int32_t lsw; 501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } parts; 511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ieee_double_shape_type; 521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if __BYTE_ORDER == __LITTLE_ENDIAN && !(defined(__arm__) && !defined(__VFP_FP__)) 561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef union 581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project double value; 601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct 611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project { 621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int32_t lsw; 631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int32_t msw; 641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } parts; 651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ieee_double_shape_type; 661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Get two 32 bit ints from a double. */ 701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EXTRACT_WORDS(ix0,ix1,d) \ 721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_double_shape_type ew_u; \ 741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ew_u.value = (d); \ 751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (ix0) = ew_u.parts.msw; \ 761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (ix1) = ew_u.parts.lsw; \ 771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Get the more significant 32 bit int from a double. */ 801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define GET_HIGH_WORD(i,d) \ 821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_double_shape_type gh_u; \ 841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project gh_u.value = (d); \ 851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (i) = gh_u.parts.msw; \ 861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Get the less significant 32 bit int from a double. */ 891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define GET_LOW_WORD(i,d) \ 911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_double_shape_type gl_u; \ 931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project gl_u.value = (d); \ 941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (i) = gl_u.parts.lsw; \ 951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Set a double from two 32 bit ints. */ 981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define INSERT_WORDS(d,ix0,ix1) \ 1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_double_shape_type iw_u; \ 1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project iw_u.parts.msw = (ix0); \ 1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project iw_u.parts.lsw = (ix1); \ 1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (d) = iw_u.value; \ 1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Set the more significant 32 bits of a double from an int. */ 1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define SET_HIGH_WORD(d,v) \ 1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_double_shape_type sh_u; \ 1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project sh_u.value = (d); \ 1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project sh_u.parts.msw = (v); \ 1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (d) = sh_u.value; \ 1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Set the less significant 32 bits of a double from an int. */ 1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define SET_LOW_WORD(d,v) \ 1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_double_shape_type sl_u; \ 1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project sl_u.value = (d); \ 1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project sl_u.parts.lsw = (v); \ 1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (d) = sl_u.value; \ 1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * A union which permits us to convert between a float and a 32 bit 1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * int. 1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef union 1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project float value; 1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* FIXME: Assumes 32 bit int. */ 1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned int word; 1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ieee_float_shape_type; 1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Get a 32 bit int from a float. */ 1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define GET_FLOAT_WORD(i,d) \ 1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_float_shape_type gf_u; \ 1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project gf_u.value = (d); \ 1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (i) = gf_u.word; \ 1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Set a float from a 32 bit int. */ 1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define SET_FLOAT_WORD(d,i) \ 1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdo { \ 1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ieee_float_shape_type sf_u; \ 1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project sf_u.word = (i); \ 1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (d) = sf_u.value; \ 1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} while (0) 1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef _COMPLEX_H 1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Inline functions that can be used to construct complex values. 1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * The C99 standard intends x+I*y to be used for this, but x+I*y is 1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * currently unusable in general since gcc introduces many overflow, 1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * underflow, sign and efficiency bugs by rewriting I*y as 1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * (0.0+I)*(y+0.0*I) and laboriously computing the full complex product. 1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * In particular, I*Inf is corrupted to NaN+I*Inf, and I*-0 is corrupted 1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * to -0.0+I*0.0. 1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstatic __inline float complex 1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectcpackf(float x, float y) 1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project float complex z; 1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __real__ z = x; 1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __imag__ z = y; 1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project return (z); 1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} 1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstatic __inline double complex 1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectcpack(double x, double y) 1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project double complex z; 1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __real__ z = x; 1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __imag__ z = y; 1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project return (z); 1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} 1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstatic __inline long double complex 1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectcpackl(long double x, long double y) 1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{ 1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project long double complex z; 1921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __real__ z = x; 1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __imag__ z = y; 1951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project return (z); 1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} 1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* _COMPLEX_H */ 1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ieee style elementary functions 2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * We rename functions here to improve other sources' diffability 2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * against fdlibm. 2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_sqrt sqrt 2061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_acos acos 2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_acosh acosh 2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_log log 2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_atanh atanh 2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_asin asin 2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_atan2 atan2 2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_exp exp 2131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_cosh cosh 2141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_fmod fmod 2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_pow pow 2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_lgamma lgamma 2171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_gamma gamma 2181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_lgamma_r lgamma_r 2191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_gamma_r gamma_r 2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_log10 log10 2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_sinh sinh 2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_hypot hypot 2231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_j0 j0 2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_j1 j1 2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_y0 y0 2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_y1 y1 2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_jn jn 2281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_yn yn 2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_remainder remainder 2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_scalb scalb 2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_sqrtf sqrtf 2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_acosf acosf 2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_acoshf acoshf 2341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_logf logf 2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_atanhf atanhf 2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_asinf asinf 2371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_atan2f atan2f 2381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_expf expf 2391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_coshf coshf 2401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_fmodf fmodf 2411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_powf powf 2421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_lgammaf lgammaf 2431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_gammaf gammaf 2441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_lgammaf_r lgammaf_r 2451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_gammaf_r gammaf_r 2461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_log10f log10f 2471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_sinhf sinhf 2481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_hypotf hypotf 2491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_j0f j0f 2501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_j1f j1f 2511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_y0f y0f 2521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_y1f y1f 2531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_jnf jnf 2541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_ynf ynf 2551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_remainderf remainderf 2561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_scalbf scalbf 2571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __ieee754_ldexpf ldexpf 2581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* fdlibm kernel function */ 2601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint __ieee754_rem_pio2(double,double*); 2611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble __kernel_sin(double,double,int); 2621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble __kernel_cos(double,double); 2631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectdouble __kernel_tan(double,double,int); 2641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint __kernel_rem_pio2(double*,double*,int,int,int,const int*); 2651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* float versions of fdlibm kernel functions */ 2671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint __ieee754_rem_pio2f(float,float*); 2681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat __kernel_sindf(double); 2691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat __kernel_cosdf(double); 2701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectfloat __kernel_tandf(double,int); 2711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint __kernel_rem_pio2f(float*,float*,int,int,int,const int*); 2721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* !_MATH_PRIVATE_H_ */ 274