mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-01-18 17:31:19 +01:00
Merge branch eigen:master into master
This commit is contained in:
@@ -20,10 +20,7 @@ namespace internal {
|
||||
template <typename Derived, typename Scalar = typename traits<Derived>::Scalar>
|
||||
struct squared_norm_impl {
|
||||
using Real = typename NumTraits<Scalar>::Real;
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Real run(const Derived& a) {
|
||||
Scalar result = a.unaryExpr(squared_norm_functor<Scalar>()).sum();
|
||||
return numext::real(result) + numext::imag(result);
|
||||
}
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Real run(const Derived& a) { return a.realView().cwiseAbs2().sum(); }
|
||||
};
|
||||
|
||||
template <typename Derived>
|
||||
|
||||
@@ -179,7 +179,6 @@ struct packet_traits<Eigen::half> : default_packet_traits {
|
||||
HasCos = EIGEN_FAST_MATH,
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasAbs2 = 0,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
@@ -218,7 +217,6 @@ struct packet_traits<bfloat16> : default_packet_traits {
|
||||
HasCos = EIGEN_FAST_MATH,
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasAbs2 = 0,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
|
||||
@@ -84,7 +84,6 @@ struct packet_traits<half> : default_packet_traits {
|
||||
HasDiv = 1,
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasAbs2 = 0,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
|
||||
@@ -42,7 +42,6 @@ struct packet_traits<half> : default_packet_traits {
|
||||
HasDiv = 1,
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasAbs2 = 0,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
|
||||
@@ -152,7 +152,6 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 0,
|
||||
HasAbsDiff = 0,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
|
||||
@@ -169,7 +169,6 @@ struct packet_traits<int8_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 16,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasCmp = 1,
|
||||
HasBlend = 0
|
||||
@@ -185,7 +184,6 @@ struct packet_traits<int16_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 8,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasCmp = 1,
|
||||
HasDiv = 1,
|
||||
@@ -202,7 +200,6 @@ struct packet_traits<int32_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 4,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasCmp = 1,
|
||||
HasDiv = 1,
|
||||
@@ -219,7 +216,6 @@ struct packet_traits<int64_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 2,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasCmp = 1,
|
||||
HasDiv = 1,
|
||||
@@ -236,7 +232,6 @@ struct packet_traits<uint8_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 16,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasNegate = 0,
|
||||
HasCmp = 1,
|
||||
@@ -253,7 +248,6 @@ struct packet_traits<uint16_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 8,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasNegate = 0,
|
||||
HasCmp = 1,
|
||||
@@ -271,7 +265,6 @@ struct packet_traits<uint32_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 4,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasNegate = 0,
|
||||
HasCmp = 1,
|
||||
@@ -289,7 +282,6 @@ struct packet_traits<uint64_t> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 2,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasNegate = 0,
|
||||
HasCmp = 1,
|
||||
@@ -307,7 +299,6 @@ struct packet_traits<float> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 4,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasBlend = 0,
|
||||
HasSign = 0,
|
||||
@@ -328,7 +319,6 @@ struct packet_traits<double> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 2,
|
||||
|
||||
HasAbs2 = 0,
|
||||
HasSetLinear = 0,
|
||||
HasBlend = 0,
|
||||
HasSign = 0,
|
||||
|
||||
@@ -189,7 +189,6 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -235,7 +234,6 @@ struct packet_traits<int8_t> : default_packet_traits {
|
||||
HasAbs = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
@@ -262,7 +260,6 @@ struct packet_traits<uint8_t> : default_packet_traits {
|
||||
HasAbs = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
@@ -291,7 +288,6 @@ struct packet_traits<int16_t> : default_packet_traits {
|
||||
HasAbs = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
@@ -318,7 +314,6 @@ struct packet_traits<uint16_t> : default_packet_traits {
|
||||
HasAbs = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
@@ -345,7 +340,6 @@ struct packet_traits<int32_t> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -372,7 +366,6 @@ struct packet_traits<uint32_t> : default_packet_traits {
|
||||
HasNegate = 0,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -401,7 +394,6 @@ struct packet_traits<int64_t> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -428,7 +420,6 @@ struct packet_traits<uint64_t> : default_packet_traits {
|
||||
HasNegate = 0,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -4663,7 +4654,6 @@ struct packet_traits<bfloat16> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -5048,7 +5038,6 @@ struct packet_traits<double> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
@@ -5424,7 +5413,6 @@ struct packet_traits<Eigen::half> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasAbsDiff = 0,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
|
||||
@@ -290,7 +290,6 @@ struct packet_traits<bool> : default_packet_traits {
|
||||
HasCmp = 1,
|
||||
HasShift = 0,
|
||||
HasAbs = 0,
|
||||
HasAbs2 = 0,
|
||||
HasMin = 0,
|
||||
HasMax = 0,
|
||||
HasConj = 0,
|
||||
@@ -2194,7 +2193,6 @@ struct packet_traits<Eigen::half> : default_packet_traits {
|
||||
HasDiv = 1,
|
||||
HasNegate = 0,
|
||||
HasAbs = 0,
|
||||
HasAbs2 = 0,
|
||||
HasMin = 0,
|
||||
HasMax = 0,
|
||||
HasConj = 0,
|
||||
|
||||
@@ -49,7 +49,6 @@ struct packet_traits<numext::int32_t> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
@@ -344,7 +343,6 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasNegate = 1,
|
||||
HasAbs = 1,
|
||||
HasArg = 0,
|
||||
HasAbs2 = 1,
|
||||
HasMin = 1,
|
||||
HasMax = 1,
|
||||
HasConj = 1,
|
||||
|
||||
@@ -100,27 +100,10 @@ struct scalar_abs2_op {
|
||||
};
|
||||
template <typename Scalar>
|
||||
struct functor_traits<scalar_abs2_op<Scalar>> {
|
||||
enum { Cost = NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasAbs2 };
|
||||
};
|
||||
|
||||
template <typename Scalar, bool IsComplex = NumTraits<Scalar>::IsComplex>
|
||||
struct squared_norm_functor {
|
||||
typedef Scalar result_type;
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const {
|
||||
return Scalar(numext::real(a) * numext::real(a), numext::imag(a) * numext::imag(a));
|
||||
}
|
||||
template <typename Packet>
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
|
||||
return Packet(pmul(a.v, a.v));
|
||||
}
|
||||
};
|
||||
template <typename Scalar>
|
||||
struct squared_norm_functor<Scalar, false> : scalar_abs2_op<Scalar> {};
|
||||
|
||||
template <typename Scalar>
|
||||
struct functor_traits<squared_norm_functor<Scalar>> {
|
||||
using Real = typename NumTraits<Scalar>::Real;
|
||||
enum { Cost = NumTraits<Real>::MulCost, PacketAccess = packet_traits<Real>::HasMul };
|
||||
enum {
|
||||
Cost = NumTraits<Scalar>::MulCost,
|
||||
PacketAccess = packet_traits<Scalar>::HasMul && !NumTraits<Scalar>::IsComplex
|
||||
};
|
||||
};
|
||||
|
||||
/** \internal
|
||||
|
||||
Reference in New Issue
Block a user