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