16 #ifndef EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_H
17 #define EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_H
20 #include "../../InternalHeaderCheck.h"
84 template <
typename Packet,
int N>
93 template <
typename Packet>
98 return pset1<Packet>(coeff[0]);
154 template <
typename Packet,
int N>
159 Packet b0 = pset1<Packet>(coef[0]);
163 for (
int i = 1;
i <
N;
i++) {
166 b0 =
psub(
pmadd(
x, b1, pset1<Packet>(coef[
i])), b2);
169 return pmul(pset1<Packet>(
static_cast<Scalar>(0.5f)),
psub(b0, b2));
173 template <
typename Packet>
177 static constexpr
int mantissa_bits = numext::numeric_limits<Scalar>::digits - 1;
178 return pcast<PacketI, Packet>(plogical_shift_right<mantissa_bits>(preinterpret<PacketI>(
pabs(
a))));
183 template <
typename Packet>
187 static constexpr
int TotalBits =
sizeof(
Scalar) * CHAR_BIT, MantissaBits = numext::numeric_limits<Scalar>::digits - 1,
188 ExponentBits = TotalBits - MantissaBits - 1;
191 ~(((ScalarUI(1) << ExponentBits) - ScalarUI(1)) << MantissaBits);
192 const Packet sign_mantissa_mask = pset1frombits<Packet>(
static_cast<ScalarUI
>(scalar_sign_mantissa_mask));
199 EIGEN_CONSTEXPR ScalarUI scalar_normalization_offset = ScalarUI(MantissaBits + 1);
201 const Scalar scalar_normalization_factor =
Scalar(ScalarUI(1) <<
int(scalar_normalization_offset));
202 const Packet normalization_factor = pset1<Packet>(scalar_normalization_factor);
206 const Scalar scalar_exponent_offset = -
Scalar((ScalarUI(1) << (ExponentBits - 1)) - ScalarUI(2));
207 Packet exponent_offset = pset1<Packet>(scalar_exponent_offset);
208 const Packet normalization_offset = pset1<Packet>(-
Scalar(scalar_normalization_offset));
209 exponent_offset =
pselect(is_denormal,
padd(exponent_offset, normalization_offset), exponent_offset);
215 const Scalar scalar_non_finite_exponent =
Scalar((ScalarUI(1) << ExponentBits) - ScalarUI(1));
216 const Packet non_finite_exponent = pset1<Packet>(scalar_non_finite_exponent);
219 exponent =
pselect(is_zero_or_not_finite,
zero,
padd(exponent, exponent_offset));
225 template <
typename Packet>
252 static constexpr
int TotalBits =
sizeof(
Scalar) * CHAR_BIT, MantissaBits = numext::numeric_limits<Scalar>::digits - 1,
253 ExponentBits = TotalBits - MantissaBits - 1;
255 const Packet max_exponent = pset1<Packet>(
Scalar((ScalarI(1) << ExponentBits) + ScalarI(MantissaBits - 1)));
256 const PacketI bias = pset1<PacketI>((ScalarI(1) << (ExponentBits - 1)) - ScalarI(1));
257 const PacketI
e = pcast<Packet, PacketI>(
pmin(
pmax(exponent,
pnegate(max_exponent)), max_exponent));
258 PacketI
b = parithmetic_shift_right<2>(
e);
259 Packet c = preinterpret<Packet>(plogical_shift_left<MantissaBits>(
padd(
b, bias)));
262 c = preinterpret<Packet>(plogical_shift_left<MantissaBits>(
padd(
b, bias)));
276 template <
typename Packet>
281 static constexpr
int TotalBits =
sizeof(
Scalar) * CHAR_BIT, MantissaBits = numext::numeric_limits<Scalar>::digits - 1,
282 ExponentBits = TotalBits - MantissaBits - 1;
284 const Packet bias = pset1<Packet>(
Scalar((ScalarI(1) << (ExponentBits - 1)) - ScalarI(1)));
285 const Packet limit = pset1<Packet>(
Scalar((ScalarI(1) << ExponentBits) - ScalarI(1)));
287 const PacketI
e = pcast<Packet, PacketI>(
pmin(
pmax(
padd(exponent, bias),
pzero(limit)), limit));
289 return pmul(
a, preinterpret<Packet>(plogical_shift_left<MantissaBits>(
e)));
298 template <
typename Packet,
bool base2>
300 const Packet cst_1 = pset1<Packet>(1.0f);
304 const Packet cst_cephes_SQRTHF = pset1<Packet>(0.707106781186547524f);
324 constexpr
float alpha[] = {0.18256296349849254f, 1.0000000190281063f, 1.0000000190281136f};
325 constexpr
float beta[] = {0.049616247954120038f, 0.59923249590823520f, 1.4999999999999927f, 1.0f};
348 return pselect(iszero_mask, cst_minus_inf,
por(
pselect(pos_inf_mask, cst_pos_inf,
x), invalid_mask));
351 template <
typename Packet>
356 template <
typename Packet>
370 template <
typename Packet,
bool base2>
374 const Packet cst_1 = pset1<Packet>(1.0);
375 const Packet cst_neg_half = pset1<Packet>(-0.5);
376 const Packet cst_minus_inf = pset1frombits<Packet>(
static_cast<uint64_t>(0xfff0000000000000ull));
377 const Packet cst_pos_inf = pset1frombits<Packet>(
static_cast<uint64_t>(0x7ff0000000000000ull));
381 const Packet cst_cephes_SQRTHF = pset1<Packet>(0.70710678118654752440E0);
382 const Packet cst_cephes_log_p0 = pset1<Packet>(1.01875663804580931796E-4);
383 const Packet cst_cephes_log_p1 = pset1<Packet>(4.97494994976747001425E-1);
384 const Packet cst_cephes_log_p2 = pset1<Packet>(4.70579119878881725854E0);
385 const Packet cst_cephes_log_p3 = pset1<Packet>(1.44989225341610930846E1);
386 const Packet cst_cephes_log_p4 = pset1<Packet>(1.79368678507819816313E1);
387 const Packet cst_cephes_log_p5 = pset1<Packet>(7.70838733755885391666E0);
389 const Packet cst_cephes_log_q0 = pset1<Packet>(1.0);
390 const Packet cst_cephes_log_q1 = pset1<Packet>(1.12873587189167450590E1);
391 const Packet cst_cephes_log_q2 = pset1<Packet>(4.52279145837532221105E1);
392 const Packet cst_cephes_log_q3 = pset1<Packet>(8.29875266912776603211E1);
393 const Packet cst_cephes_log_q4 = pset1<Packet>(7.11544750618563894466E1);
394 const Packet cst_cephes_log_q5 = pset1<Packet>(2.31251620126765340583E1);
419 y =
pmadd(cst_cephes_log_p0,
x, cst_cephes_log_p1);
420 y1 =
pmadd(cst_cephes_log_p3,
x, cst_cephes_log_p4);
422 y1 =
pmadd(y1,
x, cst_cephes_log_p5);
425 y =
pmadd(cst_cephes_log_q0,
x, cst_cephes_log_q1);
426 y1 =
pmadd(cst_cephes_log_q3,
x, cst_cephes_log_q4);
428 y1 =
pmadd(y1,
x, cst_cephes_log_q5);
453 return pselect(iszero_mask, cst_minus_inf,
por(
pselect(pos_inf_mask, cst_pos_inf,
x), invalid_mask));
456 template <
typename Packet>
461 template <
typename Packet>
469 template <
typename Packet>
472 const Packet one = pset1<Packet>(ScalarType(1));
478 return pselect(
por(small_mask, inf_mask),
x, log_large);
484 template <
typename Packet>
487 const Packet one = pset1<Packet>(ScalarType(1));
488 const Packet neg_one = pset1<Packet>(ScalarType(-1));
508 template <
typename Packet>
510 const Packet cst_zero = pset1<Packet>(0.0f);
511 const Packet cst_one = pset1<Packet>(1.0f);
512 const Packet cst_half = pset1<Packet>(0.5f);
513 const Packet cst_exp_hi = pset1<Packet>(88.723f);
514 const Packet cst_exp_lo = pset1<Packet>(-104.f);
515 const Packet cst_pldexp_threshold = pset1<Packet>(87.0);
517 const Packet cst_cephes_LOG2EF = pset1<Packet>(1.44269504088896341f);
518 const Packet cst_p2 = pset1<Packet>(0.49999988079071044921875f);
519 const Packet cst_p3 = pset1<Packet>(0.16666518151760101318359375f);
520 const Packet cst_p4 = pset1<Packet>(4.166965186595916748046875e-2f);
521 const Packet cst_p5 = pset1<Packet>(8.36894474923610687255859375e-3f);
522 const Packet cst_p6 = pset1<Packet>(1.37449637986719608306884765625e-3f);
535 const Packet cst_cephes_exp_C1 = pset1<Packet>(-0.693359375f);
536 const Packet cst_cephes_exp_C2 = pset1<Packet>(2.12194440e-4f);
545 p_even =
pmadd(r2, p_even, cst_p2);
560 template <
typename Packet>
563 const Packet cst_zero = pset1<Packet>(0.0);
564 const Packet cst_1 = pset1<Packet>(1.0);
565 const Packet cst_2 = pset1<Packet>(2.0);
566 const Packet cst_half = pset1<Packet>(0.5);
568 const Packet cst_exp_hi = pset1<Packet>(709.784);
569 const Packet cst_exp_lo = pset1<Packet>(-745.519);
570 const Packet cst_pldexp_threshold = pset1<Packet>(708.0);
571 const Packet cst_cephes_LOG2EF = pset1<Packet>(1.4426950408889634073599);
572 const Packet cst_cephes_exp_p0 = pset1<Packet>(1.26177193074810590878e-4);
573 const Packet cst_cephes_exp_p1 = pset1<Packet>(3.02994407707441961300e-2);
574 const Packet cst_cephes_exp_p2 = pset1<Packet>(9.99999999999999999910e-1);
575 const Packet cst_cephes_exp_q0 = pset1<Packet>(3.00198505138664455042e-6);
576 const Packet cst_cephes_exp_q1 = pset1<Packet>(2.52448340349684104192e-3);
577 const Packet cst_cephes_exp_q2 = pset1<Packet>(2.27265548208155028766e-1);
578 const Packet cst_cephes_exp_q3 = pset1<Packet>(2.00000000000000000009e0);
579 const Packet cst_cephes_exp_C1 = pset1<Packet>(0.693145751953125);
580 const Packet cst_cephes_exp_C2 = pset1<Packet>(1.42860682030941723212e-6);
588 fx =
pmadd(cst_cephes_LOG2EF,
x, cst_half);
596 tmp =
pmul(fx, cst_cephes_exp_C1);
610 Packet qx = cst_cephes_exp_q0;
611 qx =
pmadd(qx,
x2, cst_cephes_exp_q1);
612 qx =
pmadd(qx,
x2, cst_cephes_exp_q2);
613 qx =
pmadd(qx,
x2, cst_cephes_exp_q3);
647 const double pio2_62 = 3.4061215800865545e-19;
652 static const uint32_t two_over_pi[] = {
653 0x00000028, 0x000028be, 0x0028be60, 0x28be60db, 0xbe60db93, 0x60db9391, 0xdb939105, 0x9391054a, 0x91054a7f,
654 0x054a7f09, 0x4a7f09d5, 0x7f09d5f4, 0x09d5f47d, 0xd5f47d4d, 0xf47d4d37, 0x7d4d3770, 0x4d377036, 0x377036d8,
655 0x7036d8a5, 0x36d8a566, 0xd8a5664f, 0xa5664f10, 0x664f10e4, 0x4f10e410, 0x10e41000, 0xe4100000};
657 uint32_t xi = numext::bit_cast<uint32_t>(xf);
664 xi = ((xi & 0x007fffffu) | 0x00800000u) << (
e & 0x7);
685 return float(
double(
int64_t(
p)) * pio2_62);
688 template <
bool ComputeSine,
typename Packet,
bool ComputeBoth = false>
690 #if EIGEN_COMP_GNUC_STRICT
697 const Packet cst_2oPI = pset1<Packet>(0.636619746685028076171875f);
698 const Packet cst_rounding_magic = pset1<Packet>(12582912);
699 const PacketI csti_1 = pset1<PacketI>(1);
710 PacketI y_int = preinterpret<PacketI>(y_round);
711 y =
psub(y_round, cst_rounding_magic);
715 #if defined(EIGEN_VECTORIZE_FMA)
718 const float huge_th = ComputeSine ? 117435.992f : 71476.0625f;
719 x =
pmadd(
y, pset1<Packet>(-1.57079601287841796875f),
x);
720 x =
pmadd(
y, pset1<Packet>(-3.1391647326017846353352069854736328125e-07f),
x);
721 x =
pmadd(
y, pset1<Packet>(-5.390302529957764765544681040410068817436695098876953125e-15f),
x);
729 const float huge_th = ComputeSine ? 25966.f : 18838.f;
730 x =
pmadd(
y, pset1<Packet>(-1.5703125),
x);
732 x =
pmadd(
y, pset1<Packet>(-0.000483989715576171875),
x);
734 x =
pmadd(
y, pset1<Packet>(1.62865035235881805419921875e-07),
x);
735 x =
pmadd(
y, pset1<Packet>(5.5644315544167710640977020375430583953857421875e-11),
x);
759 for (
int k = 0;
k < PacketSize; ++
k) {
763 x = ploadu<Packet>(
x_cpy);
764 y_int = ploadu<PacketI>(y_int2);
770 Packet sign_bit = ComputeSine ?
pxor(_x, preinterpret<Packet>(plogical_shift_left<30>(y_int)))
771 : preinterpret<Packet>(plogical_shift_left<30>(
padd(y_int, csti_1)));
772 sign_bit =
pand(sign_bit, cst_sign_mask);
781 Packet y1 = pset1<Packet>(2.4372266125283204019069671630859375e-05f);
782 y1 =
pmadd(y1,
x2, pset1<Packet>(-0.00138865201734006404876708984375f));
783 y1 =
pmadd(y1,
x2, pset1<Packet>(0.041666619479656219482421875f));
784 y1 =
pmadd(y1,
x2, pset1<Packet>(-0.5f));
785 y1 =
pmadd(y1,
x2, pset1<Packet>(1.f));
795 Packet y2 = pset1<Packet>(-0.0001959234114083702898469196984621021329076029360294342041015625f);
796 y2 =
pmadd(y2,
x2, pset1<Packet>(0.0083326873655616851693794799871284340042620897293090820312500000f));
797 y2 =
pmadd(y2,
x2, pset1<Packet>(-0.1666666203982298255503735617821803316473960876464843750000000000f));
806 Packet sign_bit_sin =
pxor(_x, preinterpret<Packet>(plogical_shift_left<30>(y_int)));
807 Packet sign_bit_cos = preinterpret<Packet>(plogical_shift_left<30>(
padd(y_int, csti_1)));
808 sign_bit_sin =
pand(sign_bit_sin, cst_sign_mask);
809 sign_bit_cos =
pand(sign_bit_cos, cst_sign_mask);
812 y = ComputeSine ?
pselect(poly_mask, y2, y1) :
pselect(poly_mask, y1, y2);
819 template <
typename Packet>
821 return psincos_float<true>(
x);
824 template <
typename Packet>
826 return psincos_float<false>(
x);
832 template <
typename Packet>
835 const Packet cst_pio2_a = pset1<Packet>(-1.570796325802803);
836 const Packet cst_pio2_b = pset1<Packet>(-9.920935184482005e-10);
847 template <
typename Packet>
850 const Packet cst_pio2_a = pset1<Packet>(-1.570796325802803);
851 const Packet cst_pio2_b = pset1<Packet>(-9.920935184482005e-10);
852 const Packet cst_pio2_c = pset1<Packet>(-6.123234014771656e-17);
853 const Packet cst_pio2_d = pset1<Packet>(1.903488962019325e-25);
856 t =
pmadd(cst_pio2_a, q_high,
x);
857 t =
pmadd(cst_pio2_a, q_low,
t);
858 t =
pmadd(cst_pio2_b, q_high,
t);
859 t =
pmadd(cst_pio2_b, q_low,
t);
860 t =
pmadd(cst_pio2_c, q_high,
t);
861 t =
pmadd(cst_pio2_c, q_low,
t);
866 template <
bool ComputeSine,
typename Packet,
bool ComputeBoth = false>
868 #if EIGEN_COMP_GNUC_STRICT
879 const double small_th = 15;
881 const double huge_th = 1e14;
883 const Packet cst_2oPI = pset1<Packet>(0.63661977236758134307553505349006);
885 const PacketI cst_one = pset1<PacketI>(ScalarI(1));
887 const Packet cst_split = pset1<Packet>(1 << 24);
899 q_int = pcast<Packet, PacketI>(
padd(q_low_noround, pset1<Packet>(0.5)));
900 Packet q_low = pcast<PacketI, Packet>(q_int);
904 q_int = pcast<Packet, PacketI>(
padd(qval_noround, pset1<Packet>(0.5)));
905 Packet q = pcast<PacketI, Packet>(q_int);
920 Packet sc1_num =
pmadd(ss, pset1<Packet>(80737373), pset1<Packet>(-13853547000));
921 Packet sc2_num =
pmadd(sc1_num, ss, pset1<Packet>(727718024880));
922 Packet sc3_num =
pmadd(sc2_num, ss, pset1<Packet>(-11275015752000));
923 Packet sc4_num =
pmadd(sc3_num, ss, pset1<Packet>(23594700729600));
924 Packet sc1_denum =
pmadd(ss, pset1<Packet>(147173), pset1<Packet>(39328920));
925 Packet sc2_denum =
pmadd(sc1_denum, ss, pset1<Packet>(5772800880));
926 Packet sc3_denum =
pmadd(sc2_denum, ss, pset1<Packet>(522334612800));
927 Packet sc4_denum =
pmadd(sc3_denum, ss, pset1<Packet>(23594700729600));
938 Packet ss1_num =
pmadd(ss, pset1<Packet>(4585922449), pset1<Packet>(-1066023933480));
939 Packet ss2_num =
pmadd(ss1_num, ss, pset1<Packet>(83284044283440));
940 Packet ss3_num =
pmadd(ss2_num, ss, pset1<Packet>(-2303682236856000));
941 Packet ss4_num =
pmadd(ss3_num, ss, pset1<Packet>(15605159573203200));
942 Packet ss1_denum =
pmadd(ss, pset1<Packet>(1029037), pset1<Packet>(345207016));
943 Packet ss2_denum =
pmadd(ss1_denum, ss, pset1<Packet>(61570292784));
944 Packet ss3_denum =
pmadd(ss2_denum, ss, pset1<Packet>(6603948711360));
945 Packet ss4_denum =
pmadd(ss3_denum, ss, pset1<Packet>(346781323848960));
950 Packet sign_sin =
pxor(
x, preinterpret<Packet>(plogical_shift_left<62>(q_int)));
951 Packet sign_cos = preinterpret<Packet>(plogical_shift_left<62>(
padd(q_int, cst_one)));
952 Packet sign_bit, sFinalRes;
955 sign_bit =
pselect((
s), sign_sin, sign_cos);
956 sFinalRes =
pselect(
pxor(peven, poly_mask), ssin, scos);
958 sign_bit = ComputeSine ? sign_sin : sign_cos;
959 sFinalRes = ComputeSine ?
pselect(poly_mask, ssin, scos) :
pselect(poly_mask, scos, ssin);
961 sign_bit =
pand(sign_bit, cst_sign_mask);
962 sFinalRes =
pxor(sFinalRes, sign_bit);
972 pstoreu(sincos_vals, sFinalRes);
973 for (
int k = 0;
k < PacketSize; ++
k) {
982 sFinalRes = ploadu<Packet>(sincos_vals);
987 template <
typename Packet>
989 return psincos_double<true>(
x);
992 template <
typename Packet>
994 return psincos_double<false>(
x);
998 template <
typename Packet>
1005 const Packet p6 = pset1<Packet>(
Scalar(2.36423197202384471893310546875e-3));
1006 const Packet p5 = pset1<Packet>(
Scalar(-1.1368644423782825469970703125e-2));
1007 const Packet p4 = pset1<Packet>(
Scalar(2.717843465507030487060546875e-2));
1008 const Packet p3 = pset1<Packet>(
Scalar(-4.8969544470310211181640625e-2));
1009 const Packet p2 = pset1<Packet>(
Scalar(8.8804088532924652099609375e-2));
1010 const Packet p1 = pset1<Packet>(
Scalar(-0.214591205120086669921875));
1011 const Packet p0 = pset1<Packet>(
Scalar(1.57079637050628662109375));
1026 p_even =
pmadd(p_even,
x2, p2);
1037 return pselect(neg_mask,
psub(cst_pi, result), result);
1041 template <
typename Packet>
1046 constexpr
float kPiOverTwo =
static_cast<float>(
EIGEN_PI / 2);
1048 const Packet cst_half = pset1<Packet>(0.5f);
1049 const Packet cst_one = pset1<Packet>(1.0f);
1050 const Packet cst_two = pset1<Packet>(2.0f);
1051 const Packet cst_pi_over_two = pset1<Packet>(kPiOverTwo);
1069 constexpr
float alpha[] = {5.08838854730129241943359375e-2f, 3.95139865577220916748046875e-2f,
1070 7.550220191478729248046875e-2f, 0.16664917767047882080078125f, 1.00000011920928955078125f};
1079 return por(invalid_mask,
p);
1082 template <
typename Scalar>
1084 template <
typename Packet>
1089 template <
typename Packet>
1091 constexpr
double alpha[] = {2.6667153866462208e-05, 3.0917513112462781e-03, 5.2574296781008604e-02,
1092 3.0409318473444424e-01, 7.5365702534987022e-01, 8.2704055405494614e-01,
1093 3.3004361289279920e-01};
1095 constexpr
double beta[] = {
1096 2.7311202462436667e-04, 1.0899150928962708e-02, 1.1548932646420353e-01, 4.9716458728465573e-01, 1.0,
1097 9.3705509168587852e-01, 3.3004361289279920e-01};
1107 template <
typename Packet>
1109 constexpr
float alpha[] = {1.12026982009410858154296875e-01f, 7.296695709228515625e-01f, 8.109951019287109375e-01f};
1111 constexpr
float beta[] = {1.00917108356952667236328125e-02f, 2.8318560123443603515625e-01f, 1.0f,
1112 8.109951019287109375e-01f};
1120 template <
typename Packet>
1128 const Packet cst_pi_over_two = pset1<Packet>(kPiOverTwo);
1135 const Packet x_signmask =
pand(x_in, cst_signmask);
1142 return pxor(result, x_signmask);
1154 template <
typename T>
1160 #ifdef EIGEN_VECTORIZE_FMA
1161 const T plus_clamp = pset1<T>(8.01773357391357422f);
1162 const T minus_clamp = pset1<T>(-8.01773357391357422f);
1164 const T plus_clamp = pset1<T>(7.90738964080810547f);
1165 const T minus_clamp = pset1<T>(-7.90738964080810547f);
1167 const T x =
pmax(
pmin(a_x, plus_clamp), minus_clamp);
1177 constexpr
float alpha[] = {1.394553628e-8f, 2.102733560e-5f, 3.520756727e-3f, 1.340216100e-1f};
1180 constexpr
float beta[] = {8.015776984e-7f, 3.326951409e-4f, 2.597254514e-2f, 4.673548340e-1f, 1.0f};
1205 template <
typename T>
1211 #ifdef EIGEN_VECTORIZE_FMA
1212 const T plus_clamp = pset1<T>(17.6610191624600077);
1213 const T minus_clamp = pset1<T>(-17.6610191624600077);
1215 const T plus_clamp = pset1<T>(17.714196154005176);
1216 const T minus_clamp = pset1<T>(-17.714196154005176);
1218 const T x =
pmax(
pmin(a_x, plus_clamp), minus_clamp);
1228 constexpr
double alpha[] = {2.6158007860482230e-23, 7.6534862268749319e-19, 3.1309488231386680e-15,
1229 4.2303918148209176e-12, 2.4618379131293676e-09, 6.8644367682497074e-07,
1230 9.3839087674268880e-05, 5.9809711724441161e-03, 1.5184719640284322e-01};
1233 constexpr
double beta[] = {6.463747022670968018e-21, 5.782506856739003571e-17,
1234 1.293019623712687916e-13, 1.123643448069621992e-10,
1235 4.492975677839633985e-08, 8.785185266237658698e-06,
1236 8.295161192716231542e-04, 3.437448108450402717e-02,
1237 4.851805297361760360e-01, 1.0};
1255 template <
typename Packet>
1262 constexpr
float alpha[] = {0.1819281280040740966796875f, 8.2311116158962249755859375e-2f,
1263 0.14672131836414337158203125f, 0.1997792422771453857421875f, 0.3333373963832855224609375f};
1271 const Packet one = pset1<Packet>(1.0f);
1278 const Packet sign_mask = pset1<Packet>(-0.0f);
1280 const Packet inf = pset1<Packet>(std::numeric_limits<float>::infinity());
1284 template <
typename Packet>
1290 constexpr
double alpha[] = {3.3071338469301391e-03, -4.7129526768798737e-02, 1.8185306179826699e-01,
1291 -2.5949536095445679e-01, 1.2306328729812676e-01};
1293 constexpr
double beta[] = {-3.8679974580640881e-03, 7.6391885763341910e-02, -4.2828141436397615e-01,
1294 9.8733495886883648e-01, -1.0000000000000000e+00, 3.6918986189438030e-01};
1304 const Packet one = pset1<Packet>(1.0);
1311 const Packet sign_mask = pset1<Packet>(-0.0);
1313 const Packet inf = pset1<Packet>(std::numeric_limits<double>::infinity());
1317 template <
typename Packet>
1323 const RealPacket y_abs =
pabs(
y.v);
1325 const RealPacket y_max =
pmax(y_abs, y_abs_flip);
1326 const RealPacket y_scaled =
pdiv(
y.v, y_max);
1328 const RealPacket y_scaled_sq =
pmul(y_scaled, y_scaled);
1332 result_scaled =
Packet(
pdiv(result_scaled.v, denom));
1337 template <
typename Packet>
1340 typedef typename Scalar::value_type
RealScalar;
1344 Packet real_mask(real_mask_rp);
1349 RealPacket xlogr =
plog(x_norm.v);
1352 RealPacket ximg =
patan2(
x.v, x_flip);
1355 RealPacket x_abs =
pabs(
x.v);
1356 RealPacket is_x_pos_inf =
pcmp_eq(x_abs, cst_pos_inf);
1358 RealPacket is_any_inf =
por(is_x_pos_inf, is_y_pos_inf);
1359 RealPacket xreal =
pselect(is_any_inf, cst_pos_inf, xlogr);
1365 template <
typename Packet>
1369 typedef typename Scalar::value_type
RealScalar;
1377 RealPacket
x =
pand(
a.v, even_mask);
1382 RealPacket
y =
pand(odd_mask,
a.v);
1384 RealPacket cisy = psincos_float<false, RealPacket, true>(
y);
1408 template <
typename Packet>
1411 typedef typename Scalar::value_type
RealScalar;
1450 RealPacket a_abs =
pabs(
a.v);
1452 RealPacket a_max =
pmax(a_abs, a_abs_flip);
1453 RealPacket a_min =
pmin(a_abs, a_abs_flip);
1454 RealPacket a_min_zero_mask =
pcmp_eq(a_min,
pzero(a_min));
1455 RealPacket a_max_zero_mask =
pcmp_eq(a_max,
pzero(a_max));
1456 RealPacket
r =
pdiv(a_min, a_max);
1457 const RealPacket cst_one = pset1<RealPacket>(
RealScalar(1));
1460 l =
pselect(a_min_zero_mask, a_max, l);
1465 const RealPacket cst_half = pset1<RealPacket>(
RealScalar(0.5));
1474 Packet positive_real_result;
1476 positive_real_result.v =
pselect(real_mask, rho.v,
eta);
1481 RealPacket imag_signs =
pand(
a.v, cst_imag_sign_mask);
1482 Packet negative_real_result;
1484 negative_real_result.v =
por(
pabs(
pcplxflip(positive_real_result).
v), imag_signs);
1487 Packet negative_real_mask;
1489 negative_real_mask.v =
por(negative_real_mask.v,
pcplxflip(negative_real_mask).
v);
1490 Packet result =
pselect(negative_real_mask, negative_real_result, positive_real_result);
1499 is_inf.v =
pcmp_eq(a_abs, cst_pos_inf);
1501 is_real_inf.v =
pand(is_inf.v, real_mask);
1502 is_real_inf =
por(is_real_inf,
pcplxflip(is_real_inf));
1506 real_inf_result.v =
pselect(negative_real_mask.v,
pcplxflip(real_inf_result).
v, real_inf_result.v);
1509 is_imag_inf.v =
pandnot(is_inf.v, real_mask);
1510 is_imag_inf =
por(is_imag_inf,
pcplxflip(is_imag_inf));
1512 imag_inf_result.v =
por(
pand(cst_pos_inf, real_mask),
pandnot(
a.v, real_mask));
1515 result =
por(result_is_nan, result);
1517 return pselect(is_imag_inf, imag_inf_result,
pselect(is_real_inf, real_inf_result, result));
1522 template <
typename Packet>
1525 typedef typename Scalar::value_type
RealScalar;
1528 const RealPacket cst_zero_rp = pset1<RealPacket>(
static_cast<RealScalar>(0.0));
1529 const RealPacket cst_minus_one_rp = pset1<RealPacket>(
static_cast<RealScalar>(-1.0));
1530 const RealPacket cst_two_rp = pset1<RealPacket>(
static_cast<RealScalar>(2.0));
1533 RealPacket a_abs =
pabs(
a.v);
1535 RealPacket a_all =
pselect(evenmask, a_abs, a_flip);
1536 RealPacket b_all =
pselect(evenmask, a_flip, a_abs);
1538 RealPacket a2 =
pmul(
a.v,
a.v);
1540 RealPacket h =
psqrt(
padd(a2, a2_flip));
1541 RealPacket h_sq =
pmul(h, h);
1542 RealPacket a_sq =
pselect(evenmask, a2, a2_flip);
1543 RealPacket m_h_sq =
pmul(h_sq, cst_minus_one_rp);
1544 RealPacket m_a_sq =
pmul(a_sq, cst_minus_one_rp);
1549 RealPacket iszero =
pcmp_eq(
por(a_abs, a_flip), cst_zero_rp);
1555 template <
typename Packet>
1556 struct psign_impl<
Packet, std::enable_if_t<!NumTraits<typename unpacket_traits<Packet>::type>::IsComplex &&
1557 !NumTraits<typename unpacket_traits<Packet>::type>::IsInteger>> {
1567 return pselect(nonzero_mask,
por(sign_mask, cst_one), abs_a);
1571 template <
typename Packet>
1572 struct psign_impl<
Packet, std::enable_if_t<!NumTraits<typename unpacket_traits<Packet>::type>::IsComplex &&
1573 NumTraits<typename unpacket_traits<Packet>::type>::IsSigned &&
1574 NumTraits<typename unpacket_traits<Packet>::type>::IsInteger>> {
1578 const Packet cst_minus_one = pset1<Packet>(
Scalar(-1));
1582 const Packet positive =
pand(positive_mask, cst_one);
1584 const Packet negative =
pand(negative_mask, cst_minus_one);
1586 return por(positive, negative);
1590 template <
typename Packet>
1591 struct psign_impl<
Packet, std::enable_if_t<!NumTraits<typename unpacket_traits<Packet>::type>::IsComplex &&
1592 !NumTraits<typename unpacket_traits<Packet>::type>::IsSigned &&
1593 NumTraits<typename unpacket_traits<Packet>::type>::IsInteger>> {
1600 return pandnot(cst_one, zero_mask);
1605 template <
typename Packet>
1606 struct psign_impl<
Packet, std::enable_if_t<NumTraits<typename unpacket_traits<Packet>::type>::IsComplex &&
1607 unpacket_traits<Packet>::vectorizable>> {
1610 typedef typename Scalar::value_type
RealScalar;
1618 RealPacket a_abs =
pabs(
a.v);
1620 RealPacket a_max =
pmax(a_abs, a_abs_flip);
1621 RealPacket a_min =
pmin(a_abs, a_abs_flip);
1622 RealPacket a_min_zero_mask =
pcmp_eq(a_min,
pzero(a_min));
1623 RealPacket a_max_zero_mask =
pcmp_eq(a_max,
pzero(a_max));
1624 RealPacket
r =
pdiv(a_min, a_max);
1625 const RealPacket cst_one = pset1<RealPacket>(
RealScalar(1));
1629 l =
pselect(a_min_zero_mask, a_max, l);
1631 RealPacket sign_as_real =
pandnot(
pdiv(
a.v, l), a_max_zero_mask);
1633 sign.v = sign_as_real;
1645 template <
typename Packet>
1653 template <
typename Packet>
1660 #ifdef EIGEN_VECTORIZE_FMA
1665 template <
typename Packet>
1673 template <
typename Packet>
1685 template <
typename Packet>
1693 x_lo =
psub(
x, x_hi);
1700 template <
typename Packet>
1702 Packet x_hi, x_lo, y_hi, y_lo;
1708 p_lo =
pmadd(x_hi, y_lo, p_lo);
1709 p_lo =
pmadd(x_lo, y_hi, p_lo);
1710 p_lo =
pmadd(x_lo, y_lo, p_lo);
1715 template <
typename Packet>
1717 Packet x_hi, x_lo, y_hi, y_lo;
1722 p_lo =
pmadd(x_hi, y_lo, p_lo);
1723 p_lo =
pmadd(x_lo, y_hi, p_lo);
1724 p_lo =
pmadd(x_lo, y_lo, p_lo);
1736 template <
typename Packet>
1744 const Packet r_hi =
pselect(x_greater_mask, r_hi_1, r_hi_2);
1755 template <
typename Packet>
1767 template <
typename Packet>
1784 template <
typename Packet>
1802 template <
typename Packet>
1806 twoprod(x_hi, x_lo, y_hi, p_hi_hi, p_hi_lo);
1808 twoprod(x_hi, x_lo, y_lo, p_lo_hi, p_lo_lo);
1809 fast_twosum(p_hi_hi, p_hi_lo, p_lo_hi, p_lo_lo, p_hi, p_lo);
1816 template <
typename Packet>
1823 const Packet delta_t =
psub(delta_hi, pi_lo);
1830 template <
typename Scalar>
1832 template <
typename Packet>
1853 template <
typename Packet>
1856 constexpr
double kC0 = 1.442695041742110273474963832995854318141937255859375e+00;
1857 constexpr
float kC0_hi =
static_cast<float>(kC0);
1858 constexpr
float kC0_lo =
static_cast<float>(kC0 -
static_cast<double>(kC0_hi));
1859 const Packet c0_hi = pset1<Packet>(kC0_hi);
1860 const Packet c0_lo = pset1<Packet>(kC0_lo);
1862 constexpr
double kC1 = -7.2134751588268664068692714863573201000690460205078125e-01;
1863 constexpr
float kC1_hi =
static_cast<float>(kC1);
1864 constexpr
float kC1_lo =
static_cast<float>(kC1 -
static_cast<double>(kC1_hi));
1865 const Packet c1_hi = pset1<Packet>(kC1_hi);
1866 const Packet c1_lo = pset1<Packet>(kC1_lo);
1868 constexpr
float c[] = {
1869 9.7010828554630279541015625e-02, -1.6896486282348632812500000e-01, 1.7200836539268493652343750e-01,
1870 -1.7892272770404815673828125e-01, 2.0505344867706298828125000e-01, -2.4046677350997924804687500e-01,
1871 2.8857553005218505859375000e-01, -3.6067414283752441406250000e-01, 4.8089790344238281250000000e-01};
1875 const Packet one = pset1<Packet>(1.0f);
1882 fast_twosum(c1_hi, c1_lo, p_hi, p_lo, p_hi, p_lo);
1883 twoprod(p_hi, p_lo,
x, p_hi, p_lo);
1884 fast_twosum(c0_hi, c0_lo, p_hi, p_lo, p_hi, p_lo);
1886 twoprod(p_hi, p_lo,
x, log2_x_hi, log2_x_lo);
1899 template <
typename Packet>
1922 const Packet q12 = pset1<Packet>(2.87074255468000586e-9);
1923 const Packet q10 = pset1<Packet>(2.38957980901884082e-8);
1924 const Packet q8 = pset1<Packet>(2.31032094540014656e-7);
1925 const Packet q6 = pset1<Packet>(2.27279857398537278e-6);
1926 const Packet q4 = pset1<Packet>(2.31271023278625638e-5);
1927 const Packet q2 = pset1<Packet>(2.47556738444535513e-4);
1928 const Packet q0 = pset1<Packet>(2.88543873228900172e-3);
1929 const Packet C_hi = pset1<Packet>(0.0400377511598501157);
1930 const Packet C_lo = pset1<Packet>(-4.77726582251425391e-19);
1931 const Packet one = pset1<Packet>(1.0);
1933 const Packet cst_2_log2e_hi = pset1<Packet>(2.88539008177792677);
1934 const Packet cst_2_log2e_lo = pset1<Packet>(4.07660016854549667e-17);
1938 twoprod(cst_2_log2e_hi, cst_2_log2e_lo,
psub(
x, one), t_hi, t_lo);
1945 twoprod(r_hi, r_lo, r_hi, r_lo, r2_hi, r2_lo);
1948 twoprod(r2_hi, r2_lo, r2_hi, r2_lo, r4_hi, r4_lo);
1954 q_even =
pmadd(q_even, r4_hi, q4);
1955 q_odd =
pmadd(q_odd, r4_hi, q2);
1956 q_even =
pmadd(q_even, r4_hi, q0);
1965 twoprod(r2_hi, r2_lo,
q, p_hi, p_lo);
1968 fast_twosum(C_hi, C_lo, p_hi, p_lo, p1_hi, p1_lo);
1971 twoprod(r2_hi, r2_lo, p1_hi, p1_lo, p2_hi, p2_lo);
1977 twoprod(p3_hi, p3_lo, r_hi, r_lo, log2_x_hi, log2_x_lo);
1986 template <
typename Packet>
1995 const Packet m_x_scale_mask =
pcmp_lt(m_x, pset1<Packet>(sqrt_half));
2005 Packet f1_hi, f1_lo, f2_hi, f2_lo;
2007 twoprod(rx_hi, rx_lo,
y, f2_hi, f2_lo);
2015 fast_twosum(f1_hi, f1_lo, f2_hi, f2_lo, f_hi, f_lo);
2020 r_z =
padd(r_z, f_lo);
2023 n_z =
padd(n_z, n_r);
2033 constexpr
Scalar kPldExpThresh = std::numeric_limits<Scalar>::max_exponent - 2;
2034 const Packet pldexp_fast_unsafe =
pcmp_lt(pset1<Packet>(kPldExpThresh),
pabs(n_z));
2042 template <
typename Packet>
2079 const Packet y_abs_is_huge =
pcmp_le(pset1<Packet>(huge_exponent), y_abs);
2106 Packet inf_y_val =
pselect(
por(
pand(y_is_negative, x_is_zero),
pxor(y_is_negative, x_abs_gt_one)), cst_inf, cst_zero);
2118 auto x_pos_inf_value =
pselect(y_is_negative, cst_zero, cst_inf);
2119 auto x_neg_inf_value =
pselect(y_is_odd_int,
pnegate(x_pos_inf_value), x_pos_inf_value);
2133 namespace unary_pow {
2135 template <typename ScalarExponent, bool IsInteger = NumTraits<ScalarExponent>::IsInteger>
2138 static constexpr ScalarExponent
one_half = ScalarExponent(0.5);
2147 return exp_div_2 != floor_exp_div_2;
2155 template <
typename ScalarExponent>
2173 template <
typename Packet,
typename ScalarExponent,
2174 bool ReciprocateIfExponentIsNegative =
2180 return exponent < 0 ?
pdiv(cst_pos_one,
x) :
x;
2184 template <
typename Packet,
typename ScalarExponent>
2191 template <
typename Packet,
typename ScalarExponent>
2195 using AbsExponentType =
typename ExponentHelper::safe_abs_type;
2197 if (exponent == ScalarExponent(0))
return cst_pos_one;
2201 AbsExponentType
m = ExponentHelper::safe_abs(exponent);
2205 if (odd)
y =
pmul(
y, result);
2206 result =
pmul(result, result);
2207 m = ExponentHelper::floor_div_two(
m);
2210 return pmul(
y, result);
2213 template <
typename Packet>
2216 const Packet exponent_packet = pset1<Packet>(exponent);
2220 template <
typename Packet,
typename ScalarExponent>
2222 const ScalarExponent& exponent) {
2233 const Packet cst_pos_one = pset1<Packet>(pos_one);
2234 const Packet cst_pos_inf = pset1<Packet>(pos_inf);
2237 const bool exponent_is_neg = exponent < ScalarExponent(0);
2238 const bool exponent_is_pos = exponent > ScalarExponent(0);
2240 const Packet exp_is_not_fin = pset1<Packet>(exponent_is_not_fin ? all_ones : pos_zero);
2241 const Packet exp_is_neg = pset1<Packet>(exponent_is_neg ? all_ones : pos_zero);
2242 const Packet exp_is_pos = pset1<Packet>(exponent_is_pos ? all_ones : pos_zero);
2243 const Packet exp_is_inf =
pand(exp_is_not_fin,
por(exp_is_neg, exp_is_pos));
2244 const Packet exp_is_nan =
pandnot(exp_is_not_fin,
por(exp_is_neg, exp_is_pos));
2248 const Packet x_is_zero =
pand(x_is_le_zero, x_is_ge_zero);
2254 const Packet abs_x_is_one =
pand(abs_x_is_le_one, abs_x_is_ge_one);
2256 Packet pow_is_inf_if_exp_is_neg =
por(x_is_zero,
pand(abs_x_is_le_one, exp_is_inf));
2257 Packet pow_is_inf_if_exp_is_pos =
por(abs_x_is_inf,
pand(abs_x_is_ge_one, exp_is_inf));
2258 Packet pow_is_one =
pand(abs_x_is_one,
por(exp_is_inf, x_is_ge_zero));
2261 result =
por(x_is_le_zero, result);
2262 result =
pselect(pow_is_inf_if_exp_is_neg,
pand(cst_pos_inf, exp_is_neg), result);
2263 result =
pselect(pow_is_inf_if_exp_is_pos,
pand(cst_pos_inf, exp_is_pos), result);
2264 result =
por(exp_is_nan, result);
2265 result =
pselect(pow_is_one, cst_pos_one, result);
2269 template <
typename Packet,
typename ScalarExponent,
2283 const Packet cst_pos_one = pset1<Packet>(pos_one);
2285 const bool exponent_is_odd = exponent % ScalarExponent(2) != ScalarExponent(0);
2287 const Packet exp_is_odd = pset1<Packet>(exponent_is_odd ? all_ones : pos_zero);
2293 result =
pand(abs_x_is_one, result);
2297 template <
typename Packet,
typename ScalarExponent,
2309 const Packet cst_pos_one = pset1<Packet>(pos_one);
2313 return pand(x_is_one,
x);
2318 template <
typename Packet,
typename ScalarExponent,
2324 template <
typename Packet,
typename ScalarExponent,
bool ExponentIsSigned>
2329 if (exponent_is_integer) {
2333 bool use_repeated_squaring =
2334 (exponent <= ScalarExponent(7) && (!ExponentIsSigned || exponent >= ScalarExponent(-3)));
2344 template <
typename Packet,
typename ScalarExponent,
bool ExponentIsSigned>
2352 template <
typename Packet,
typename ScalarExponent>
2356 if (exponent < ScalarExponent(0)) {
2364 template <
typename Packet,
typename ScalarExponent>
2383 template <
typename Packet>
2386 constexpr
int max_exponent = std::numeric_limits<Scalar>::max_exponent;
2387 constexpr
int digits = std::numeric_limits<Scalar>::digits;
2389 constexpr
Scalar min_cap = -
Scalar(max_exponent + digits - 1);
2390 Packet x =
pmax(
pmin(_x, pset1<Packet>(max_cap)), pset1<Packet>(min_cap));
2395 return pmul(exp2_hi, exp2_lo);
2398 template <
typename Packet>
2404 const Packet cst_limit = pset1<Packet>(
static_cast<Scalar>(kLimit));
2410 rint_a =
psub(rint_a, cst_limit);
2411 rint_a =
por(rint_a, sign_a);
2418 template <
typename Packet>
2430 template <
typename Packet>
2434 const Packet sign_mask = pset1<Packet>(
static_cast<Scalar>(-0.0));
2441 result =
por(result,
pand(sign_mask,
a));
2445 template <
typename Packet>
2450 Packet result =
por(floor_abs_a, sign_a);
2454 template <
typename Packet>
2466 result =
por(result, sign_a);
2470 template <
typename Packet>
2481 template <
typename Packet>
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
AnnoyingScalar sin(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:137
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Matrix< float, 2, 1 > xy
Definition: LLT_solve.cpp:6
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_PREDICT_FALSE(x)
Definition: Macros.h:1179
#define EIGEN_UNUSED_VARIABLE(var)
Definition: Macros.h:966
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
Definition: Macros.h:900
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_OPTIMIZATION_BARRIER(X)
Definition: Macros.h:1051
#define EIGEN_LOG2E
Definition: MathFunctions.h:17
#define EIGEN_LN2
Definition: MathFunctions.h:18
#define EIGEN_PI
Definition: MathFunctions.h:16
Vector3f p0
Definition: MatrixBase_all.cpp:2
Vector3f p1
Definition: MatrixBase_all.cpp:2
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
float * p
Definition: Tutorial_Map_using.cpp:9
bool is_odd(const Exponent &exp)
Definition: array_cwise.cpp:252
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
internal::packet_traits< Scalar >::type Packet
Definition: benchmark-blocking-sizes.cpp:54
@ N
Definition: constructor.cpp:22
#define min(a, b)
Definition: datatypes.h:22
RealScalar RealScalar * px
Definition: level1_cplx_impl.h:27
RealScalar s
Definition: level1_cplx_impl.h:130
RealScalar alpha
Definition: level1_cplx_impl.h:151
Scalar * x_cpy
Definition: level2_cplx_impl.h:177
const Scalar * a
Definition: level2_cplx_impl.h:32
int * m
Definition: level2_cplx_impl.h:294
Scalar beta
Definition: level2_cplx_impl.h:36
char char char int int * k
Definition: level2_impl.h:374
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 exp(const bfloat16 &a)
Definition: BFloat16.h:615
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 expm1(const bfloat16 &a)
Definition: BFloat16.h:617
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet handle_nonint_nonint_errors(const Packet &x, const Packet &powx, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2221
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet int_pow(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2192
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet gen_pow(const Packet &x, const typename unpacket_traits< Packet >::type &exponent)
Definition: GenericPacketMathFunctions.h:2214
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet handle_negative_exponent(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2271
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2_double(const Packet _x)
Definition: GenericPacketMathFunctions.h:462
Packet trig_reduce_medium_double(const Packet &x, const Packet &q_high, const Packet &q_low)
Definition: GenericPacketMathFunctions.h:848
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_log1p(const Packet &x)
Definition: GenericPacketMathFunctions.h:470
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void twosum(const Packet &x_hi, const Packet &x_lo, const Packet &y_hi, const Packet &y_lo, Packet &s_hi, Packet &s_lo)
Definition: GenericPacketMathFunctions.h:1737
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
Definition: AltiVec/Complex.h:268
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:318
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet twoprod_low(const Packet &x, const Packet &y, const Packet &xy)
Definition: GenericPacketMathFunctions.h:1716
EIGEN_STRONG_INLINE Packet8f pzero(const Packet8f &)
Definition: AVX/PacketMath.h:774
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psin_float(const Packet &x)
Definition: GenericPacketMathFunctions.h:820
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_double(const Packet _x)
Definition: GenericPacketMathFunctions.h:561
EIGEN_STRONG_INLINE Packet8f pisnan(const Packet8f &a)
Definition: AVX/PacketMath.h:1034
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pacos_float(const Packet &x_in)
Definition: GenericPacketMathFunctions.h:999
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void veltkamp_splitting(const Packet &x, Packet &x_hi, Packet &x_lo)
Definition: GenericPacketMathFunctions.h:1686
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psincos_double(const Packet &x)
Definition: GenericPacketMathFunctions.h:872
float trig_reduce_huge(float xf, Eigen::numext::int32_t *quadrant)
Definition: GenericPacketMathFunctions.h:641
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psin_double(const Packet &x)
Definition: GenericPacketMathFunctions.h:988
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_impl_double(const Packet _x)
Definition: GenericPacketMathFunctions.h:371
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patanh_float(const Packet &x)
Definition: GenericPacketMathFunctions.h:1256
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_floor(const Packet &a)
Definition: GenericPacketMathFunctions.h:2419
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psincos_float(const Packet &_x)
Definition: GenericPacketMathFunctions.h:694
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2(const Packet &a)
Definition: GenericPacketMath.h:1123
const Scalar & y
Definition: RandomImpl.h:36
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog(const Packet &a)
Definition: GenericPacketMath.h:1103
EIGEN_STRONG_INLINE bool predux_any(const Packet4f &x)
Definition: AltiVec/PacketMath.h:2751
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:368
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psqrt_complex(const Packet &a)
Definition: GenericPacketMathFunctions.h:1409
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2_float(const Packet _x)
Definition: GenericPacketMathFunctions.h:357
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void fast_twosum(const Packet &x, const Packet &y, Packet &s_hi, Packet &s_lo)
Definition: GenericPacketMathFunctions.h:1654
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void absolute_split(const Packet &x, Packet &n, Packet &r)
Definition: GenericPacketMathFunctions.h:1646
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_fast(const Packet &a, const Packet &exponent)
Definition: GenericPacketMathFunctions.h:277
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet patan2(const Packet &y, const Packet &x)
Definition: GenericPacketMath.h:1475
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_pow_impl(const Packet &x, const Packet &y)
Definition: GenericPacketMathFunctions.h:1987
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_pow(const Packet &x, const Packet &y)
Definition: GenericPacketMathFunctions.h:2043
EIGEN_DEVICE_FUNC Packet pmax(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:663
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_atan(const Packet &x_in)
Definition: GenericPacketMathFunctions.h:1121
EIGEN_STRONG_INLINE Packet4f pcmp_le(const Packet4f &a, const Packet4f &b)
Definition: AltiVec/PacketMath.h:1314
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcos_float(const Packet &x)
Definition: GenericPacketMathFunctions.h:825
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void twoprod(const Packet &x, const Packet &y, Packet &p_hi, Packet &p_lo)
Definition: GenericPacketMathFunctions.h:1701
EIGEN_STRONG_INLINE Packet8h por(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2309
EIGEN_STRONG_INLINE Packet4i pcmp_lt(const Packet4i &a, const Packet4i &b)
Definition: AltiVec/PacketMath.h:1341
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_complex(const Packet &x)
Definition: GenericPacketMathFunctions.h:1338
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: AltiVec/PacketMath.h:1218
EIGEN_STRONG_INLINE Packet2cf pcplxflip(const Packet2cf &x)
Definition: LSX/Complex.h:218
EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf &a, const Packet4cf &b)
Definition: AVX/Complex.h:88
EIGEN_DEVICE_FUNC Packet preciprocal(const Packet &a)
Definition: GenericPacketMath.h:1433
EIGEN_DEVICE_FUNC Packet pmin(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:649
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2323
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_complex(const Packet &a)
Definition: GenericPacketMathFunctions.h:1366
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pdiv_complex(const Packet &x, const Packet &y)
Definition: GenericPacketMathFunctions.h:1318
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition: AltiVec/Complex.h:264
EIGEN_STRONG_INLINE Packet4d pfrexp_generic_get_biased_exponent(const Packet4d &a)
Definition: AVX/PacketMath.h:1880
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_impl_float(const Packet _x)
Definition: GenericPacketMathFunctions.h:299
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_rint(const Packet &a)
Definition: GenericPacketMathFunctions.h:2399
EIGEN_STRONG_INLINE Packet8bf psignbit(const Packet8bf &a)
Definition: AltiVec/PacketMath.h:1966
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS T ptanh_float(const T &a_x)
Definition: GenericPacketMathFunctions.h:1155
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS T ptanh_double(const T &a_x)
Definition: GenericPacketMathFunctions.h:1206
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)
Definition: AltiVec/PacketMath.h:1936
EIGEN_STRONG_INLINE Packet8f peven_mask(const Packet8f &)
Definition: AVX/PacketMath.h:791
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patanh_double(const Packet &x)
Definition: GenericPacketMathFunctions.h:1285
EIGEN_STRONG_INLINE Packet4f psqrt(const Packet4f &a)
Definition: LSX/PacketMath.h:2176
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_float(const Packet _x)
Definition: GenericPacketMathFunctions.h:509
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf &a, const Packet2cf &b)
Definition: AltiVec/Complex.h:353
EIGEN_STRONG_INLINE Packet8h pldexp(const Packet8h &a, const Packet8h &exponent)
Definition: arch/AVX/MathFunctions.h:80
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_round(const Packet &a)
Definition: GenericPacketMathFunctions.h:2455
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_ceil(const Packet &a)
Definition: GenericPacketMathFunctions.h:2431
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_generic(const Packet &a, const Packet &exponent)
Definition: GenericPacketMathFunctions.h:226
EIGEN_STRONG_INLINE Packet4f pmsub(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: LSX/PacketMath.h:819
EIGEN_DEVICE_FUNC void pstoreu(Scalar *to, const Packet &from)
Definition: GenericPacketMath.h:911
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2319
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2315
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_double(const Packet _x)
Definition: GenericPacketMathFunctions.h:457
EIGEN_STRONG_INLINE Packet4f pnmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: LSX/PacketMath.h:827
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcos_double(const Packet &x)
Definition: GenericPacketMathFunctions.h:993
EIGEN_STRONG_INLINE Packet4f pselect(const Packet4f &mask, const Packet4f &a, const Packet4f &b)
Definition: AltiVec/PacketMath.h:1474
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic(const Packet &a, Packet &exponent)
Definition: GenericPacketMathFunctions.h:184
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:337
EIGEN_STRONG_INLINE Packet4f pround(const Packet4f &a)
Definition: LSX/PacketMath.h:2555
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_expm1(const Packet &x)
Definition: GenericPacketMathFunctions.h:485
EIGEN_STRONG_INLINE Packet8h pfrexp(const Packet8h &a, Packet8h &exponent)
Definition: arch/AVX/MathFunctions.h:72
svint32_t PacketXi __attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)))
Definition: SVE/PacketMath.h:34
EIGEN_STRONG_INLINE Packet4f pfloor(const Packet4f &a)
Definition: LSX/PacketMath.h:2537
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_float(const Packet _x)
Definition: GenericPacketMathFunctions.h:352
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_trunc(const Packet &a)
Definition: GenericPacketMathFunctions.h:2446
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_exp2(const Packet &_x)
Definition: GenericPacketMathFunctions.h:2384
EIGEN_STRONG_INLINE Packet4f pcmp_lt_or_nan(const Packet4f &a, const Packet4f &b)
Definition: AltiVec/PacketMath.h:1329
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pasin_float(const Packet &x_in)
Definition: GenericPacketMathFunctions.h:1042
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet phypot_complex(const Packet &a)
Definition: GenericPacketMathFunctions.h:1523
EIGEN_STRONG_INLINE Packet4f pexp(const Packet4f &_x)
Definition: LSX/PacketMath.h:2663
Packet trig_reduce_small_double(const Packet &x, const Packet &q)
Definition: GenericPacketMathFunctions.h:833
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void doubleword_div_fp(const Packet &x_hi, const Packet &x_lo, const Packet &y, Packet &z_hi, Packet &z_lo)
Definition: GenericPacketMathFunctions.h:1817
std::int32_t int32_t
Definition: Meta.h:41
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar round(const Scalar &x)
Definition: MathFunctions.h:1195
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool() isfinite(const Eigen::bfloat16 &h)
Definition: BFloat16.h:752
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE std::enable_if_t< NumTraits< T >::IsSigned||NumTraits< T >::IsComplex, typename NumTraits< T >::Real > abs(const T &x)
Definition: MathFunctions.h:1355
std::int16_t int16_t
Definition: Meta.h:39
std::int64_t int64_t
Definition: Meta.h:43
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar() floor(const Scalar &x)
Definition: MathFunctions.h:1200
std::uint32_t uint32_t
Definition: Meta.h:40
std::uint64_t uint64_t
Definition: Meta.h:42
EIGEN_DEVICE_FUNC static constexpr EIGEN_ALWAYS_INLINE Scalar signbit(const Scalar &x)
Definition: MathFunctions.h:1419
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
Scalar expx
Definition: AutoDiffScalar.h:542
Vector< double > x2(const Vector< double > &coord)
Cartesian coordinates centered at the point (1.5,1)
Definition: poisson/poisson_with_singularity/two_d_poisson.cc:102
int delta
Definition: MultiOpt.py:96
T sign(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:172
double eta
Definition: foeppl_von_karman/circular_disk/circular_disk.cc:45
int c
Definition: calibrate.py:100
val
Definition: calibrate.py:119
type
Definition: compute_granudrum_aor.py:141
const Mdouble inf
Definition: GeneralDefine.h:23
Definition: Eigen_Colamd.h:49
Mdouble gamma(Mdouble gamma_in)
This is the gamma function returns the true value for the half integer value.
Definition: ExtendedMath.cc:116
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36
@ IsSigned
Definition: NumTraits.h:175
@ IsInteger
Definition: NumTraits.h:174
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: BFloat16.h:101
Packet4f v
Definition: AltiVec/Complex.h:78
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void operator()(const Packet &x, Packet &log2_x_hi, Packet &log2_x_lo)
Definition: GenericPacketMathFunctions.h:1900
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void operator()(const Packet &z, Packet &log2_x_hi, Packet &log2_x_lo)
Definition: GenericPacketMathFunctions.h:1854
Definition: GenericPacketMathFunctions.h:1831
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void operator()(const Packet &x, Packet &log2_x_hi, Packet &log2_x_lo)
Definition: GenericPacketMathFunctions.h:1833
numext::int16_t type
Definition: GenericPacketMathFunctions.h:42
numext::int64_t type
Definition: GenericPacketMathFunctions.h:34
numext::int32_t type
Definition: GenericPacketMathFunctions.h:30
numext::int16_t type
Definition: GenericPacketMathFunctions.h:38
Definition: GenericPacketMathFunctions.h:27
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_rint(const Packet &x)
Definition: GenericPacketMathFunctions.h:2476
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_ceil(const Packet &x)
Definition: GenericPacketMathFunctions.h:2475
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_trunc(const Packet &x)
Definition: GenericPacketMathFunctions.h:2478
typename unpacket_traits< Packet >::type Scalar
Definition: GenericPacketMathFunctions.h:2472
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_floor(const Packet &x)
Definition: GenericPacketMathFunctions.h:2474
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_round(const Packet &x)
Definition: GenericPacketMathFunctions.h:2477
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_floor(const Packet &x)
Definition: GenericPacketMathFunctions.h:2483
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_ceil(const Packet &x)
Definition: GenericPacketMathFunctions.h:2484
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_trunc(const Packet &x)
Definition: GenericPacketMathFunctions.h:2487
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_rint(const Packet &x)
Definition: GenericPacketMathFunctions.h:2485
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run_round(const Packet &x)
Definition: GenericPacketMathFunctions.h:2486
Definition: GenericPacketMath.h:1143
Definition: GenericPacketMath.h:108
Definition: GenericPacketMathFunctions.h:1083
static EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet run(const Packet &x)
Definition: GenericPacketMathFunctions.h:155
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(Packet x, const typename unpacket_traits< Packet >::type coef[])
Definition: GenericPacketMathFunctions.h:156
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const typename unpacket_traits< Packet >::type coeff[])
Definition: GenericPacketMathFunctions.h:95
Definition: GenericPacketMathFunctions.h:85
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const typename unpacket_traits< Packet >::type coeff[])
Definition: GenericPacketMathFunctions.h:86
static EIGEN_DEVICE_FUNC Packet run(const Packet &a)
Definition: GenericPacketMathFunctions.h:1608
static EIGEN_DEVICE_FUNC Packet run(const Packet &a)
Definition: GenericPacketMathFunctions.h:1575
static EIGEN_DEVICE_FUNC Packet run(const Packet &a)
Definition: GenericPacketMathFunctions.h:1594
static EIGEN_DEVICE_FUNC Packet run(const Packet &a)
Definition: GenericPacketMathFunctions.h:1558
Definition: GenericPacketMath.h:1183
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool is_odd(const safe_abs_type &exp)
Definition: GenericPacketMathFunctions.h:2165
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE safe_abs_type floor_div_two(const safe_abs_type &exp)
Definition: GenericPacketMathFunctions.h:2168
typename numext::get_integer_by_size< sizeof(ScalarExponent)>::unsigned_type safe_abs_type
Definition: GenericPacketMathFunctions.h:2159
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE safe_abs_type safe_abs(const ScalarExponent &exp)
Definition: GenericPacketMathFunctions.h:2160
Definition: GenericPacketMathFunctions.h:2136
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool is_odd(const ScalarExponent &exp)
Definition: GenericPacketMathFunctions.h:2143
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ScalarExponent floor_div_two(const ScalarExponent &exp)
Definition: GenericPacketMathFunctions.h:2149
static constexpr ScalarExponent one_half
Definition: GenericPacketMathFunctions.h:2138
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ScalarExponent safe_abs(const ScalarExponent &exp)
Definition: GenericPacketMathFunctions.h:2140
ScalarExponent safe_abs_type
Definition: GenericPacketMathFunctions.h:2137
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const ScalarExponent &)
Definition: GenericPacketMathFunctions.h:2188
Definition: GenericPacketMathFunctions.h:2176
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2177
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2327
unpacket_traits< Packet >::type Scalar
Definition: GenericPacketMathFunctions.h:2326
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2347
unpacket_traits< Packet >::type Scalar
Definition: GenericPacketMathFunctions.h:2346
unpacket_traits< Packet >::type Scalar
Definition: GenericPacketMathFunctions.h:2366
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2367
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const ScalarExponent &exponent)
Definition: GenericPacketMathFunctions.h:2355
unpacket_traits< Packet >::type Scalar
Definition: GenericPacketMathFunctions.h:2354
Definition: GenericPacketMathFunctions.h:2322
Definition: GenericPacketMath.h:134
numext::get_integer_by_size< sizeof(T)>::signed_type integer_packet
Definition: GenericPacketMath.h:137
EIGEN_DONT_INLINE Scalar zero()
Definition: svd_common.h:232
std::ofstream out("Result.txt")
Definition: ZVector/PacketMath.h:50