TensorBase.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_BASE_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_BASE_H
12 
13 // clang-format off
14 
15 namespace Eigen {
16 
25 #ifndef EIGEN_PARSED_BY_DOXYGEN
26 // FIXME Doxygen does not like the inheritance with different template parameters
27 // Since there is no doxygen documentation inside, we disable it for now
28 template<typename Derived>
30 {
31  public:
33  typedef typename DerivedTraits::Scalar Scalar;
34  typedef typename DerivedTraits::Index Index;
36  static const int NumDimensions = DerivedTraits::NumDimensions;
37 
38  // Generic nullary operation support.
39  template <typename CustomNullaryOp> EIGEN_DEVICE_FUNC
41  nullaryExpr(const CustomNullaryOp& func) const {
43  }
44 
45  // Coefficient-wise nullary operators
46  EIGEN_DEVICE_FUNC
48  constant(const Scalar& value) const {
49  return nullaryExpr(internal::scalar_constant_op<Scalar>(value));
50  }
51 
52  EIGEN_DEVICE_FUNC
54  random() const {
55  return nullaryExpr(internal::UniformRandomGenerator<Scalar>());
56  }
57  template <typename RandomGenerator> EIGEN_DEVICE_FUNC
59  random(const RandomGenerator& gen = RandomGenerator()) const {
60  return nullaryExpr(gen);
61  }
62 
63  // Tensor generation
64  template <typename Generator> EIGEN_DEVICE_FUNC
66  generate(const Generator& generator) const {
68  }
69 
70  // Generic unary operation support.
71  template <typename CustomUnaryOp> EIGEN_DEVICE_FUNC
73  unaryExpr(const CustomUnaryOp& func) const {
75  }
76 
77  // Coefficient-wise unary operators
78  EIGEN_DEVICE_FUNC
80  operator-() const {
82  }
83 
84  EIGEN_DEVICE_FUNC
86  sqrt() const {
88  }
89 
90  EIGEN_DEVICE_FUNC
92  sign() const {
94  }
95 
96  EIGEN_DEVICE_FUNC
98  rsqrt() const {
100  }
101 
102  EIGEN_DEVICE_FUNC
104  square() const {
106  }
107 
108  EIGEN_DEVICE_FUNC
110  cube() const {
112  }
113 
114  EIGEN_DEVICE_FUNC
116  inverse() const {
118  }
119 
120  EIGEN_DEVICE_FUNC
122  tanh() const {
124  }
125 
126  EIGEN_DEVICE_FUNC
128  lgamma() const {
130  }
131 
132  EIGEN_DEVICE_FUNC
134  digamma() const {
136  }
137 
138  // igamma(a = this, x = other)
139  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
140  const TensorCwiseBinaryOp<internal::scalar_igamma_op<Scalar>, const Derived, const OtherDerived>
141  igamma(const OtherDerived& other) const {
142  return binaryExpr(other.derived(), internal::scalar_igamma_op<Scalar>());
143  }
144 
145  // igammac(a = this, x = other)
146  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
147  const TensorCwiseBinaryOp<internal::scalar_igammac_op<Scalar>, const Derived, const OtherDerived>
148  igammac(const OtherDerived& other) const {
149  return binaryExpr(other.derived(), internal::scalar_igammac_op<Scalar>());
150  }
151 
152  // zeta(x = this, q = other)
153  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
154  const TensorCwiseBinaryOp<internal::scalar_zeta_op<Scalar>, const Derived, const OtherDerived>
155  zeta(const OtherDerived& other) const {
156  return binaryExpr(other.derived(), internal::scalar_zeta_op<Scalar>());
157  }
158 
159  // polygamma(n = this, x = other)
160  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
161  const TensorCwiseBinaryOp<internal::scalar_polygamma_op<Scalar>, const Derived, const OtherDerived>
162  polygamma(const OtherDerived& other) const {
163  return binaryExpr(other.derived(), internal::scalar_polygamma_op<Scalar>());
164  }
165 
166  EIGEN_DEVICE_FUNC
168  erf() const {
170  }
171 
172  EIGEN_DEVICE_FUNC
174  erfc() const {
176  }
177 
178  EIGEN_DEVICE_FUNC
180  sigmoid() const {
182  }
183 
184  EIGEN_DEVICE_FUNC
186  exp() const {
188  }
189 
190  EIGEN_DEVICE_FUNC
192  log() const {
194  }
195 
196  EIGEN_DEVICE_FUNC
198  log1p() const {
200  }
201 
202  EIGEN_DEVICE_FUNC
204  abs() const {
206  }
207 
208  EIGEN_DEVICE_FUNC
210  conjugate() const {
212  }
213 
214  EIGEN_DEVICE_FUNC
216  pow(Scalar exponent) const {
218  }
219 
220  EIGEN_DEVICE_FUNC
222  real() const {
224  }
225 
226  EIGEN_DEVICE_FUNC
228  imag() const {
230  }
231 
232  EIGEN_DEVICE_FUNC
234  operator+ (Scalar rhs) const {
236  }
237 
238  EIGEN_DEVICE_FUNC
239  EIGEN_STRONG_INLINE friend
241  operator+ (Scalar lhs, const Derived& rhs) {
242  return rhs.unaryExpr(internal::bind1st_op<internal::scalar_sum_op<Scalar> >(lhs));
243  }
244 
245  EIGEN_DEVICE_FUNC
247  operator- (Scalar rhs) const {
248  EIGEN_STATIC_ASSERT((NumTraits<Scalar>::IsSigned || internal::is_same<Scalar, const std::complex<float> >::value), YOU_MADE_A_PROGRAMMING_MISTAKE);
250  }
251 
252  EIGEN_DEVICE_FUNC
253  EIGEN_STRONG_INLINE friend
255  operator- (Scalar lhs, const Derived& rhs) {
257  }
258 
259  EIGEN_DEVICE_FUNC
261  operator* (Scalar rhs) const {
263  }
264 
265  EIGEN_DEVICE_FUNC
266  EIGEN_STRONG_INLINE friend
268  operator* (Scalar lhs, const Derived& rhs) {
269  return rhs.unaryExpr(internal::bind1st_op<internal::scalar_product_op<Scalar> >(lhs));
270  }
271 
272  EIGEN_DEVICE_FUNC
274  operator/ (Scalar rhs) const {
276  }
277 
278  EIGEN_DEVICE_FUNC
279  EIGEN_STRONG_INLINE friend
281  operator/ (Scalar lhs, const Derived& rhs) {
282  return rhs.unaryExpr(internal::bind1st_op<internal::scalar_quotient_op<Scalar> >(lhs));
283  }
284 
285  EIGEN_DEVICE_FUNC
287  operator% (Scalar rhs) const {
288  EIGEN_STATIC_ASSERT(NumTraits<Scalar>::IsInteger, YOU_MADE_A_PROGRAMMING_MISTAKE_TRY_MOD);
290  }
291 
292  EIGEN_DEVICE_FUNC
293  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
294  cwiseMax(Scalar threshold) const {
295  return cwiseMax(constant(threshold));
296  }
297 
298  EIGEN_DEVICE_FUNC
299  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
300  cwiseMin(Scalar threshold) const {
301  return cwiseMin(constant(threshold));
302  }
303 
304  template <typename NewType> EIGEN_DEVICE_FUNC
306  cast() const {
308  }
309 
310  EIGEN_DEVICE_FUNC
312  round() const {
314  }
315 
316  EIGEN_DEVICE_FUNC
318  ceil() const {
320  }
321 
322  EIGEN_DEVICE_FUNC
324  floor() const {
326  }
327 
328  // Generic binary operation support.
329  template <typename CustomBinaryOp, typename OtherDerived> EIGEN_DEVICE_FUNC
331  binaryExpr(const OtherDerived& other, const CustomBinaryOp& func) const {
333  }
334 
335  // Coefficient-wise binary operators.
336  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
337  const TensorCwiseBinaryOp<internal::scalar_sum_op<Scalar>, const Derived, const OtherDerived>
338  operator+(const OtherDerived& other) const {
339  return binaryExpr(other.derived(), internal::scalar_sum_op<Scalar>());
340  }
341 
342  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
343  const TensorCwiseBinaryOp<internal::scalar_difference_op<Scalar>, const Derived, const OtherDerived>
344  operator-(const OtherDerived& other) const {
345  return binaryExpr(other.derived(), internal::scalar_difference_op<Scalar>());
346  }
347 
348  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
349  const TensorCwiseBinaryOp<internal::scalar_product_op<Scalar>, const Derived, const OtherDerived>
350  operator*(const OtherDerived& other) const {
351  return binaryExpr(other.derived(), internal::scalar_product_op<Scalar>());
352  }
353 
354  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
355  const TensorCwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived>
356  operator/(const OtherDerived& other) const {
357  return binaryExpr(other.derived(), internal::scalar_quotient_op<Scalar>());
358  }
359 
360  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
361  const TensorCwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived>
362  cwiseMax(const OtherDerived& other) const {
363  return binaryExpr(other.derived(), internal::scalar_max_op<Scalar>());
364  }
365 
366  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
367  const TensorCwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived>
368  cwiseMin(const OtherDerived& other) const {
369  return binaryExpr(other.derived(), internal::scalar_min_op<Scalar>());
370  }
371 
372  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
374  operator&&(const OtherDerived& other) const {
375  return binaryExpr(other.derived(), internal::scalar_boolean_and_op());
376  }
377 
378  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
380  operator||(const OtherDerived& other) const {
381  return binaryExpr(other.derived(), internal::scalar_boolean_or_op());
382  }
383 
384  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
386  operator^(const OtherDerived& other) const {
387  return binaryExpr(other.derived(), internal::scalar_boolean_xor_op());
388  }
389 
390  // Comparisons and tests.
391  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
393  operator<(const OtherDerived& other) const {
395  }
396  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
398  operator<=(const OtherDerived& other) const {
400  }
401  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
403  operator>(const OtherDerived& other) const {
405  }
406  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
408  operator>=(const OtherDerived& other) const {
410  }
411 
412  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
414  operator==(const OtherDerived& other) const {
416  }
417 
418  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
420  operator!=(const OtherDerived& other) const {
422  }
423 
424  // comparisons and tests for Scalars
425  EIGEN_DEVICE_FUNC
426  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LT>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
427  operator<(Scalar threshold) const {
428  return operator<(constant(threshold));
429  }
430  EIGEN_DEVICE_FUNC
431  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LE>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
432  operator<=(Scalar threshold) const {
433  return operator<=(constant(threshold));
434  }
435  EIGEN_DEVICE_FUNC
436  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GT>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
437  operator>(Scalar threshold) const {
438  return operator>(constant(threshold));
439  }
440  EIGEN_DEVICE_FUNC
441  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GE>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
442  operator>=(Scalar threshold) const {
443  return operator>=(constant(threshold));
444  }
445  EIGEN_DEVICE_FUNC
446  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_EQ>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
447  operator==(Scalar threshold) const {
448  return operator==(constant(threshold));
449  }
450  EIGEN_DEVICE_FUNC
451  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_NEQ>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
452  operator!=(Scalar threshold) const {
453  return operator!=(constant(threshold));
454  }
455 
456  // Checks
457  EIGEN_DEVICE_FUNC
459  (isnan)() const {
461  }
462  EIGEN_DEVICE_FUNC
464  (isinf)() const {
466  }
467  EIGEN_DEVICE_FUNC
469  (isfinite)() const {
471  }
472 
473  // Coefficient-wise ternary operators.
474  template<typename ThenDerived, typename ElseDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
476  select(const ThenDerived& thenTensor, const ElseDerived& elseTensor) const {
477  return TensorSelectOp<const Derived, const ThenDerived, const ElseDerived>(derived(), thenTensor.derived(), elseTensor.derived());
478  }
479 
480  // Contractions.
482 
483  template<typename OtherDerived, typename Dimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
485  contract(const OtherDerived& other, const Dimensions& dims) const {
487  }
488 
489  // Convolutions.
490  template<typename KernelDerived, typename Dimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
492  convolve(const KernelDerived& kernel, const Dimensions& dims) const {
494  }
495 
496  // Fourier transforms
497  template <int FFTDataType, int FFTDirection, typename FFT> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
499  fft(const FFT& fft) const {
501  }
502 
503  // Scan.
505  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
506  const TensorScanSumOp
507  cumsum(const Index& axis, bool exclusive = false) const {
508  return TensorScanSumOp(derived(), axis, exclusive);
509  }
510 
512  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
513  const TensorScanProdOp
514  cumprod(const Index& axis, bool exclusive = false) const {
515  return TensorScanProdOp(derived(), axis, exclusive);
516  }
517 
518  template <typename Reducer>
519  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
521  scan(const Index& axis, const Reducer& reducer, bool exclusive = false) const {
522  return TensorScanOp<Reducer, const Derived>(derived(), axis, exclusive, reducer);
523  }
524 
525  // Reductions.
526  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
527  const TensorReductionOp<internal::SumReducer<CoeffReturnType>, const Dims, const Derived>
528  sum(const Dims& dims) const {
529  return TensorReductionOp<internal::SumReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::SumReducer<CoeffReturnType>());
530  }
531 
532  const TensorReductionOp<internal::SumReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
533  sum() const {
534  DimensionList<Index, NumDimensions> in_dims;
535  return TensorReductionOp<internal::SumReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::SumReducer<CoeffReturnType>());
536  }
537 
538  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
539  const TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const Dims, const Derived>
540  mean(const Dims& dims) const {
541  return TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MeanReducer<CoeffReturnType>());
542  }
543 
544  const TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
545  mean() const {
546  DimensionList<Index, NumDimensions> in_dims;
547  return TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MeanReducer<CoeffReturnType>());
548  }
549 
550  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
551  const TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const Dims, const Derived>
552  prod(const Dims& dims) const {
553  return TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::ProdReducer<CoeffReturnType>());
554  }
555 
556  const TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
557  prod() const {
558  DimensionList<Index, NumDimensions> in_dims;
559  return TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::ProdReducer<CoeffReturnType>());
560  }
561 
562  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
563  const TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const Dims, const Derived>
564  maximum(const Dims& dims) const {
565  return TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MaxReducer<CoeffReturnType>());
566  }
567 
568  const TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
569  maximum() const {
570  DimensionList<Index, NumDimensions> in_dims;
571  return TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MaxReducer<CoeffReturnType>());
572  }
573 
574  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
575  const TensorReductionOp<internal::MinReducer<CoeffReturnType>, const Dims, const Derived>
576  minimum(const Dims& dims) const {
577  return TensorReductionOp<internal::MinReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MinReducer<CoeffReturnType>());
578  }
579 
580  const TensorReductionOp<internal::MinReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
581  minimum() const {
582  DimensionList<Index, NumDimensions> in_dims;
583  return TensorReductionOp<internal::MinReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MinReducer<CoeffReturnType>());
584  }
585 
586  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
588  all(const Dims& dims) const {
589  return cast<bool>().reduce(dims, internal::AndReducer());
590  }
591 
592  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
594  all() const {
595  DimensionList<Index, NumDimensions> in_dims;
596  return cast<bool>().reduce(in_dims, internal::AndReducer());
597  }
598 
599  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
601  any(const Dims& dims) const {
602  return cast<bool>().reduce(dims, internal::OrReducer());
603  }
604 
605  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
607  any() const {
608  DimensionList<Index, NumDimensions> in_dims;
609  return cast<bool>().reduce(in_dims, internal::OrReducer());
610  }
611 
612  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
613  const TensorTupleReducerOp<
615  const array<Index, NumDimensions>, const Derived>
616  argmax() const {
617  array<Index, NumDimensions> in_dims;
618  for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d;
619  return TensorTupleReducerOp<
620  internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
621  const array<Index, NumDimensions>,
622  const Derived>(derived(), internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >(), -1, in_dims);
623  }
624 
625  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
626  const TensorTupleReducerOp<
628  const array<Index, NumDimensions>, const Derived>
629  argmin() const {
630  array<Index, NumDimensions> in_dims;
631  for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d;
632  return TensorTupleReducerOp<
633  internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
634  const array<Index, NumDimensions>,
635  const Derived>(derived(), internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >(), -1, in_dims);
636  }
637 
638  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
639  const TensorTupleReducerOp<
640  internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
641  const array<Index, 1>, const Derived>
642  argmax(const int return_dim) const {
643  array<Index, 1> in_dims;
644  in_dims[0] = return_dim;
645  return TensorTupleReducerOp<
646  internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
647  const array<Index, 1>,
648  const Derived>(derived(), internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >(), return_dim, in_dims);
649  }
650 
651  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
652  const TensorTupleReducerOp<
653  internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
654  const array<Index, 1>, const Derived>
655  argmin(const int return_dim) const {
656  array<Index, 1> in_dims;
657  in_dims[0] = return_dim;
658  return TensorTupleReducerOp<
659  internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
660  const array<Index, 1>,
661  const Derived>(derived(), internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >(), return_dim, in_dims);
662  }
663 
664  template <typename Reducer, typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
666  reduce(const Dims& dims, const Reducer& reducer) const {
668  }
669 
670  template <typename Broadcast> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
672  broadcast(const Broadcast& broadcast) const {
674  }
675 
676  template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
678  concatenate(const OtherDerived& other, Axis axis) const {
680  }
681 
682  template <typename PatchDims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
684  extract_patches(const PatchDims& patch_dims) const {
686  }
687 
688  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
690  extract_image_patches(const Index patch_rows = 1, const Index patch_cols = 1,
691  const Index row_stride = 1, const Index col_stride = 1,
692  const Index in_row_stride = 1, const Index in_col_stride = 1,
693  const PaddingType padding_type = PADDING_SAME, const Scalar padding_value = Scalar(0)) const {
694  return TensorImagePatchOp<Dynamic, Dynamic, const Derived>(derived(), patch_rows, patch_cols, row_stride, col_stride,
695  in_row_stride, in_col_stride, 1, 1, padding_type, padding_value);
696  }
697 
698  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
700  extract_image_patches(const Index patch_rows, const Index patch_cols,
701  const Index row_stride, const Index col_stride,
702  const Index in_row_stride, const Index in_col_stride,
703  const Index row_inflate_stride, const Index col_inflate_stride,
704  const Index padding_top, const Index padding_bottom,
705  const Index padding_left,const Index padding_right,
706  const Scalar padding_value) const {
707  return TensorImagePatchOp<Dynamic, Dynamic, const Derived>(derived(), patch_rows, patch_cols, row_stride, col_stride,
708  in_row_stride, in_col_stride, row_inflate_stride, col_inflate_stride,
709  padding_top, padding_bottom, padding_left, padding_right, padding_value);
710  }
711 
712  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
714  extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols,
715  const Index plane_stride = 1, const Index row_stride = 1, const Index col_stride = 1,
716  const PaddingType padding_type = PADDING_SAME, const Scalar padding_value = Scalar(0)) const {
717  return TensorVolumePatchOp<Dynamic, Dynamic, Dynamic, const Derived>(derived(), patch_planes, patch_rows, patch_cols, plane_stride, row_stride, col_stride, 1, 1, 1, 1, 1, 1, padding_type, padding_value);
718  }
719 
720 
721  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
723  extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols,
724  const Index plane_stride, const Index row_stride, const Index col_stride,
725  const Index plane_inflate_stride, const Index row_inflate_stride, const Index col_inflate_stride,
726  const Index padding_top_z, const Index padding_bottom_z,
727  const Index padding_top, const Index padding_bottom,
728  const Index padding_left, const Index padding_right, const Scalar padding_value = Scalar(0)) const {
729  return TensorVolumePatchOp<Dynamic, Dynamic, Dynamic, const Derived>(derived(), patch_planes, patch_rows, patch_cols, plane_stride, row_stride, col_stride, 1, 1, 1, plane_inflate_stride, row_inflate_stride, col_inflate_stride, padding_top_z, padding_bottom_z, padding_top, padding_bottom, padding_left, padding_right, padding_value);
730  }
731 
732  // Morphing operators.
733  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
735  swap_layout() const {
737  }
738  template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
740  reshape(const NewDimensions& newDimensions) const {
742  }
743  template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
745  slice(const StartIndices& startIndices, const Sizes& sizes) const {
747  }
748  template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
750  stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) const {
751  return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
752  const Derived>(derived(), startIndices, stopIndices, strides);
753  }
754  template <Index DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
756  chip(const Index offset) const {
757  return TensorChippingOp<DimId, const Derived>(derived(), offset, DimId);
758  }
759  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
761  chip(const Index offset, const Index dim) const {
762  return TensorChippingOp<Dynamic, const Derived>(derived(), offset, dim);
763  }
764  template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
766  reverse(const ReverseDimensions& rev) const {
768  }
769  template <typename PaddingDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
771  pad(const PaddingDimensions& padding) const {
773  }
774  template <typename PaddingDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
776  pad(const PaddingDimensions& padding, const Scalar padding_value) const {
777  return TensorPaddingOp<const PaddingDimensions, const Derived>(derived(), padding, padding_value);
778  }
779  template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
781  shuffle(const Shuffle& shuffle) const {
783  }
784  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
786  stride(const Strides& strides) const {
788  }
789  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
791  inflate(const Strides& strides) const {
793  }
794 
795  // Returns a tensor containing index/value tuples
796  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
798  index_tuples() const {
800  }
801 
802  // Support for custom unary and binary operations
803  template <typename CustomUnaryFunc>
804  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
807  }
808  template <typename OtherDerived, typename CustomBinaryFunc>
809  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
810  const TensorCustomBinaryOp<const CustomBinaryFunc, const Derived, const OtherDerived> customOp(const OtherDerived& other, const CustomBinaryFunc& op) const {
812  }
813 
814  // Force the evaluation of the expression.
815  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
818  }
819 
820  protected:
821  template <typename Scalar, int NumIndices, int Options, typename IndexType> friend class Tensor;
822  template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize;
823  template <typename OtherDerived, int AccessLevel> friend class TensorBase;
824  EIGEN_DEVICE_FUNC
825  EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); }
826 };
827 
828 template<typename Derived, int AccessLevel = internal::accessors_level<Derived>::value>
829 class TensorBase : public TensorBase<Derived, ReadOnlyAccessors> {
830  public:
832  typedef typename DerivedTraits::Scalar Scalar;
833  typedef typename DerivedTraits::Index Index;
834  typedef Scalar CoeffReturnType;
835  static const int NumDimensions = DerivedTraits::NumDimensions;
836 
837  template <typename Scalar, int NumIndices, int Options, typename IndexType> friend class Tensor;
838  template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize;
839  template <typename OtherDerived, int OtherAccessLevel> friend class TensorBase;
840 
841  EIGEN_DEVICE_FUNC
843  return setConstant(Scalar(0));
844  }
845  EIGEN_DEVICE_FUNC
846  EIGEN_STRONG_INLINE Derived& setConstant(const Scalar& val) {
847  return derived() = this->constant(val);
848  }
849  EIGEN_DEVICE_FUNC
851  return derived() = this->random();
852  }
853  template <typename RandomGenerator> EIGEN_DEVICE_FUNC
855  return derived() = this->template random<RandomGenerator>();
856  }
857 
858 #if EIGEN_HAS_VARIADIC_TEMPLATES
859  EIGEN_DEVICE_FUNC
860  EIGEN_STRONG_INLINE Derived& setValues(
861  const typename internal::Initializer<Derived, NumDimensions>::InitList& vals) {
863  internal::initialize_tensor<Derived, NumDimensions>(eval, vals);
864  return derived();
865  }
866 #endif // EIGEN_HAS_VARIADIC_TEMPLATES
867 
868  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
869  Derived& operator+=(const OtherDerived& other) {
870  return derived() = derived() + other.derived();
871  }
872  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
873  Derived& operator-=(const OtherDerived& other) {
874  return derived() = derived() - other.derived();
875  }
876  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
877  Derived& operator*=(const OtherDerived& other) {
878  return derived() = derived() * other.derived();
879  }
880  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
881  Derived& operator/=(const OtherDerived& other) {
882  return derived() = derived() / other.derived();
883  }
884 
885  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
887  swap_layout() const {
889  }
890  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
894  }
895 
896  template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
898  concatenate(const OtherDerived& other, const Axis& axis) const {
900  }
901  template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
903  concatenate(const OtherDerived& other, const Axis& axis) {
905  }
906 
907  template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
909  reshape(const NewDimensions& newDimensions) const {
911  }
912  template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
914  reshape(const NewDimensions& newDimensions) {
916  }
917 
918  template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
920  slice(const StartIndices& startIndices, const Sizes& sizes) const {
922  }
923  template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
925  slice(const StartIndices& startIndices, const Sizes& sizes) {
927  }
928 
929  template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
931  stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) const {
932  return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
933  const Derived>(derived(), startIndices, stopIndices, strides);
934  }
935  template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
937  stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) {
938  return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
939  Derived>(derived(), startIndices, stopIndices, strides);
940  }
941 
942  template <DenseIndex DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
944  chip(const Index offset) const {
945  return TensorChippingOp<DimId, const Derived>(derived(), offset, DimId);
946  }
947  template <Index DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
949  chip(const Index offset) {
950  return TensorChippingOp<DimId, Derived>(derived(), offset, DimId);
951  }
952 
953  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
955  chip(const Index offset, const Index dim) const {
956  return TensorChippingOp<Dynamic, const Derived>(derived(), offset, dim);
957  }
958  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
960  chip(const Index offset, const Index dim) {
961  return TensorChippingOp<Dynamic, Derived>(derived(), offset, dim);
962  }
963 
964  template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
966  reverse(const ReverseDimensions& rev) const {
968  }
969  template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
971  reverse(const ReverseDimensions& rev) {
973  }
974 
975  template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
977  shuffle(const Shuffle& shuffle) const {
979  }
980  template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
982  shuffle(const Shuffle& shuffle) {
984  }
985 
986  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
988  stride(const Strides& strides) const {
990  }
991  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
993  stride(const Strides& strides) {
995  }
996 
997  // Select the device on which to evaluate the expression.
998  template <typename DeviceType>
1001  }
1002 
1003  protected:
1004  EIGEN_DEVICE_FUNC
1005  EIGEN_STRONG_INLINE Derived& derived() { return *static_cast<Derived*>(this); }
1006  EIGEN_DEVICE_FUNC
1007  EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); }
1008 };
1009 #endif // EIGEN_PARSED_BY_DOXYGEN
1010 } // end namespace Eigen
1011 
1012 #endif // EIGEN_CXX11_TENSOR_TENSOR_BASE_H
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator-=(const OtherDerived &other)
Definition: TensorBase.h:873
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_rsqrt_op< Scalar >, const Derived > rsqrt() const
Definition: TensorBase.h:98
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_difference_op< Scalar >, const Derived, const OtherDerived > operator-(const OtherDerived &other) const
Definition: TensorBase.h:344
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp< internal::scalar_max_op< Scalar, Scalar >, const Derived, const OtherDerived > cwiseMax(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator*=(const OtherDerived &other)
Definition: TensorBase.h:877
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< DimId, const Derived > chip(const Index offset) const
Definition: TensorBase.h:756
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool() isfinite(const half &a)
Definition: Half.h:441
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_GT >, const Derived, const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > > operator>(Scalar threshold) const
Definition: TensorBase.h:437
Tensor custom class.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_imag_op< Scalar >, const Derived > imag() const
Definition: TensorBase.h:228
#define EIGEN_STRONG_INLINE
Definition: Macros.h:494
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorChippingOp< DimId, Derived > chip(const Index offset)
Definition: TensorBase.h:949
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorConcatenationOp< const Axis, Derived, OtherDerived > concatenate(const OtherDerived &other, const Axis &axis)
Definition: TensorBase.h:903
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_GE >, const Derived, const OtherDerived > operator>=(const OtherDerived &other) const
Definition: TensorBase.h:408
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_sum_op< Scalar >, const Derived, const OtherDerived > operator+(const OtherDerived &other) const
Definition: TensorBase.h:338
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorStridingSlicingOp< const StartIndices, const StopIndices, const Strides, const Derived > stridedSlice(const StartIndices &startIndices, const StopIndices &stopIndices, const Strides &strides) const
Definition: TensorBase.h:931
Tensor custom class.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_sign_op< Scalar >, const Derived > sign() const
Definition: TensorBase.h:92
Tensor generator class.
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator==(const Tuple< U, V > &x, const Tuple< U, V > &y)
Definition: TensorMeta.h:142
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_max_op< Scalar >, const Derived, const OtherDerived > cwiseMax(const OtherDerived &other) const
Definition: TensorBase.h:362
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorTupleReducerOp< internal::ArgMaxTupleReducer< Tuple< Index, CoeffReturnType > >, const array< Index, 1 >, const Derived > argmax(const int return_dim) const
Definition: TensorBase.h:642
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorVolumePatchOp< Dynamic, Dynamic, Dynamic, const Derived > extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols, const Index plane_stride, const Index row_stride, const Index col_stride, const Index plane_inflate_stride, const Index row_inflate_stride, const Index col_inflate_stride, const Index padding_top_z, const Index padding_bottom_z, const Index padding_top, const Index padding_bottom, const Index padding_left, const Index padding_right, const Scalar padding_value=Scalar(0)) const
Definition: TensorBase.h:723
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorShufflingOp< const Shuffle, const Derived > shuffle(const Shuffle &shuffle) const
Definition: TensorBase.h:781
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< CustomNullaryOp, const Derived > nullaryExpr(const CustomNullaryOp &func) const
Definition: TensorBase.h:41
const TensorReductionOp< internal::SumReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > sum() const
Definition: TensorBase.h:533
const TensorReductionOp< internal::ProdReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > prod() const
Definition: TensorBase.h:557
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator/=(const OtherDerived &other)
Definition: TensorBase.h:881
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< CustomUnaryOp, const Derived > unaryExpr(const CustomUnaryOp &func) const
Definition: TensorBase.h:73
const TensorReductionOp< internal::MeanReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > mean() const
Definition: TensorBase.h:545
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Derived & derived() const
Definition: TensorBase.h:1007
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConcatenationOp< const Axis, const Derived, const OtherDerived > concatenate(const OtherDerived &other, const Axis &axis) const
Definition: TensorBase.h:898
Tensor reshaping class.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorScanSumOp cumsum(const Index &axis, bool exclusive=false) const
Definition: TensorBase.h:507
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_sqrt_op< Scalar >, const Derived > sqrt() const
Definition: TensorBase.h:86
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setRandom()
Definition: TensorBase.h:850
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_boolean_or_op, const Derived, const OtherDerived > operator||(const OtherDerived &other) const
Definition: TensorBase.h:380
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setRandom()
Definition: TensorBase.h:854
Definition: common.h:73
Scalar CoeffReturnType
Definition: TensorBase.h:834
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorBroadcastingOp< const Broadcast, const Derived > broadcast(const Broadcast &broadcast) const
Definition: TensorBase.h:672
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_real_op< Scalar >, const Derived > real() const
Definition: TensorBase.h:222
A cost model used to limit the number of threads used for evaluating tensor expression.
TensorDevice< Derived, DeviceType > device(const DeviceType &device)
Definition: TensorBase.h:999
Pseudo expression providing an operator = that will evaluate its argument on the specified computing ...
Definition: TensorDevice.h:27
const TensorReductionOp< internal::MinReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > minimum() const
Definition: TensorBase.h:581
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< DimId, const Derived > chip(const Index offset) const
Definition: TensorBase.h:944
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool operator>(const half &a, const half &b)
Definition: Half.h:313
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
Definition: NumTraits.h:150
EIGEN_STRONG_INLINE const CwiseBinaryOp< internal::scalar_sum_op< typename DenseDerived::Scalar, typename SparseDerived::Scalar >, const DenseDerived, const SparseDerived > operator+(const MatrixBase< DenseDerived > &a, const SparseMatrixBase< SparseDerived > &b)
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition: StaticAssert.h:124
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorStridingOp< const Strides, const Derived > stride(const Strides &strides) const
Definition: TensorBase.h:786
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_round_op< Scalar >, const Derived > round() const
Definition: TensorBase.h:312
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::SumReducer< CoeffReturnType >, const Dims, const Derived > sum(const Dims &dims) const
Definition: TensorBase.h:528
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorIndexTupleOp< const Derived > index_tuples() const
Definition: TensorBase.h:798
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< internal::UniformRandomGenerator< Scalar >, const Derived > random() const
Definition: TensorBase.h:54
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool operator>=(const half &a, const half &b)
Definition: Half.h:316
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool() isinf(const half &a)
Definition: Half.h:431
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< Reducer, const Dims, const Derived > reduce(const Dims &dims, const Reducer &reducer) const
Definition: TensorBase.h:666
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_abs_op< Scalar >, const Derived > abs() const
Definition: TensorBase.h:204
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp< CustomBinaryOp, const Derived, const OtherDerived > binaryExpr(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::bind2nd_op< internal::scalar_pow_op< Scalar, Scalar > >, const Derived > pow(Scalar exponent) const
Definition: TensorBase.h:216
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorScanOp< Reducer, const Derived > scan(const Index &axis, const Reducer &reducer, bool exclusive=false) const
Definition: TensorBase.h:521
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< Dynamic, const Derived > chip(const Index offset, const Index dim) const
Definition: TensorBase.h:955
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorGeneratorOp< Generator, const Derived > generate(const Generator &generator) const
Definition: TensorBase.h:66
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & derived()
Definition: TensorBase.h:1005
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorPaddingOp< const PaddingDimensions, const Derived > pad(const PaddingDimensions &padding) const
Definition: TensorBase.h:771
internal::traits< Derived > DerivedTraits
Definition: TensorBase.h:32
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::ProdReducer< CoeffReturnType >, const Dims, const Derived > prod(const Dims &dims) const
Definition: TensorBase.h:552
const TensorReductionOp< internal::MaxReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > maximum() const
Definition: TensorBase.h:569
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorLayoutSwapOp< const Derived > swap_layout() const
Definition: TensorBase.h:887
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_inverse_op< Scalar >, const Derived > inverse() const
Definition: TensorBase.h:116
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorReshapingOp< const NewDimensions, Derived > reshape(const NewDimensions &newDimensions)
Definition: TensorBase.h:914
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_igamma_op< Scalar >, const Derived, const OtherDerived > igamma(const OtherDerived &other) const
Definition: TensorBase.h:141
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorChippingOp< Dynamic, Derived > chip(const Index offset, const Index dim)
Definition: TensorBase.h:960
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReshapingOp< const NewDimensions, const Derived > reshape(const NewDimensions &newDimensions) const
Definition: TensorBase.h:740
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReverseOp< const ReverseDimensions, const Derived > reverse(const ReverseDimensions &rev) const
Definition: TensorBase.h:766
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Derived & derived() const
Definition: TensorBase.h:825
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorContractionOp< const Dimensions, const Derived, const OtherDerived > contract(const OtherDerived &other, const Dimensions &dims) const
Definition: TensorBase.h:485
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_square_op< Scalar >, const Derived > square() const
Definition: TensorBase.h:104
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorStridingSlicingOp< const StartIndices, const StopIndices, const Strides, Derived > stridedSlice(const StartIndices &startIndices, const StopIndices &stopIndices, const Strides &strides)
Definition: TensorBase.h:937
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_floor_op< Scalar >, const Derived > floor() const
Definition: TensorBase.h:324
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReshapingOp< const NewDimensions, const Derived > reshape(const NewDimensions &newDimensions) const
Definition: TensorBase.h:909
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorPaddingOp< const PaddingDimensions, const Derived > pad(const PaddingDimensions &padding, const Scalar padding_value) const
Definition: TensorBase.h:776
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCustomUnaryOp< const CustomUnaryFunc, const Derived > customOp(const CustomUnaryFunc &op) const
Definition: TensorBase.h:805
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorTupleReducerOp< internal::ArgMinTupleReducer< Tuple< Index, CoeffReturnType > >, const array< Index, NumDimensions >, const Derived > argmin() const
Definition: TensorBase.h:629
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCustomBinaryOp< const CustomBinaryFunc, const Derived, const OtherDerived > customOp(const OtherDerived &other, const CustomBinaryFunc &op) const
Definition: TensorBase.h:810
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_quotient_op< Scalar >, const Derived, const OtherDerived > operator/(const OtherDerived &other) const
Definition: TensorBase.h:356
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorShufflingOp< const Shuffle, const Derived > shuffle(const Shuffle &shuffle) const
Definition: TensorBase.h:977
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorPatchOp< const PatchDims, const Derived > extract_patches(const PatchDims &patch_dims) const
Definition: TensorBase.h:684
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setConstant(const Scalar &val)
Definition: TensorBase.h:846
DerivedTraits::Scalar Scalar
Definition: TensorBase.h:832
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConcatenationOp< Axis, const Derived, const OtherDerived > concatenate(const OtherDerived &other, Axis axis) const
Definition: TensorBase.h:678
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorFFTOp< const FFT, const Derived, FFTDataType, FFTDirection > fft(const FFT &fft) const
Definition: TensorBase.h:499
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorSlicingOp< const StartIndices, const Sizes, Derived > slice(const StartIndices &startIndices, const Sizes &sizes)
Definition: TensorBase.h:925
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC half operator/(const half &a, const half &b)
Definition: Half.h:277
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_EQ >, const Derived, const OtherDerived > operator==(const OtherDerived &other) const
Definition: TensorBase.h:414
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:33
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_log_op< Scalar >, const Derived > log() const
Definition: TensorBase.h:192
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorStridingSlicingOp< const StartIndices, const StopIndices, const Strides, const Derived > stridedSlice(const StartIndices &startIndices, const StopIndices &stopIndices, const Strides &strides) const
Definition: TensorBase.h:750
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorLayoutSwapOp< const Derived > swap_layout() const
Definition: TensorBase.h:735
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_product_op< Scalar >, const Derived, const OtherDerived > operator*(const OtherDerived &other) const
Definition: TensorBase.h:350
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::MeanReducer< CoeffReturnType >, const Dims, const Derived > mean(const Dims &dims) const
Definition: TensorBase.h:540
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::OrReducer, const DimensionList< Index, NumDimensions >, const TensorConversionOp< bool, const Derived > > any() const
Definition: TensorBase.h:607
Tensor conversion class. This class makes it possible to vectorize type casting operations when the n...
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_conjugate_op< Scalar >, const Derived > conjugate() const
Definition: TensorBase.h:210
EIGEN_STRONG_INLINE const CwiseBinaryOp< internal::scalar_difference_op< typename DenseDerived::Scalar, typename SparseDerived::Scalar >, const DenseDerived, const SparseDerived > operator-(const MatrixBase< DenseDerived > &a, const SparseMatrixBase< SparseDerived > &b)
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool operator<=(const half &a, const half &b)
Definition: Half.h:310
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > constant(const Scalar &value) const
Definition: TensorBase.h:48
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_boolean_xor_op, const Derived, const OtherDerived > operator^(const OtherDerived &other) const
Definition: TensorBase.h:386
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorSelectOp< const Derived, const ThenDerived, const ElseDerived > select(const ThenDerived &thenTensor, const ElseDerived &elseTensor) const
Definition: TensorBase.h:476
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorTupleReducerOp< internal::ArgMaxTupleReducer< Tuple< Index, CoeffReturnType > >, const array< Index, NumDimensions >, const Derived > argmax() const
Definition: TensorBase.h:616
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool operator<(const half &a, const half &b)
Definition: Half.h:307
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorLayoutSwapOp< Derived > swap_layout()
Definition: TensorBase.h:892
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorShufflingOp< const Shuffle, Derived > shuffle(const Shuffle &shuffle)
Definition: TensorBase.h:982
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorSlicingOp< const StartIndices, const Sizes, const Derived > slice(const StartIndices &startIndices, const Sizes &sizes) const
Definition: TensorBase.h:920
SCALAR Scalar
Definition: common.h:84
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_erf_op< Scalar >, const Derived > erf() const
Definition: TensorBase.h:168
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_polygamma_op< Scalar >, const Derived, const OtherDerived > polygamma(const OtherDerived &other) const
Definition: TensorBase.h:162
EIGEN_DEVICE_FUNC const Product< MatrixDerived, PermutationDerived, AliasFreeProduct > operator*(const MatrixBase< MatrixDerived > &matrix, const PermutationBase< PermutationDerived > &permutation)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::AndReducer, const DimensionList< Index, NumDimensions >, const TensorConversionOp< bool, const Derived > > all() const
Definition: TensorBase.h:594
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorTupleReducerOp< internal::ArgMinTupleReducer< Tuple< Index, CoeffReturnType > >, const array< Index, 1 >, const Derived > argmin(const int return_dim) const
Definition: TensorBase.h:655
EIGEN_DEVICE_FUNC const CwiseBinaryOp< internal::scalar_boolean_and_op, const Derived, const OtherDerived > operator &&(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorStridingOp< const Strides, const Derived > stride(const Strides &strides) const
Definition: TensorBase.h:988
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator+=(const OtherDerived &other)
Definition: TensorBase.h:869
The fixed sized version of the tensor class.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorImagePatchOp< Dynamic, Dynamic, const Derived > extract_image_patches(const Index patch_rows=1, const Index patch_cols=1, const Index row_stride=1, const Index col_stride=1, const Index in_row_stride=1, const Index in_col_stride=1, const PaddingType padding_type=PADDING_SAME, const Scalar padding_value=Scalar(0)) const
Definition: TensorBase.h:690
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::OrReducer, const Dims, const TensorConversionOp< bool, const Derived > > any(const Dims &dims) const
Definition: TensorBase.h:601
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_GE >, const Derived, const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > > operator>=(Scalar threshold) const
Definition: TensorBase.h:442
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_cube_op< Scalar >, const Derived > cube() const
Definition: TensorBase.h:110
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConvolutionOp< const Dimensions, const Derived, const KernelDerived > convolve(const KernelDerived &kernel, const Dimensions &dims) const
Definition: TensorBase.h:492
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::AndReducer, const Dims, const TensorConversionOp< bool, const Derived > > all(const Dims &dims) const
Definition: TensorBase.h:588
TensorScanOp< internal::ProdReducer< CoeffReturnType >, const Derived > TensorScanProdOp
Definition: TensorBase.h:511
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< RandomGenerator, const Derived > random(const RandomGenerator &gen=RandomGenerator()) const
Definition: TensorBase.h:59
The tensor base class.
Definition: TensorBase.h:829
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_log1p_op< Scalar >, const Derived > log1p() const
Definition: TensorBase.h:198
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorForcedEvalOp< const Derived > eval() const
Definition: TensorBase.h:816
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_EQ >, const Derived, const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > > operator==(Scalar threshold) const
Definition: TensorBase.h:447
internal::remove_const< Scalar >::type CoeffReturnType
Definition: TensorBase.h:35
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_min_op< Scalar >, const Derived, const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > > cwiseMin(Scalar threshold) const
Definition: TensorBase.h:300
TensorScanOp< internal::SumReducer< CoeffReturnType >, const Derived > TensorScanSumOp
Definition: TensorBase.h:504
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorInflationOp< const Strides, const Derived > inflate(const Strides &strides) const
Definition: TensorBase.h:791
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorScanProdOp cumprod(const Index &axis, bool exclusive=false) const
Definition: TensorBase.h:514
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_digamma_op< Scalar >, const Derived > digamma() const
Definition: TensorBase.h:134
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_opposite_op< Scalar >, const Derived > operator-() const
Definition: TensorBase.h:80
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_min_op< Scalar >, const Derived, const OtherDerived > cwiseMin(const OtherDerived &other) const
Definition: TensorBase.h:368
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_zeta_op< Scalar >, const Derived, const OtherDerived > zeta(const OtherDerived &other) const
Definition: TensorBase.h:155
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_ceil_op< Scalar >, const Derived > ceil() const
Definition: TensorBase.h:318
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_erfc_op< Scalar >, const Derived > erfc() const
Definition: TensorBase.h:174
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_exp_op< Scalar >, const Derived > exp() const
Definition: TensorBase.h:186
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_max_op< Scalar >, const Derived, const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > > cwiseMax(Scalar threshold) const
Definition: TensorBase.h:294
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorVolumePatchOp< Dynamic, Dynamic, Dynamic, const Derived > extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols, const Index plane_stride=1, const Index row_stride=1, const Index col_stride=1, const PaddingType padding_type=PADDING_SAME, const Scalar padding_value=Scalar(0)) const
Definition: TensorBase.h:714
EIGEN_DEVICE_FUNC const CwiseUnaryOp< CustomUnaryOp, const Derived > unaryExpr(const CustomUnaryOp &func=CustomUnaryOp()) const
Apply a unary operator coefficient-wise.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorSlicingOp< const StartIndices, const Sizes, const Derived > slice(const StartIndices &startIndices, const Sizes &sizes) const
Definition: TensorBase.h:745
DerivedTraits::Index Index
Definition: TensorBase.h:833
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReverseOp< const ReverseDimensions, const Derived > reverse(const ReverseDimensions &rev) const
Definition: TensorBase.h:966
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_GT >, const Derived, const OtherDerived > operator>(const OtherDerived &other) const
Definition: TensorBase.h:403
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConversionOp< NewType, const Derived > cast() const
Definition: TensorBase.h:306
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_NEQ >, const Derived, const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > > operator!=(Scalar threshold) const
Definition: TensorBase.h:452
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool() isnan(const half &a)
Definition: Half.h:434
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorStridingOp< const Strides, Derived > stride(const Strides &strides)
Definition: TensorBase.h:993
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_igammac_op< Scalar >, const Derived, const OtherDerived > igammac(const OtherDerived &other) const
Definition: TensorBase.h:148
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_lgamma_op< Scalar >, const Derived > lgamma() const
Definition: TensorBase.h:128
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator!=(const Tuple< U, V > &x, const Tuple< U, V > &y)
Definition: TensorMeta.h:148
Tensor concatenation class.
internal::traits< Derived > DerivedTraits
Definition: TensorBase.h:831
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorReverseOp< const ReverseDimensions, Derived > reverse(const ReverseDimensions &rev)
Definition: TensorBase.h:971
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_sigmoid_op< Scalar >, const Derived > sigmoid() const
Definition: TensorBase.h:180
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_tanh_op< Scalar >, const Derived > tanh() const
Definition: TensorBase.h:122
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp< internal::scalar_min_op< Scalar, Scalar >, const Derived, const OtherDerived > cwiseMin(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
static const int NumDimensions
Definition: TensorBase.h:835
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< CustomBinaryOp, const Derived, const OtherDerived > binaryExpr(const OtherDerived &other, const CustomBinaryOp &func) const
Definition: TensorBase.h:331
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setZero()
Definition: TensorBase.h:842
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::MaxReducer< CoeffReturnType >, const Dims, const Derived > maximum(const Dims &dims) const
Definition: TensorBase.h:564
The tensor class.
Definition: Tensor.h:63
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorImagePatchOp< Dynamic, Dynamic, const Derived > extract_image_patches(const Index patch_rows, const Index patch_cols, const Index row_stride, const Index col_stride, const Index in_row_stride, const Index in_col_stride, const Index row_inflate_stride, const Index col_inflate_stride, const Index padding_top, const Index padding_bottom, const Index padding_left, const Index padding_right, const Scalar padding_value) const
Definition: TensorBase.h:700
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_cmp_op< Scalar, Scalar, internal::cmp_NEQ >, const Derived, const OtherDerived > operator!=(const OtherDerived &other) const
Definition: TensorBase.h:420
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::MinReducer< CoeffReturnType >, const Dims, const Derived > minimum(const Dims &dims) const
Definition: TensorBase.h:576
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< Dynamic, const Derived > chip(const Index offset, const Index dim) const
Definition: TensorBase.h:761


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Mon Feb 28 2022 22:07:34