12 #ifndef EIGEN_MATH_FUNCTIONS_NEON_H 13 #define EIGEN_MATH_FUNCTIONS_NEON_H 19 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
20 Packet4f pexp<Packet4f>(
const Packet4f& _x)
25 _EIGEN_DECLARE_CONST_Packet4f(1 , 1.0f);
26 _EIGEN_DECLARE_CONST_Packet4f(half, 0.5f);
27 _EIGEN_DECLARE_CONST_Packet4i(0x7f, 0x7f);
28 _EIGEN_DECLARE_CONST_Packet4f(exp_hi, 88.3762626647950f);
29 _EIGEN_DECLARE_CONST_Packet4f(exp_lo, -88.3762626647949f);
30 _EIGEN_DECLARE_CONST_Packet4f(cephes_LOG2EF, 1.44269504088896341f);
31 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_C1, 0.693359375f);
32 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_C2, -2.12194440e-4f);
33 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p0, 1.9875691500E-4f);
34 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p1, 1.3981999507E-3f);
35 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p2, 8.3334519073E-3f);
36 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p3, 4.1665795894E-2f);
37 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p4, 1.6666665459E-1f);
38 _EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p5, 5.0000001201E-1f);
40 x = vminq_f32(x, p4f_exp_hi);
41 x = vmaxq_f32(x, p4f_exp_lo);
44 fx = vmlaq_f32(p4f_half, x, p4f_cephes_LOG2EF);
47 tmp = vcvtq_f32_s32(vcvtq_s32_f32(fx));
50 Packet4ui mask = vcgtq_f32(tmp, fx);
51 mask = vandq_u32(mask, vreinterpretq_u32_f32(p4f_1));
53 fx = vsubq_f32(tmp, vreinterpretq_f32_u32(mask));
55 tmp = vmulq_f32(fx, p4f_cephes_exp_C1);
56 Packet4f z = vmulq_f32(fx, p4f_cephes_exp_C2);
57 x = vsubq_f32(x, tmp);
60 Packet4f y = vmulq_f32(p4f_cephes_exp_p0, x);
62 y = vaddq_f32(y, p4f_cephes_exp_p1);
64 y = vaddq_f32(y, p4f_cephes_exp_p2);
66 y = vaddq_f32(y, p4f_cephes_exp_p3);
68 y = vaddq_f32(y, p4f_cephes_exp_p4);
70 y = vaddq_f32(y, p4f_cephes_exp_p5);
74 y = vaddq_f32(y, p4f_1);
78 mm = vcvtq_s32_f32(fx);
79 mm = vaddq_s32(mm, p4i_0x7f);
80 mm = vshlq_n_s32(mm, 23);
81 Packet4f pow2n = vreinterpretq_f32_s32(mm);
83 y = vmulq_f32(y, pow2n);
91 #endif // EIGEN_MATH_FUNCTIONS_NEON_H Namespace containing all symbols from the Eigen library.
Definition: Core:287
Definition: Eigen_Colamd.h:50