10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
22 template <
typename Scalar>
28 template <
typename Scalar>
36 template <
typename Scalar>
40 template <
typename Scalar>
45 template <
typename Scalar>
51 template <
typename Scalar>
59 template <
typename Reducer,
typename Device>
71 template <
typename Packet>
73 (*accum) = padd<Packet>(*accum,
p);
80 template <
typename Packet>
85 template <
typename Packet>
89 template <
typename Packet>
96 template <
typename T,
typename Device>
106 template <
typename T>
115 template <
typename Packet>
117 (*accum) = padd<Packet>(*accum,
p);
125 template <
typename Packet>
133 template <
typename Packet>
137 template <
typename Packet>
149 template <
typename T,
typename Device>
159 template <
typename T,
bool IsMax = true,
bool IsInteger = true>
163 template <
typename T>
167 template <
typename T>
171 template <
typename T>
176 template <
typename T,
int NaNPropagation = PropagateFast>
180 *accum =
op(
t, *accum);
182 template <
typename Packet>
185 (*accum) =
op.packetOp(*accum,
p);
190 template <
typename Packet>
195 template <
typename Packet>
199 template <
typename Packet>
202 return op(saccum,
op.predux(vaccum));
206 template <
typename T,
typename Device,
int NaNPropagation>
216 template <
typename T,
int NaNPropagation = PropagateFast>
220 *accum =
op(
t, *accum);
222 template <
typename Packet>
225 (*accum) =
op.packetOp(*accum,
p);
230 template <
typename Packet>
235 template <
typename Packet>
239 template <
typename Packet>
242 return op(saccum,
op.predux(vaccum));
246 template <
typename T,
typename Device,
int NaNPropagation>
256 template <
typename T>
260 (*accum) = prod_op(*accum,
t);
262 template <
typename Packet>
264 (*accum) = pmul<Packet>(*accum,
p);
270 template <
typename Packet>
275 template <
typename Packet>
279 template <
typename Packet>
286 template <
typename T,
typename Device>
302 template <
typename Device>
313 template <
typename Device>
320 template <
typename T>
323 if (
t.second < accum->second) {
325 }
else if (
t.second > accum->second || accum->first >
t.first) {
335 template <
typename T,
typename Device>
340 template <
typename T>
343 if (
t.second > accum->second) {
345 }
else if (
t.second < accum->second || accum->first >
t.first) {
355 template <
typename T,
typename Device>
360 template <
typename T,
typename Index,
size_t NumDims>
368 for (
size_t i = 0;
i < NumDims; ++
i) {
376 for (
size_t i = 0;
i < NumDims; ++
i) {
388 template <
typename T,
typename Index,
size_t NumDims>
398 template <
typename Scalar>
404 template <
typename Packet>
411 template <
typename Scalar>
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Eigen::Triplet< double > T
Definition: EigenUnitTest.cpp:11
#define EIGEN_UNROLL_LOOP
Definition: Macros.h:1298
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
float * p
Definition: Tutorial_Map_using.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
Definition: TensorFunctors.h:361
static constexpr bool PacketAccess
Definition: TensorFunctors.h:363
EIGEN_DEVICE_FUNC GaussianGenerator(const array< T, NumDims > &means, const array< T, NumDims > &std_devs)
Definition: TensorFunctors.h:365
EIGEN_DEVICE_FUNC T operator()(const array< Index, NumDims > &coordinates) const
Definition: TensorFunctors.h:373
array< T, NumDims > m_means
Definition: TensorFunctors.h:384
array< T, NumDims > m_two_sigmas
Definition: TensorFunctors.h:385
@ PropagateFast
Definition: Constants.h:340
const Scalar * a
Definition: level2_cplx_impl.h:32
char char * op
Definition: level2_impl.h:374
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:368
EIGEN_DEVICE_FUNC Packet pmax(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:663
EIGEN_DEVICE_FUNC Packet pmin(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:649
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux(const Packet &a)
Definition: GenericPacketMath.h:1232
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_mul(const Packet &a)
Definition: GenericPacketMath.h:1238
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T maxi(const T &x, const T &y)
Definition: MathFunctions.h:926
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T fmod(const T &a, const T &b)
Definition: MathFunctions.h:1788
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T exp(const T &x)
Definition: MathFunctions.h:1424
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
Definition: MathFunctions.h:920
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
std::array< T, N > array
Definition: EmulateArray.h:231
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
Definition: Meta.h:75
Definition: Eigen_Colamd.h:49
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: TensorMeta.h:47
Definition: TensorFunctors.h:296
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool *accum) const
Definition: TensorFunctors.h:297
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const
Definition: TensorFunctors.h:298
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const
Definition: TensorFunctors.h:299
Definition: TensorFunctors.h:321
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:322
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:329
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T &accum) const
Definition: TensorFunctors.h:332
Definition: TensorFunctors.h:341
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T &t, T *accum) const
Definition: TensorFunctors.h:342
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T &accum) const
Definition: TensorFunctors.h:352
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:349
Definition: TensorFunctors.h:177
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:194
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:191
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:187
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:178
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:196
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:200
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:183
Definition: TensorFunctors.h:107
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:134
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:129
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum)
Definition: TensorFunctors.h:116
DenseIndex scalarCount_
Definition: TensorFunctors.h:145
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE MeanReducer()
Definition: TensorFunctors.h:108
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:126
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:121
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum)
Definition: TensorFunctors.h:110
DenseIndex packetCount_
Definition: TensorFunctors.h:146
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:138
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:173
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:169
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:165
Definition: TensorFunctors.h:160
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:161
Definition: TensorFunctors.h:217
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:234
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:240
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:231
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:236
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:218
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:223
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:227
Definition: TensorFunctors.h:307
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool *accum) const
Definition: TensorFunctors.h:308
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const
Definition: TensorFunctors.h:310
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const
Definition: TensorFunctors.h:309
Definition: TensorFunctors.h:257
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:280
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:266
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:263
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:274
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:276
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:258
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:271
Definition: TensorFunctors.h:66
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:86
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:72
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:67
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:81
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:84
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:76
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:90
Definition: XprHelper.h:205
@ PacketAccess
Definition: XprHelper.h:206
@ Cost
Definition: XprHelper.h:206
Definition: GenericPacketMath.h:108
Definition: TensorFunctors.h:60
@ PacketAccess
Definition: TensorFunctors.h:61
@ IsStateful
Definition: TensorFunctors.h:61
@ IsExactlyAssociative
Definition: TensorFunctors.h:61
@ Cost
Definition: TensorFunctors.h:61
Template functor to cast a scalar to another type.
Definition: functors/UnaryFunctors.h:205
Definition: TensorFunctors.h:399
EIGEN_DEVICE_FUNC scalar_clamp_op(const Scalar &_min, const Scalar &_max)
Definition: TensorFunctors.h:400
const Scalar m_max
Definition: TensorFunctors.h:409
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet &x) const
Definition: TensorFunctors.h:405
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar &x) const
Definition: TensorFunctors.h:401
const Scalar m_min
Definition: TensorFunctors.h:408
Definition: XprHelper.h:883
Template functor to compute the exponential of a scalar.
Definition: functors/UnaryFunctors.h:348
Definition: TensorFunctors.h:46
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar &a, const Scalar &b) const
Definition: TensorFunctors.h:47
Template functor to compute the max of two scalars.
Definition: BinaryFunctors.h:171
Template functor to compute the min of two scalars.
Definition: BinaryFunctors.h:142
Template functor to compute the modulo between 2 arrays.
Definition: TensorFunctors.h:37
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar &a, const Scalar &b) const
Definition: TensorFunctors.h:38
Template functor to compute the modulo between an array and a scalar.
Definition: TensorFunctors.h:23
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar &a) const
Definition: TensorFunctors.h:25
EIGEN_DEVICE_FUNC scalar_mod_op(const Scalar &divisor)
Definition: TensorFunctors.h:24
const Scalar m_divisor
Definition: TensorFunctors.h:26
Template functor to compute the product of two scalars.
Definition: BinaryFunctors.h:73
Template functor to compute the quotient of two scalars.
Definition: BinaryFunctors.h:430
Template functor to compute the sum of two scalars.
Definition: BinaryFunctors.h:34
Definition: MoreMeta.h:343
Definition: GenericPacketMath.h:134
Definition: ZVector/PacketMath.h:50