16#ifndef EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_H
17#define EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_H
33 enum {
mantissa_bits = numext::numeric_limits<Scalar>::digits - 1};
45 MantissaBits = numext::numeric_limits<Scalar>::digits - 1,
46 ExponentBits =
int(TotalBits) -
int(MantissaBits) - 1
113 MantissaBits = numext::numeric_limits<Scalar>::digits - 1,
114 ExponentBits =
int(TotalBits) -
int(MantissaBits) - 1
118 const PacketI
bias =
pset1<PacketI>((ScalarI(1)<<(
int(ExponentBits)-1)) - ScalarI(1));
138template<
typename Packet>
166template <
typename Packet,
bool base2>
251template <
typename Packet>
259template <
typename Packet>
276template <
typename Packet,
bool base2>
372template <
typename Packet>
380template <
typename Packet>
391template<
typename Packet>
407template<
typename Packet>
436template <
typename Packet>
487template <
typename Packet>
572 const double pio2_62 = 3.4061215800865545e-19;
579 0x00000028, 0x000028be, 0x0028be60, 0x28be60db,
580 0xbe60db93, 0x60db9391, 0xdb939105, 0x9391054a,
581 0x91054a7f, 0x054a7f09, 0x4a7f09d5, 0x7f09d5f4,
582 0x09d5f47d, 0xd5f47d4d, 0xf47d4d37, 0x7d4d3770,
583 0x4d377036, 0x377036d8, 0x7036d8a5, 0x36d8a566,
584 0xd8a5664f, 0xa5664f10, 0x664f10e4, 0x4f10e410,
585 0x10e41000, 0xe4100000
588 uint32_t
xi = numext::bit_cast<uint32_t>(
xf);
593 uint32_t
e = (
xi >> 23) - 118;
595 xi = ((
xi & 0x007fffffu)| 0x00800000u) << (
e & 0x7);
619template<
bool ComputeSine,
typename Packet>
622#if EIGEN_GNUC_AT_LEAST(4,4) && EIGEN_COMP_GNUC_STRICT
647 #if defined(EIGEN_HAS_SINGLE_INSTRUCTION_MADD)
686 EIGEN_ALIGN_TO_BOUNDARY(
sizeof(
Packet))
float vals[PacketSize];
687 EIGEN_ALIGN_TO_BOUNDARY(
sizeof(
Packet))
float x_cpy[PacketSize];
688 EIGEN_ALIGN_TO_BOUNDARY(
sizeof(
Packet))
int y_int2[PacketSize];
692 for(
int k=0; k<PacketSize;++k)
744template<
typename Packet>
752template<
typename Packet>
761template<
typename Packet>
766 typedef typename Scalar::value_type
RealScalar;
881template<
typename Packet>
890template<
typename Packet>
898#ifdef EIGEN_HAS_SINGLE_INSTRUCTION_MADD
903template<
typename Packet>
918template<
typename Packet>
934template<
typename Packet>
958template<
typename Packet>
979template<
typename Packet>
993template<
typename Packet>
1012template<
typename Packet>
1031template<
typename Packet>
1045template <
typename Packet>
1070template <
typename Scalar>
1072 template <
typename Packet>
1088 template <
typename Packet>
1169 template <
typename Packet>
1256template <
typename Scalar>
1258 template <
typename Packet>
1272 template <
typename Packet>
1330 template <
typename Packet>
1397template <
typename Packet>
1446template<
typename Packet>
1559template <
typename Packet,
int N>
1567template <
typename Packet>
1627template <
typename Packet,
int N>
1636 for (
int i = 1;
i <
N;
i++) {
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
EIGEN_DEVICE_FUNC const Expm1ReturnType expm1() const
Definition ArrayCwiseUnaryOps.h:111
ArrayXXi a
Definition Array_initializer_list_23_cxx11.cpp:1
Array< int, Dynamic, 1 > v
Definition Array_initializer_list_vector_cxx11.cpp:1
int n
Definition BiCGSTAB_simple.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
#define EIGEN_LOG2E
Definition MathFunctions.h:17
#define EIGEN_LN2
Definition MathFunctions.h:18
#define EIGEN_CONSTEXPR
Definition Macros.h:787
#define EIGEN_UNUSED_VARIABLE(var)
Definition Macros.h:1076
#define EIGEN_UNUSED
Definition Macros.h:1067
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
Definition Macros.h:985
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
#define EIGEN_OPTIMIZATION_BARRIER(X)
Definition Macros.h:1144
Vector3f p0
Definition MatrixBase_all.cpp:2
Vector3f p1
Definition MatrixBase_all.cpp:2
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition StaticAssert.h:127
float * p
Definition Tutorial_Map_using.cpp:9
Scalar Scalar * c
Definition benchVecAdd.cpp:17
Scalar * b
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
NumTraits< Scalar >::Real RealScalar
Definition bench_gemm.cpp:47
@ N
Definition constructor.cpp:23
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
Definition gnuplot_common_settings.hh:12
RealScalar s
Definition level1_cplx_impl.h:126
RealScalar RealScalar * px
Definition level1_cplx_impl.h:28
EIGEN_STRONG_INLINE Packet generic_pow_impl(const Packet &x, const Packet &y)
Definition GenericPacketMathFunctions.h:1398
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:215
EIGEN_STRONG_INLINE Packet8f pzero(const Packet8f &)
Definition PacketMath.h:247
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet psincos_float(const Packet &_x)
Definition GenericPacketMathFunctions.h:625
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet plog2_float(const Packet _x)
Definition GenericPacketMathFunctions.h:262
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet generic_pow(const Packet &x, const Packet &y)
Definition GenericPacketMathFunctions.h:1449
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2(const Packet &a)
Definition GenericPacketMath.h:808
const Scalar & y
Definition MathFunctions.h:821
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog(const Packet &a)
Definition GenericPacketMath.h:796
EIGEN_STRONG_INLINE bool predux_any(const Packet4f &x)
Definition PacketMath.h:1765
EIGEN_STRONG_INLINE void veltkamp_splitting(const Packet &x, Packet &x_hi, Packet &x_lo)
Definition GenericPacketMathFunctions.h:920
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:244
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:960
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet pexp_double(const Packet _x)
Definition GenericPacketMathFunctions.h:490
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp(const Packet &a)
Definition GenericPacketMath.h:788
EIGEN_STRONG_INLINE Packet4i plogical_shift_left(const Packet4i &a)
Definition PacketMath.h:1191
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet psin_float(const Packet &x)
Definition GenericPacketMathFunctions.h:747
EIGEN_STRONG_INLINE void fast_twosum(const Packet &x, const Packet &y, Packet &s_hi, Packet &s_lo)
Definition GenericPacketMathFunctions.h:892
EIGEN_DEVICE_FUNC Packet pmax(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:524
EIGEN_STRONG_INLINE Packet4f pcmp_le(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:867
Packet generic_plog1p(const Packet &x)
Definition GenericPacketMathFunctions.h:392
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet pcos_float(const Packet &x)
Definition GenericPacketMathFunctions.h:755
EIGEN_STRONG_INLINE Packet8h por(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1042
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition PacketMath.h:827
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet plog_impl_float(const Packet _x)
Definition GenericPacketMathFunctions.h:169
EIGEN_DEVICE_FUNC Packet pmul(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:237
EIGEN_STRONG_INLINE Packet8h ptrue(const Packet8h &a)
Definition PacketMath.h:978
EIGEN_DEVICE_FUNC Packet pmin(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:512
EIGEN_STRONG_INLINE Packet1cd pcplxflip(const Packet1cd &x)
Definition Complex.h:620
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1053
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pround(const Packet &a)
Definition GenericPacketMath.h:826
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition Complex.h:166
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet plog2_double(const Packet _x)
Definition GenericPacketMathFunctions.h:383
EIGEN_STRONG_INLINE Packet4f pcmp_lt(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:868
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet psqrt_complex(const Packet &a)
Definition GenericPacketMathFunctions.h:764
EIGEN_STRONG_INLINE Packet4f pselect(const Packet4f &mask, const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:917
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet plog_float(const Packet _x)
Definition GenericPacketMathFunctions.h:254
EIGEN_STRONG_INLINE Packet4d pfrexp_generic_get_biased_exponent(const Packet4d &a)
Definition PacketMath.h:743
Packet generic_expm1(const Packet &x)
Definition GenericPacketMathFunctions.h:408
EIGEN_STRONG_INLINE void absolute_split(const Packet &x, Packet &n, Packet &r)
Definition GenericPacketMathFunctions.h:883
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)
Definition PacketMath.h:1176
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet plog_double(const Packet _x)
Definition GenericPacketMathFunctions.h:375
EIGEN_STRONG_INLINE Packet8f peven_mask(const Packet8f &)
Definition PacketMath.h:252
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet plog_impl_double(const Packet _x)
Definition GenericPacketMathFunctions.h:279
EIGEN_STRONG_INLINE Packet4f psqrt(const Packet4f &a)
Definition PacketMath.h:723
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:231
EIGEN_STRONG_INLINE Packet8h pldexp(const Packet8h &a, const Packet8h &exponent)
Definition MathFunctions.h:196
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_generic(const Packet &a, const Packet &exponent)
Definition GenericPacketMathFunctions.h:85
EIGEN_DEVICE_FUNC void pstoreu(Scalar *to, const Packet &from)
Definition GenericPacketMath.h:700
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1050
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1047
void doubleword_reciprocal(const Packet &x, Packet &recip_hi, Packet &recip_lo)
Definition GenericPacketMathFunctions.h:1046
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic(const Packet &a, Packet &exponent)
Definition GenericPacketMathFunctions.h:40
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:222
EIGEN_STRONG_INLINE Packet8h pfrexp(const Packet8h &a, Packet8h &exponent)
Definition MathFunctions.h:188
svint32_t PacketXi __attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)))
Definition PacketMath.h:33
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet pexp_float(const Packet _x)
Definition GenericPacketMathFunctions.h:439
EIGEN_STRONG_INLINE Packet4f prsqrt(const Packet4f &a)
Definition PacketMath.h:730
EIGEN_STRONG_INLINE Packet4f pcmp_lt_or_nan(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:870
float trig_reduce_huge(float xf, int *quadrant)
Definition GenericPacketMathFunctions.h:565
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pfloor(const Packet &a)
Definition GenericPacketMath.h:830
EIGEN_STRONG_INLINE void twoprod(const Packet &x, const Packet &y, Packet &p_hi, Packet &p_lo)
Definition GenericPacketMathFunctions.h:936
::uint64_t uint64_t
Definition Meta.h:58
::int16_t int16_t
Definition Meta.h:55
::uint32_t uint32_t
Definition Meta.h:56
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool() isfinite(const Eigen::bfloat16 &h)
Definition BFloat16.h:671
::int32_t int32_t
Definition Meta.h:57
::int64_t int64_t
Definition Meta.h:59
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
Definition BandTriangularSolver.h:13
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Packet2d v
Definition Complex.h:410
EIGEN_STRONG_INLINE void operator()(const Packet &x, Packet &log2_x_hi, Packet &log2_x_lo)
Definition GenericPacketMathFunctions.h:1171
EIGEN_STRONG_INLINE void operator()(const Packet &z, Packet &log2_x_hi, Packet &log2_x_lo)
Definition GenericPacketMathFunctions.h:1090
Definition GenericPacketMathFunctions.h:1071
EIGEN_STRONG_INLINE void operator()(const Packet &x, Packet &log2_x_hi, Packet &log2_x_lo)
Definition GenericPacketMathFunctions.h:1074
EIGEN_STRONG_INLINE Packet operator()(const Packet &x)
Definition GenericPacketMathFunctions.h:1332
EIGEN_STRONG_INLINE Packet operator()(const Packet &x)
Definition GenericPacketMathFunctions.h:1274
Definition GenericPacketMathFunctions.h:1257
EIGEN_STRONG_INLINE Packet operator()(const Packet &x)
Definition GenericPacketMathFunctions.h:1260
numext::int16_t type
Definition GenericPacketMathFunctions.h:27
numext::int64_t type
Definition GenericPacketMathFunctions.h:25
numext::int32_t type
Definition GenericPacketMathFunctions.h:24
numext::int16_t type
Definition GenericPacketMathFunctions.h:26
Definition GenericPacketMathFunctions.h:23
Definition GenericPacketMathFunctions.h:1628
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(Packet x, const typename unpacket_traits< Packet >::type coef[])
Definition GenericPacketMathFunctions.h:1630
Definition GenericPacketMathFunctions.h:139
unpacket_traits< Packet >::type Scalar
Definition GenericPacketMathFunctions.h:141
static EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet run(const Packet &a, const Packet &exponent)
Definition GenericPacketMathFunctions.h:150
unpacket_traits< Packet >::integer_packet PacketI
Definition GenericPacketMathFunctions.h:140
@ MantissaBits
Definition GenericPacketMathFunctions.h:145
@ TotalBits
Definition GenericPacketMathFunctions.h:144
@ ExponentBits
Definition GenericPacketMathFunctions.h:146
unpacket_traits< PacketI >::type ScalarI
Definition GenericPacketMathFunctions.h:142
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const typename unpacket_traits< Packet >::type coeff[])
Definition GenericPacketMathFunctions.h:1569
Definition GenericPacketMathFunctions.h:1560
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet run(const Packet &x, const typename unpacket_traits< Packet >::type coeff[])
Definition GenericPacketMathFunctions.h:1561
Definition ForwardDeclarations.h:17
Definition GenericPacketMath.h:133
EIGEN_DONT_INLINE Scalar zero()
Definition svd_common.h:296
std::ofstream out("Result.txt")
Definition PacketMath.h:47