1 #ifndef DataFormatsMathAPPROX_EXP_H 2 #define DataFormatsMathAPPROX_EXP_H 49 #ifdef HORNER // HORNER 70 #ifdef HORNER // HORNER 72 #else // ESTRIN does seem to save a cycle or two 73 float p56 =
float(0x4.48f41p-8) +
y *
float(0xb.6ad4p-12);
77 float p36 = p34 + y2*p56;
78 float p16 = p12 + y2*p36;
79 float p =
float(0
x2.p0) + y*p16;
133 float z =
fpfloor((x*inv_log2f) +0.5
f);
149 float p = approx_expf_P<DEGREE>(y);
153 uint32_t biased_exponent= e+127;
154 ef.
ui32=(biased_exponent<<23);
160 #ifndef NO_APPROX_MATH 164 return unsafe_expf_impl<DEGREE>(x);
177 float r = unsafe_expf<DEGREE>(x);
192 #endif // NO_APPROX_MATH
constexpr float approx_expf_P(float p)
constexpr float fpfloor(float x)
constexpr float approx_expf_P< 5 >(float y)
constexpr float approx_expf_P< 2 >(float y)
constexpr float approx_expf_P< 6 >(float y)
constexpr float approx_expf(float x)
constexpr float approx_expf_P< 3 >(float y)
constexpr float unsafe_expf(float x)
constexpr float approx_expf_P< 4 >(float y)
constexpr float unsafe_expf_impl(float x)
constexpr float approx_expf_P< 7 >(float y)