26 #ifndef EIGEN_MATH_FUNCTIONS_MSA_H 27 #define EIGEN_MATH_FUNCTIONS_MSA_H 53 Packet4i neg_mask = __builtin_msa_fclt_w(_x, zero);
54 Packet4i zero_mask = __builtin_msa_fceq_w(_x, zero);
60 Packet4i e_int = __builtin_msa_ftint_s_w(__builtin_msa_flog2_w(x));
62 x = __builtin_msa_fexp2_w(x, (
Packet4i)__builtin_msa_nori_b((v16u8)e_int, 0));
73 Packet4i ge_mask = __builtin_msa_fcle_w(p4f_cephes_SQRTHF, x);
74 e_int =
psub(e_int, ge_mask);
75 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)ge_mask, (v16u8)xx, (v16u8)
x);
77 Packet4f e = __builtin_msa_ffint_s_w(e_int);
83 y =
pmadd(p4f_cephes_log_p0, x, p4f_cephes_log_p1);
84 y1 =
pmadd(p4f_cephes_log_p3, x, p4f_cephes_log_p4);
85 y2 =
pmadd(p4f_cephes_log_p6, x, p4f_cephes_log_p7);
86 y =
pmadd(y, x, p4f_cephes_log_p2);
87 y1 =
pmadd(y1, x, p4f_cephes_log_p5);
88 y2 =
pmadd(y2, x, p4f_cephes_log_p8);
93 y =
pmadd(e, p4f_cephes_log_q1, y);
94 x = __builtin_msa_fmsub_w(x, x2, p4f_half);
96 x =
pmadd(e, p4f_cephes_log_q2, x);
112 x = __builtin_msa_fmin_w(x, non_neg_x_or_nan);
115 Packet4i neg_infs = __builtin_msa_slli_w(zero_mask, 23);
116 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)zero_mask, (v16u8)x, (v16u8)neg_infs);
143 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(x, p4f_exp_lo), (v16u8)x,
145 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_exp_hi, x), (v16u8)x,
149 Packet4f x2_add = (
Packet4f)__builtin_msa_binsli_w((v4u32)p4f_half, (v4u32)x, 0);
151 Packet4i x2_int = __builtin_msa_ftrunc_s_w(x2);
152 Packet4f x2_int_f = __builtin_msa_ffint_s_w(x2_int);
154 x = __builtin_msa_fmsub_w(x, x2_int_f, p4f_cephes_exp_C1);
155 x = __builtin_msa_fmsub_w(x, x2_int_f, p4f_cephes_exp_C2);
160 y =
pmadd(y, x, p4f_cephes_exp_p1);
161 y =
pmadd(y, x, p4f_cephes_exp_p2);
162 y =
pmadd(y, x, p4f_cephes_exp_p3);
163 y =
pmadd(y, x, p4f_cephes_exp_p4);
164 y =
pmadd(y, x, p4f_cephes_exp_p5);
169 y = __builtin_msa_fexp2_w(y, x2_int);
194 Packet4i tiny_mask = __builtin_msa_fclt_w(x, p4f_tanh_tiny);
198 x = (
Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_tanh_hi, x), (v16u8)x,
206 p =
pmadd(x2, p, p4f_alpha_9);
207 p =
pmadd(x2, p, p4f_alpha_7);
208 p =
pmadd(x2, p, p4f_alpha_5);
209 p =
pmadd(x2, p, p4f_alpha_3);
210 p =
pmadd(x2, p, p4f_alpha_1);
215 q =
pmadd(x2, q, p4f_beta_2);
216 q =
pmadd(x2, q, p4f_beta_0);
222 p = (
Packet4f)__builtin_msa_binsli_w((v4u32)
p, (v4u32)_x, 0);
225 p = (
Packet4f)__builtin_msa_bsel_v((v16u8)tiny_mask, (v16u8)p, (v16u8)_x);
250 x =
padd(x, zero_or_nan_if_inf);
253 Packet4i small_or_nan_mask = __builtin_msa_fcult_w(x, p4f_sincos_max_arg);
259 Packet4i y_int = __builtin_msa_ftrunc_s_w(y);
263 Packet4i y_int1 = __builtin_msa_addvi_w(y_int, 1);
265 y = __builtin_msa_ffint_s_w(y_int2);
269 : __builtin_msa_slli_w(__builtin_msa_addvi_w(y_int, 3), 29);
273 Packet4i poly_mask = __builtin_msa_ceqi_w(__builtin_msa_slli_w(y_int2, 30), 0);
288 y =
pmadd(y, z, p4f_coscof_p1);
289 y =
pmadd(y, z, p4f_coscof_p2);
292 y = __builtin_msa_fmsub_w(y, z, p4f_half);
297 y2 =
pmadd(y2, z, p4f_sincof_p1);
298 y2 =
pmadd(y2, z, p4f_sincof_p2);
300 y2 =
pmadd(y2, x, x);
303 y = sine ? (
Packet4f)__builtin_msa_bsel_v((v16u8)poly_mask, (v16u8)y, (v16u8)y2)
304 : (
Packet4f)__builtin_msa_bsel_v((v16u8)poly_mask, (v16u8)y2, (v16u8)y);
308 y = (
Packet4f)__builtin_msa_binsli_w((v4u32)
y, (v4u32)sign_mask, 0);
348 x = (
Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(x, p2d_exp_lo), (v16u8)x,
350 x = (
Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(p2d_exp_hi, x), (v16u8)x,
354 Packet2d x2_add = (
Packet2d)__builtin_msa_binsli_d((v2u64)p2d_half, (v2u64)x, 0);
356 Packet2l x2_long = __builtin_msa_ftrunc_s_d(x2);
357 Packet2d x2_long_d = __builtin_msa_ffint_s_d(x2_long);
359 x = __builtin_msa_fmsub_d(x, x2_long_d, p2d_cephes_exp_C1);
360 x = __builtin_msa_fmsub_d(x, x2_long_d, p2d_cephes_exp_C2);
365 px =
pmadd(px, x2, p2d_cephes_exp_p1);
366 px =
pmadd(px, x2, p2d_cephes_exp_p2);
370 qx =
pmadd(qx, x2, p2d_cephes_exp_q1);
371 qx =
pmadd(qx, x2, p2d_cephes_exp_q2);
372 qx =
pmadd(qx, x2, p2d_cephes_exp_q3);
375 x =
pmadd(p2d_2, x, p2d_1);
378 x = __builtin_msa_fexp2_d(x, x2_long);
387 #endif // EIGEN_MATH_FUNCTIONS_MSA_H
EIGEN_DONT_INLINE Scalar zero()
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f psin< Packet4f >(const Packet4f &_x)
__vector unsigned int Packet4ui
Namespace containing all symbols from the Eigen library.
Pose3 x2(Rot3::Ypr(0.0, 0.0, 0.0), l2)
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
#define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f ptanh< Packet4f >(const Packet4f &x)
RealScalar RealScalar * px
Point2(* f)(const Point3 &, OptionalJacobian< 2, 3 >)
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f plog< Packet4f >(const Packet4f &_x)
Packet4f psincos_inner_msa_float(const Packet4f &_x)
Array< double, 1, 3 > e(1./3., 0.5, 2.)
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f pcos< Packet4f >(const Packet4f &_x)
EIGEN_DEVICE_FUNC const Scalar & q
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Pose3 x3(Rot3::Ypr(M_PI/4.0, 0.0, 0.0), l2)
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
static _EIGEN_DECLARE_CONST_Packet4f(1, 1.0f)
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f pexp< Packet4f >(const Packet4f &_x)
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet2d pexp< Packet2d >(const Packet2d &_x)
EIGEN_DEVICE_FUNC Packet pmul(const Packet &a, const Packet &b)
static _EIGEN_DECLARE_CONST_Packet2d(1, 1.0)
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)