TensorFunctors.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 
10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
12 
13 namespace Eigen {
14 namespace internal {
15 
16 
20 template <typename Scalar>
21 struct scalar_mod_op {
22  EIGEN_DEVICE_FUNC scalar_mod_op(const Scalar& divisor) : m_divisor(divisor) {}
23  EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a) const { return a % m_divisor; }
25 };
26 template <typename Scalar>
29 
30 
34 template <typename Scalar>
37  EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a, const Scalar& b) const { return a % b; }
38 };
39 template <typename Scalar>
42 
43 template <typename Scalar>
46  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar
47  operator()(const Scalar& a, const Scalar& b) const {
48  return numext::fmod(a, b);
49  }
50 };
51 template <typename Scalar>
53  enum { Cost = 13, // Reciprocal throughput of FPREM on Haswell.
54  PacketAccess = false };
55 };
56 
57 
62 template <typename T>
65  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T operator()(const T& x) const {
66  const T one = T(1);
67  return one / (one + numext::exp(-x));
68  }
69 
70  template <typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
71  Packet packetOp(const Packet& x) const {
72  const Packet one = pset1<Packet>(T(1));
73  return pdiv(one, padd(one, pexp(pnegate(x))));
74  }
75 };
76 
77 template <typename T>
79  enum {
83  };
84 };
85 
86 
87 template<typename Reducer, typename Device>
89  enum {
90  Cost = 1,
91  PacketAccess = false
92  };
93 };
94 
95 // Standard reduction functors
96 template <typename T> struct SumReducer
97 {
99  static const bool IsStateful = false;
100 
101  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
103  *accum = sum_op(*accum, t);
104  }
105  template <typename Packet>
106  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
107  (*accum) = padd<Packet>(*accum, p);
108  }
109 
110  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
112  return conv(0);
113  }
114  template <typename Packet>
115  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
116  return pset1<Packet>(initialize());
117  }
118  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
119  return accum;
120  }
121  template <typename Packet>
122  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
123  return vaccum;
124  }
125  template <typename Packet>
126  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
128  return sum_op(saccum, predux(vaccum));
129  }
130 };
131 
132 template <typename T, typename Device>
133 struct reducer_traits<SumReducer<T>, Device> {
134  enum {
137  };
138 };
139 
140 
141 template <typename T> struct MeanReducer
142 {
144  static const bool IsStateful = true;
145 
146  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
148 
149  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) {
151  *accum = sum_op(*accum, t);
152  scalarCount_++;
153  }
154  template <typename Packet>
155  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) {
156  (*accum) = padd<Packet>(*accum, p);
157  packetCount_++;
158  }
159 
160  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
162  return conv(0);
163  }
164  template <typename Packet>
165  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
166  return pset1<Packet>(initialize());
167  }
168  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
169  return accum / scalarCount_;
170  }
171  template <typename Packet>
172  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
173  return pdiv(vaccum, pset1<Packet>(packetCount_));
174  }
175  template <typename Packet>
176  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
178  return sum_op(saccum, predux(vaccum)) / (scalarCount_ + packetCount_ * unpacket_traits<Packet>::size);
179  }
180 
181  protected:
184 };
185 
186 template <typename T, typename Device>
187 struct reducer_traits<MeanReducer<T>, Device> {
188  enum {
191  };
192 };
193 
194 
195 template <typename T, bool IsMax = true, bool IsInteger = true>
197  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
199  }
200 };
201 template <typename T>
202 struct MinMaxBottomValue<T, true, false> {
203  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
205  }
206 };
207 template <typename T>
208 struct MinMaxBottomValue<T, false, true> {
209  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
211  }
212 };
213 template <typename T>
214 struct MinMaxBottomValue<T, false, false> {
215  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
217  }
218 };
219 
220 
221 template <typename T> struct MaxReducer
222 {
224  static const bool IsStateful = false;
225 
226  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
227  if (t > *accum) { *accum = t; }
228  }
229  template <typename Packet>
230  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
231  (*accum) = pmax<Packet>(*accum, p);
232  }
233  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
235  }
236  template <typename Packet>
237  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
238  return pset1<Packet>(initialize());
239  }
240  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
241  return accum;
242  }
243  template <typename Packet>
244  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
245  return vaccum;
246  }
247  template <typename Packet>
248  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
249  return numext::maxi(saccum, predux_max(vaccum));
250  }
251 };
252 
253 template <typename T, typename Device>
254 struct reducer_traits<MaxReducer<T>, Device> {
255  enum {
258  };
259 };
260 
261 
262 template <typename T> struct MinReducer
263 {
265  static const bool IsStateful = false;
266 
267  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
268  if (t < *accum) { *accum = t; }
269  }
270  template <typename Packet>
271  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
272  (*accum) = pmin<Packet>(*accum, p);
273  }
274  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
276  }
277  template <typename Packet>
278  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
279  return pset1<Packet>(initialize());
280  }
281  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
282  return accum;
283  }
284  template <typename Packet>
285  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
286  return vaccum;
287  }
288  template <typename Packet>
289  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
290  return numext::mini(saccum, predux_min(vaccum));
291  }
292 };
293 
294 template <typename T, typename Device>
295 struct reducer_traits<MinReducer<T>, Device> {
296  enum {
299  };
300 };
301 
302 
303 template <typename T> struct ProdReducer
304 {
306  static const bool IsStateful = false;
307 
308  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
310  (*accum) = prod_op(*accum, t);
311  }
312  template <typename Packet>
313  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
314  (*accum) = pmul<Packet>(*accum, p);
315  }
316 
317  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
319  return conv(1);
320  }
321  template <typename Packet>
322  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
323  return pset1<Packet>(initialize());
324  }
325  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
326  return accum;
327  }
328  template <typename Packet>
329  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
330  return vaccum;
331  }
332  template <typename Packet>
333  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
335  return prod_op(saccum, predux_mul(vaccum));
336  }
337 };
338 
339 template <typename T, typename Device>
340 struct reducer_traits<ProdReducer<T>, Device> {
341  enum {
344  };
345 };
346 
347 
349 {
350  static const bool PacketAccess = false;
351  static const bool IsStateful = false;
352 
353  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool* accum) const {
354  *accum = *accum && t;
355  }
356  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const {
357  return true;
358  }
359  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const {
360  return accum;
361  }
362 };
363 
364 template <typename Device>
365 struct reducer_traits<AndReducer, Device> {
366  enum {
367  Cost = 1,
368  PacketAccess = false
369  };
370 };
371 
372 
373 struct OrReducer {
374  static const bool PacketAccess = false;
375  static const bool IsStateful = false;
376 
377  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool* accum) const {
378  *accum = *accum || t;
379  }
380  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const {
381  return false;
382  }
383  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const {
384  return accum;
385  }
386 };
387 
388 template <typename Device>
389 struct reducer_traits<OrReducer, Device> {
390  enum {
391  Cost = 1,
392  PacketAccess = false
393  };
394 };
395 
396 
397 // Argmin/Argmax reducers
398 template <typename T> struct ArgMaxTupleReducer
399 {
400  static const bool PacketAccess = false;
401  static const bool IsStateful = false;
402 
403  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
404  if (t.second > accum->second) { *accum = t; }
405  }
406  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
408  }
409  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T& accum) const {
410  return accum;
411  }
412 };
413 
414 template <typename T, typename Device>
415 struct reducer_traits<ArgMaxTupleReducer<T>, Device> {
416  enum {
418  PacketAccess = false
419  };
420 };
421 
422 
423 template <typename T> struct ArgMinTupleReducer
424 {
425  static const bool PacketAccess = false;
426  static const bool IsStateful = false;
427 
428  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T& t, T* accum) const {
429  if (t.second < accum->second) { *accum = t; }
430  }
431  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
433  }
434  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T& accum) const {
435  return accum;
436  }
437 };
438 
439 template <typename T, typename Device>
440 struct reducer_traits<ArgMinTupleReducer<T>, Device> {
441  enum {
443  PacketAccess = false
444  };
445 };
446 
447 
448 template <typename T, typename Index, size_t NumDims>
450  public:
451  static const bool PacketAccess = false;
452 
453  EIGEN_DEVICE_FUNC GaussianGenerator(const array<T, NumDims>& means,
454  const array<T, NumDims>& std_devs)
455  : m_means(means)
456  {
457  for (size_t i = 0; i < NumDims; ++i) {
458  m_two_sigmas[i] = std_devs[i] * std_devs[i] * 2;
459  }
460  }
461 
462  EIGEN_DEVICE_FUNC T operator()(const array<Index, NumDims>& coordinates) const {
463  T tmp = T(0);
464  for (size_t i = 0; i < NumDims; ++i) {
465  T offset = coordinates[i] - m_means[i];
466  tmp += offset * offset / m_two_sigmas[i];
467  }
468  return numext::exp(-tmp);
469  }
470 
471  private:
474 };
475 
476 template <typename T, typename Index, size_t NumDims>
477 struct functor_traits<GaussianGenerator<T, Index, NumDims> > {
478  enum {
483  };
484 };
485 
486 } // end namespace internal
487 } // end namespace Eigen
488 
489 #endif // EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
Eigen::internal::reducer_traits::Cost
@ Cost
Definition: TensorFunctors.h:90
Eigen::internal::MaxReducer::initializePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:237
EIGEN_EMPTY_STRUCT_CTOR
#define EIGEN_EMPTY_STRUCT_CTOR(X)
Definition: XprHelper.h:22
Eigen::internal::scalar_mod_op::m_divisor
const Scalar m_divisor
Definition: TensorFunctors.h:24
Eigen::internal::GaussianGenerator::operator()
EIGEN_DEVICE_FUNC T operator()(const array< Index, NumDims > &coordinates) const
Definition: TensorFunctors.h:462
Eigen::internal::scalar_mod_op::scalar_mod_op
EIGEN_DEVICE_FUNC scalar_mod_op(const Scalar &divisor)
Definition: TensorFunctors.h:22
Eigen::internal::MeanReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:143
Eigen
Definition: common.h:73
Eigen::internal::OrReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:374
Eigen::internal::OrReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const
Definition: TensorFunctors.h:380
Eigen::internal::MinMaxBottomValue< T, true, false >::bottom_value
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:203
Eigen::internal::ArgMinTupleReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:426
Eigen::internal::MinReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:264
Eigen::internal::SumReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:110
Eigen::internal::GaussianGenerator::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:451
b
Scalar * b
Definition: cholesky.cpp:56
Eigen::internal::AndReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:351
Eigen::internal::MinReducer::finalizeBoth
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:289
Eigen::internal::ArgMinTupleReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T &t, T *accum) const
Definition: TensorFunctors.h:428
Eigen::internal::MaxReducer::reducePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:230
Eigen::array< T, NumDims >
Eigen::internal::SumReducer
Definition: TensorFunctors.h:96
Eigen::internal::ArgMaxTupleReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:400
Eigen::internal::scalar_cast_op
Definition: UnaryFunctors.h:152
Eigen::internal::packet_traits
Definition: GenericPacketMath.h:96
Eigen::internal::MaxReducer::finalizePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:244
Eigen::internal::MaxReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:233
Eigen::internal::predux_mul
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_mul(const Packet &a)
Definition: GenericPacketMath.h:336
Eigen::internal::ArgMinTupleReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:425
Eigen::internal::SumReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:118
Eigen::internal::MeanReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum)
Definition: TensorFunctors.h:149
Eigen::internal::pdiv
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:175
Eigen::internal::scalar_sigmoid_op
Definition: TensorFunctors.h:63
Scalar
SCALAR Scalar
Definition: common.h:84
Eigen::internal::GaussianGenerator::GaussianGenerator
EIGEN_DEVICE_FUNC GaussianGenerator(const array< T, NumDims > &means, const array< T, NumDims > &std_devs)
Definition: TensorFunctors.h:453
Eigen::internal::MinMaxBottomValue
Definition: TensorFunctors.h:196
Eigen::internal::MeanReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:160
Eigen::internal::scalar_fmod_op::operator()
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar &a, const Scalar &b) const
Definition: TensorFunctors.h:47
Eigen::internal::OrReducer
Definition: TensorFunctors.h:373
Eigen::internal::ArgMaxTupleReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:406
Eigen::internal::MinMaxBottomValue::bottom_value
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:197
Eigen::internal::ProdReducer::reducePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:313
Eigen::internal::MeanReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:144
Eigen::internal::MeanReducer::MeanReducer
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE MeanReducer()
Definition: TensorFunctors.h:147
Eigen::internal::ProdReducer::finalizeBoth
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:333
Eigen::internal::SumReducer::finalizePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:122
Eigen::internal::MaxReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:226
Eigen::internal::MeanReducer::finalizeBoth
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:176
Eigen::internal::scalar_product_op
Definition: BinaryFunctors.h:76
Eigen::internal::ArgMinTupleReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T &accum) const
Definition: TensorFunctors.h:434
Eigen::internal::OrReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:375
Eigen::numext::exp
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T exp(const T &x)
Definition: Eigen/src/Core/MathFunctions.h:1088
Eigen::internal::MeanReducer::initializePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:165
Eigen::internal::SumReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:98
Eigen::PacketType
Definition: TensorMeta.h:50
Eigen::internal::ArgMaxTupleReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:401
Eigen::internal::reducer_traits::PacketAccess
@ PacketAccess
Definition: TensorFunctors.h:91
Eigen::internal::ArgMaxTupleReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:403
Eigen::internal::scalar_exp_op
Definition: UnaryFunctors.h:231
Eigen::internal::AndReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:350
Eigen::internal::MeanReducer::reducePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum)
Definition: TensorFunctors.h:155
Eigen::internal::GaussianGenerator
Definition: TensorFunctors.h:449
Eigen::internal::MaxReducer::finalizeBoth
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:248
Eigen::internal::AndReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const
Definition: TensorFunctors.h:359
Eigen::internal::scalar_mod2_op::EIGEN_EMPTY_STRUCT_CTOR
EIGEN_EMPTY_STRUCT_CTOR(scalar_mod2_op)
Eigen::internal::ArgMaxTupleReducer
Definition: TensorFunctors.h:398
Eigen::internal::pnegate
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition: AltiVec/Complex.h:100
Eigen::numext::mini
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
Definition: Eigen/src/Core/MathFunctions.h:817
Eigen::internal::unpacket_traits
Definition: XprHelper.h:158
Eigen::internal::MinReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:274
Eigen::internal::reducer_traits
Definition: TensorFunctors.h:88
Eigen::internal::scalar_mod2_op::operator()
EIGEN_DEVICE_FUNC Scalar operator()(const Scalar &a, const Scalar &b) const
Definition: TensorFunctors.h:37
Eigen::internal::MinReducer::finalizePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:285
Eigen::internal::scalar_mod_op
Definition: TensorFunctors.h:21
x
Scalar * x
Definition: level1_cplx_impl.h:89
EIGEN_STRONG_INLINE
#define EIGEN_STRONG_INLINE
Definition: Macros.h:494
Eigen::internal::MinReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:265
Eigen::internal::SumReducer::finalizeBoth
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet &vaccum) const
Definition: TensorFunctors.h:126
Eigen::internal::SumReducer::initializePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:115
Eigen::internal::ProdReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:305
Eigen::internal::ArgMinTupleReducer
Definition: TensorFunctors.h:423
Eigen::internal::MaxReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:224
Eigen::numext::fmod
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T fmod(const T &a, const T &b)
Definition: Eigen/src/Core/MathFunctions.h:1244
Eigen::internal::Packet
Definition: ZVector/PacketMath.h:48
Eigen::internal::ArgMinTupleReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:431
Eigen::internal::OrReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const
Definition: TensorFunctors.h:383
Eigen::internal::ProdReducer::finalizePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:329
Eigen::internal::ProdReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const
Definition: TensorFunctors.h:317
Eigen::internal::scalar_mod_op::operator()
EIGEN_DEVICE_FUNC Scalar operator()(const Scalar &a) const
Definition: TensorFunctors.h:23
Eigen::internal::MinMaxBottomValue< T, false, true >::bottom_value
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:209
Eigen::internal::ProdReducer::initializePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:322
Eigen::internal::pexp
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp(const Packet &a)
Definition: GenericPacketMath.h:402
Eigen::internal::sum_op
Definition: EmulateCXX11Meta.h:212
Eigen::internal::MinReducer
Definition: TensorFunctors.h:262
Eigen::internal::MeanReducer::finalizePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet &vaccum) const
Definition: TensorFunctors.h:172
Eigen::internal::MinReducer::initializePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const
Definition: TensorFunctors.h:278
Eigen::internal::scalar_div_cost
Definition: XprHelper.h:675
Eigen::internal::predux
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux(const Packet &a)
Definition: GenericPacketMath.h:323
Eigen::internal::AndReducer::initialize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const
Definition: TensorFunctors.h:356
Eigen::internal::MaxReducer::PacketAccess
static const bool PacketAccess
Definition: TensorFunctors.h:223
Eigen::DenseIndex
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
Definition: Meta.h:25
a
Scalar * a
Definition: cholesky.cpp:26
Eigen::internal::MinReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:267
Eigen::internal::GaussianGenerator::m_two_sigmas
array< T, NumDims > m_two_sigmas
Definition: TensorFunctors.h:473
Eigen::internal::scalar_sigmoid_op::packetOp
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet &x) const
Definition: TensorFunctors.h:71
Eigen::internal::AndReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool *accum) const
Definition: TensorFunctors.h:353
Eigen::internal::MeanReducer::scalarCount_
DenseIndex scalarCount_
Definition: TensorFunctors.h:182
Eigen::internal::MinReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:281
Eigen::internal::ArgMaxTupleReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T &accum) const
Definition: TensorFunctors.h:409
Eigen::internal::SumReducer::reducePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:106
Eigen::internal::OrReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool *accum) const
Definition: TensorFunctors.h:377
Eigen::internal::padd
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:151
Eigen::internal::MeanReducer
Definition: TensorFunctors.h:141
Eigen::internal::ProdReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:325
Eigen::internal::ProdReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:308
Eigen::internal::GaussianGenerator::m_means
array< T, NumDims > m_means
Definition: TensorFunctors.h:472
Eigen::internal::MinReducer::reducePacket
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet &p, Packet *accum) const
Definition: TensorFunctors.h:271
Eigen::internal::SumReducer::reduce
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T *accum) const
Definition: TensorFunctors.h:101
Eigen::internal::functor_traits
Definition: XprHelper.h:146
Eigen::internal::scalar_sum_op
Definition: BinaryFunctors.h:32
Eigen::internal::MinMaxBottomValue< T, false, false >::bottom_value
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T bottom_value()
Definition: TensorFunctors.h:215
internal
Definition: BandTriangularSolver.h:13
Eigen::numext::maxi
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T maxi(const T &x, const T &y)
Definition: Eigen/src/Core/MathFunctions.h:825
Eigen::internal::SumReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:99
Eigen::internal::functor_traits::PacketAccess
@ PacketAccess
Definition: XprHelper.h:151
Eigen::internal::MaxReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:240
Eigen::internal::MeanReducer::packetCount_
DenseIndex packetCount_
Definition: TensorFunctors.h:183
Eigen::internal::predux_min
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_min(const Packet &a)
Definition: GenericPacketMath.h:340
Eigen::internal::scalar_fmod_op::EIGEN_EMPTY_STRUCT_CTOR
EIGEN_EMPTY_STRUCT_CTOR(scalar_fmod_op)
Eigen::internal::scalar_mod2_op
Definition: TensorFunctors.h:35
Eigen::internal::scalar_fmod_op
Definition: TensorFunctors.h:44
Eigen::internal::ProdReducer::IsStateful
static const bool IsStateful
Definition: TensorFunctors.h:306
Eigen::NumTraits
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:150
Eigen::internal::functor_traits::Cost
@ Cost
Definition: XprHelper.h:150
Eigen::internal::AndReducer
Definition: TensorFunctors.h:348
Eigen::internal::MeanReducer::finalize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const
Definition: TensorFunctors.h:168
Eigen::internal::predux_max
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_max(const Packet &a)
Definition: GenericPacketMath.h:344
Eigen::internal::MaxReducer
Definition: TensorFunctors.h:221
Eigen::internal::ProdReducer
Definition: TensorFunctors.h:303
Eigen::Index
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:33


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:06:44