79 return float(0x2.p0) + y * (
float(0x2.07b99p0) + y *
float(0x1.025b84p0)) ;
84 #ifdef HORNER // HORNER 85 return float(0x2.p0) + y * (
float(0x1.fff798p0) + y * (
float(0x1.02249p0) + y *
float(0x5.62042p-4))) ;
87 float p23 = (
float(0x1.02249p0) + y *
float(0x5.62042p-4)) ;
88 float p01 =
float(0x2.p0) + y *
float(0x1.fff798p0);
95 return float(0x2.p0) + y * (
float(0x1.fffb1p0) + y * (
float(0xf.ffe84p-4) + y * (
float(0x5.5f9c1p-4) + y *
float(0x1.57755p-4)))) ;
100 return float(0x2.p0) + y * (
float(0x2.p0) + y * (
float(0xf.ffed8p-4) + y * (
float(0x5.5551cp-4) + y * (
float(0x1.5740d8p-4) + y *
float(0x4.49368p-8))))) ;
105 #ifdef HORNER // HORNER 106 float p =
float(0x2.p0) + y * (
float(0x2.p0) + y * (
float(0x1.p0) + y * (
float(0x5.55523p-4) + y * (
float(0x1.5554dcp-4) + y * (
float(0x4.48f41p-8) + y *
float(0xb.6ad4p-12)))))) ;
107 #else // ESTRIN does seem to save a cycle or two 108 float p56 =
float(0x4.48f41p-8) + y *
float(0xb.6ad4p-12);
109 float p34 =
float(0x5.55523p-4) + y *
float(0x1.5554dcp-4);
111 float p12 =
float(0x2.p0) + y;
112 float p36 = p34 + y2*p56;
113 float p16 = p12 + y2*p36;
114 float p =
float(0x2.p0) + y*p16;
122 return float(0x2.p0) + y * (
float(0x2.p0) + y * (
float(0x1.p0) + y * (
float(0x5.55555p-4) + y * (
float(0x1.5554e4p-4) + y * (
float(0x4.444adp-8) + y * (
float(0xb.6a8a6p-12) + y *
float(0x1.9ec814p-12))))))) ;
168 float z =
fpfloor((x*inv_log2f) +0.5
f);
184 float p = approx_expf_P<DEGREE>(y);
188 uint32_t biased_exponent= e+127;
189 ef.
ui32=(biased_exponent<<23);
195 #ifndef NO_APPROX_MATH 199 return unsafe_expf_impl<DEGREE>(x);
212 float r = unsafe_expf<DEGREE>(x);
227 #endif // NO_APPROX_MATH float approx_expf_P< 2 >(float y)
float approx_expf_P(float p)
float approx_expf_P< 5 >(float y)
float approx_expf_P< 3 >(float y)
float approx_expf_P< 6 >(float y)
T x() const
Cartesian x coordinate.
float unsafe_expf_impl(float x)
float unsafe_expf(float x)
float approx_expf_P< 4 >(float y)
float approx_expf_P< 7 >(float y)
float approx_expf(float x)