10#ifndef EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
11#define EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
20template <
typename Scalar>
26template <
typename Scalar>
34template <
typename Scalar>
39template <
typename Scalar>
43template <
typename Scalar>
51template <
typename Scalar>
57template<
typename Reducer,
typename Device>
72 *accum =
sum_op(*accum, t);
74 template <
typename Packet>
83 template <
typename Packet>
90 template <
typename Packet>
94 template <
typename Packet>
101template <
typename T,
typename Device>
118 *accum =
sum_op(*accum, t);
121 template <
typename Packet>
131 template <
typename Packet>
139 template <
typename Packet>
143 template <
typename Packet>
157template <
typename T,
typename Device>
169template <
typename T,
bool IsMax = true,
bool IsInteger = true>
195template <
typename T,
int NaNPropagation=PropagateFast>
struct MaxReducer
199 *accum = op(t, *accum);
201 template <
typename Packet>
204 (*accum) = op.packetOp(*accum,
p);
209 template <
typename Packet>
216 template <
typename Packet>
220 template <
typename Packet>
227template <
typename T,
typename Device,
int NaNPropagation>
237template <
typename T,
int NaNPropagation=PropagateFast>
struct MinReducer
241 *accum = op(t, *accum);
243 template <
typename Packet>
246 (*accum) = op.packetOp(*accum,
p);
251 template <
typename Packet>
258 template <
typename Packet>
262 template <
typename Packet>
269template <
typename T,
typename Device,
int NaNPropagation>
285 template <
typename Packet>
293 template <
typename Packet>
300 template <
typename Packet>
304 template <
typename Packet>
311template <
typename T,
typename Device>
325 *accum = *accum && t;
335template <
typename Device>
348 *accum = *accum || t;
358template <
typename Device>
373 if (t.second < accum->second) {
375 }
else if (t.second > accum->second || accum->first > t.first ) {
387template <
typename T,
typename Device>
401 if (t.second > accum->second) {
403 }
else if (t.second < accum->second || accum->first > t.first) {
415template <
typename T,
typename Device>
426template <
typename T,
typename Index,
size_t NumDims>
436 for (
size_t i = 0;
i < NumDims; ++
i) {
444 for (
size_t i = 0;
i < NumDims; ++
i) {
456template <
typename T,
typename Index,
size_t NumDims>
466template <
typename Scalar>
473 template <
typename Packet>
481template<
typename Scalar>
ArrayXXi a
Definition Array_initializer_list_23_cxx11.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_UNROLL_LOOP
Definition Macros.h:1461
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
float * p
Definition Tutorial_Map_using.cpp:9
Eigen::Triplet< double > T
Definition Tutorial_sparse_example.cpp:6
#define EIGEN_EMPTY_STRUCT_CTOR(X)
Definition XprHelper.h:22
Scalar * b
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
Definition TensorFunctors.h:427
EIGEN_DEVICE_FUNC GaussianGenerator(const array< T, NumDims > &means, const array< T, NumDims > &std_devs)
Definition TensorFunctors.h:431
EIGEN_DEVICE_FUNC T operator()(const array< Index, NumDims > &coordinates) const
Definition TensorFunctors.h:441
static const bool PacketAccess
Definition TensorFunctors.h:429
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
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 y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate offset
Definition gnuplot_common_settings.hh:64
@ PropagateFast
Definition Constants.h:341
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux(const Packet &a)
Definition GenericPacketMath.h:875
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:244
EIGEN_DEVICE_FUNC Packet pmax(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:524
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_mul(const Packet &a)
Definition GenericPacketMath.h:882
EIGEN_DEVICE_FUNC Packet pmin(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:512
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T maxi(const T &x, const T &y)
Definition MathFunctions.h:1091
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T fmod(const T &a, const T &b)
Definition MathFunctions.h:1807
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T exp(const T &x)
Definition MathFunctions.h:1546
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
Definition MathFunctions.h:1083
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
Definition Meta.h:66
Definition BandTriangularSolver.h:13
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition TensorMeta.h:50
Definition TensorFunctors.h:323
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool *accum) const
Definition TensorFunctors.h:324
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const
Definition TensorFunctors.h:327
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const
Definition TensorFunctors.h:330
Definition TensorFunctors.h:371
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:379
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition TensorFunctors.h:372
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T &accum) const
Definition TensorFunctors.h:382
Definition TensorFunctors.h:399
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:407
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T &t, T *accum) const
Definition TensorFunctors.h:400
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T &accum) const
Definition TensorFunctors.h:410
Definition TensorFunctors.h:196
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition TensorFunctors.h:213
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition TensorFunctors.h:210
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:206
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition TensorFunctors.h:197
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition TensorFunctors.h:217
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition TensorFunctors.h:221
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition TensorFunctors.h:202
Definition TensorFunctors.h:112
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition TensorFunctors.h:140
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition TensorFunctors.h:135
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum)
Definition TensorFunctors.h:122
DenseIndex scalarCount_
Definition TensorFunctors.h:153
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE MeanReducer()
Definition TensorFunctors.h:114
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition TensorFunctors.h:132
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:127
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum)
Definition TensorFunctors.h:116
DenseIndex packetCount_
Definition TensorFunctors.h:154
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition TensorFunctors.h:144
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition TensorFunctors.h:189
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition TensorFunctors.h:183
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition TensorFunctors.h:177
Definition TensorFunctors.h:170
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition TensorFunctors.h:171
Definition TensorFunctors.h:238
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition TensorFunctors.h:255
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition TensorFunctors.h:263
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition TensorFunctors.h:252
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition TensorFunctors.h:259
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition TensorFunctors.h:239
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition TensorFunctors.h:244
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:248
Definition TensorFunctors.h:346
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool *accum) const
Definition TensorFunctors.h:347
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const
Definition TensorFunctors.h:353
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const
Definition TensorFunctors.h:350
Definition TensorFunctors.h:280
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition TensorFunctors.h:305
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:289
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition TensorFunctors.h:286
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition TensorFunctors.h:297
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition TensorFunctors.h:301
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition TensorFunctors.h:281
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition TensorFunctors.h:294
Definition TensorFunctors.h:69
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition TensorFunctors.h:91
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition TensorFunctors.h:75
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition TensorFunctors.h:70
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition TensorFunctors.h:84
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition TensorFunctors.h:87
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition TensorFunctors.h:79
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition TensorFunctors.h:95
Definition XprHelper.h:176
@ PacketAccess
Definition XprHelper.h:180
@ Cost
Definition XprHelper.h:179
Definition GenericPacketMath.h:107
Definition TensorFunctors.h:58
@ PacketAccess
Definition TensorFunctors.h:61
@ IsStateful
Definition TensorFunctors.h:62
@ IsExactlyAssociative
Definition TensorFunctors.h:63
@ Cost
Definition TensorFunctors.h:60
Definition TensorFunctors.h:467
EIGEN_DEVICE_FUNC scalar_clamp_op(const Scalar &_min, const Scalar &_max)
Definition TensorFunctors.h:468
const Scalar m_max
Definition TensorFunctors.h:479
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet &x) const
Definition TensorFunctors.h:475
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar &x) const
Definition TensorFunctors.h:470
const Scalar m_min
Definition TensorFunctors.h:478
Definition XprHelper.h:710
Definition TensorFunctors.h:44
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar &a, const Scalar &b) const
Definition TensorFunctors.h:47
Definition TensorFunctors.h:35
Definition TensorFunctors.h:21
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar &a) const
Definition TensorFunctors.h:23
EIGEN_DEVICE_FUNC scalar_mod_op(const Scalar &divisor)
Definition TensorFunctors.h:22
const Scalar m_divisor
Definition TensorFunctors.h:24
Definition CXX11Meta.h:292
Definition ForwardDeclarations.h:17
Definition GenericPacketMath.h:133
Definition PacketMath.h:47