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 
26 template<typename Derived>
28 {
29  public:
31  typedef typename DerivedTraits::Scalar Scalar;
32  typedef typename DerivedTraits::Index Index;
34  static const int NumDimensions = DerivedTraits::NumDimensions;
35 
36  // Generic nullary operation support.
37  template <typename CustomNullaryOp> EIGEN_DEVICE_FUNC
39  nullaryExpr(const CustomNullaryOp& func) const {
41  }
42 
43  // Coefficient-wise nullary operators
44  EIGEN_DEVICE_FUNC
46  constant(const Scalar& value) const {
47  return nullaryExpr(internal::scalar_constant_op<Scalar>(value));
48  }
49 
50  EIGEN_DEVICE_FUNC
52  random() const {
53  return nullaryExpr(internal::UniformRandomGenerator<Scalar>());
54  }
55  template <typename RandomGenerator> EIGEN_DEVICE_FUNC
57  random(const RandomGenerator& gen = RandomGenerator()) const {
58  return nullaryExpr(gen);
59  }
60 
61  // Tensor generation
62  template <typename Generator> EIGEN_DEVICE_FUNC
64  generate(const Generator& generator) const {
66  }
67 
68  // Generic unary operation support.
69  template <typename CustomUnaryOp> EIGEN_DEVICE_FUNC
71  unaryExpr(const CustomUnaryOp& func) const {
73  }
74 
75  // Coefficient-wise unary operators
76  EIGEN_DEVICE_FUNC
78  operator-() const {
80  }
81 
82  EIGEN_DEVICE_FUNC
84  sqrt() const {
86  }
87 
88  EIGEN_DEVICE_FUNC
90  sign() const {
92  }
93 
94  EIGEN_DEVICE_FUNC
96  rsqrt() const {
98  }
99 
100  EIGEN_DEVICE_FUNC
102  square() const {
104  }
105 
106  EIGEN_DEVICE_FUNC
108  cube() const {
110  }
111 
112  EIGEN_DEVICE_FUNC
114  inverse() const {
116  }
117 
118  EIGEN_DEVICE_FUNC
120  tanh() const {
122  }
123 
124  EIGEN_DEVICE_FUNC
126  lgamma() const {
128  }
129 
130  EIGEN_DEVICE_FUNC
132  digamma() const {
134  }
135 
136  // igamma(a = this, x = other)
137  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
138  const TensorCwiseBinaryOp<internal::scalar_igamma_op<Scalar>, const Derived, const OtherDerived>
139  igamma(const OtherDerived& other) const {
140  return binaryExpr(other.derived(), internal::scalar_igamma_op<Scalar>());
141  }
142 
143  // igammac(a = this, x = other)
144  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
145  const TensorCwiseBinaryOp<internal::scalar_igammac_op<Scalar>, const Derived, const OtherDerived>
146  igammac(const OtherDerived& other) const {
147  return binaryExpr(other.derived(), internal::scalar_igammac_op<Scalar>());
148  }
149 
150  // zeta(x = this, q = other)
151  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
152  const TensorCwiseBinaryOp<internal::scalar_zeta_op<Scalar>, const Derived, const OtherDerived>
153  zeta(const OtherDerived& other) const {
154  return binaryExpr(other.derived(), internal::scalar_zeta_op<Scalar>());
155  }
156 
157  // polygamma(n = this, x = other)
158  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
159  const TensorCwiseBinaryOp<internal::scalar_polygamma_op<Scalar>, const Derived, const OtherDerived>
160  polygamma(const OtherDerived& other) const {
161  return binaryExpr(other.derived(), internal::scalar_polygamma_op<Scalar>());
162  }
163 
164  EIGEN_DEVICE_FUNC
166  erf() const {
168  }
169 
170  EIGEN_DEVICE_FUNC
172  erfc() const {
174  }
175 
176  EIGEN_DEVICE_FUNC
178  sigmoid() const {
180  }
181 
182  EIGEN_DEVICE_FUNC
184  exp() const {
186  }
187 
188  EIGEN_DEVICE_FUNC
190  log() const {
192  }
193 
194  EIGEN_DEVICE_FUNC
196  log1p() const {
198  }
199 
200  EIGEN_DEVICE_FUNC
202  abs() const {
204  }
205 
206  EIGEN_DEVICE_FUNC
208  conjugate() const {
210  }
211 
212  EIGEN_DEVICE_FUNC
214  pow(Scalar exponent) const {
216  }
217 
218  EIGEN_DEVICE_FUNC
220  real() const {
222  }
223 
224  EIGEN_DEVICE_FUNC
226  imag() const {
228  }
229 
230  EIGEN_DEVICE_FUNC
232  operator+ (Scalar rhs) const {
234  }
235 
236  EIGEN_DEVICE_FUNC
237  EIGEN_STRONG_INLINE friend
239  operator+ (Scalar lhs, const Derived& rhs) {
240  return rhs.unaryExpr(internal::bind1st_op<internal::scalar_sum_op<Scalar> >(lhs));
241  }
242 
243  EIGEN_DEVICE_FUNC
245  operator- (Scalar rhs) const {
246  EIGEN_STATIC_ASSERT((NumTraits<Scalar>::IsSigned || internal::is_same<Scalar, const std::complex<float> >::value), YOU_MADE_A_PROGRAMMING_MISTAKE);
248  }
249 
250  EIGEN_DEVICE_FUNC
251  EIGEN_STRONG_INLINE friend
253  operator- (Scalar lhs, const Derived& rhs) {
255  }
256 
257  EIGEN_DEVICE_FUNC
259  operator* (Scalar rhs) const {
261  }
262 
263  EIGEN_DEVICE_FUNC
264  EIGEN_STRONG_INLINE friend
266  operator* (Scalar lhs, const Derived& rhs) {
267  return rhs.unaryExpr(internal::bind1st_op<internal::scalar_product_op<Scalar> >(lhs));
268  }
269 
270  EIGEN_DEVICE_FUNC
272  operator/ (Scalar rhs) const {
274  }
275 
276  EIGEN_DEVICE_FUNC
277  EIGEN_STRONG_INLINE friend
279  operator/ (Scalar lhs, const Derived& rhs) {
280  return rhs.unaryExpr(internal::bind1st_op<internal::scalar_quotient_op<Scalar> >(lhs));
281  }
282 
283  EIGEN_DEVICE_FUNC
285  operator% (Scalar rhs) const {
286  EIGEN_STATIC_ASSERT(NumTraits<Scalar>::IsInteger, YOU_MADE_A_PROGRAMMING_MISTAKE_TRY_MOD);
288  }
289 
290  EIGEN_DEVICE_FUNC
291  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
292  cwiseMax(Scalar threshold) const {
293  return cwiseMax(constant(threshold));
294  }
295 
296  EIGEN_DEVICE_FUNC
297  EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
298  cwiseMin(Scalar threshold) const {
299  return cwiseMin(constant(threshold));
300  }
301 
302  template <typename NewType> EIGEN_DEVICE_FUNC
304  cast() const {
306  }
307 
308  EIGEN_DEVICE_FUNC
310  round() const {
312  }
313 
314  EIGEN_DEVICE_FUNC
316  ceil() const {
318  }
319 
320  EIGEN_DEVICE_FUNC
322  floor() const {
324  }
325 
326  // Generic binary operation support.
327  template <typename CustomBinaryOp, typename OtherDerived> EIGEN_DEVICE_FUNC
329  binaryExpr(const OtherDerived& other, const CustomBinaryOp& func) const {
331  }
332 
333  // Coefficient-wise binary operators.
334  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
335  const TensorCwiseBinaryOp<internal::scalar_sum_op<Scalar>, const Derived, const OtherDerived>
336  operator+(const OtherDerived& other) const {
337  return binaryExpr(other.derived(), internal::scalar_sum_op<Scalar>());
338  }
339 
340  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
341  const TensorCwiseBinaryOp<internal::scalar_difference_op<Scalar>, const Derived, const OtherDerived>
342  operator-(const OtherDerived& other) const {
343  return binaryExpr(other.derived(), internal::scalar_difference_op<Scalar>());
344  }
345 
346  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
347  const TensorCwiseBinaryOp<internal::scalar_product_op<Scalar>, const Derived, const OtherDerived>
348  operator*(const OtherDerived& other) const {
349  return binaryExpr(other.derived(), internal::scalar_product_op<Scalar>());
350  }
351 
352  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
353  const TensorCwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived>
354  operator/(const OtherDerived& other) const {
355  return binaryExpr(other.derived(), internal::scalar_quotient_op<Scalar>());
356  }
357 
358  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
359  const TensorCwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived>
360  cwiseMax(const OtherDerived& other) const {
361  return binaryExpr(other.derived(), internal::scalar_max_op<Scalar>());
362  }
363 
364  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
365  const TensorCwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived>
366  cwiseMin(const OtherDerived& other) const {
367  return binaryExpr(other.derived(), internal::scalar_min_op<Scalar>());
368  }
369 
370  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
372  operator&&(const OtherDerived& other) const {
373  return binaryExpr(other.derived(), internal::scalar_boolean_and_op());
374  }
375 
376  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
378  operator||(const OtherDerived& other) const {
379  return binaryExpr(other.derived(), internal::scalar_boolean_or_op());
380  }
381 
382  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
384  operator^(const OtherDerived& other) const {
385  return binaryExpr(other.derived(), internal::scalar_boolean_xor_op());
386  }
387 
388  // Comparisons and tests.
389  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
391  operator<(const OtherDerived& other) const {
393  }
394  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
396  operator<=(const OtherDerived& other) const {
398  }
399  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
401  operator>(const OtherDerived& other) const {
403  }
404  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
406  operator>=(const OtherDerived& other) const {
408  }
409 
410  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
412  operator==(const OtherDerived& other) const {
414  }
415 
416  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
418  operator!=(const OtherDerived& other) const {
420  }
421 
422  // comparisons and tests for Scalars
423  EIGEN_DEVICE_FUNC
424  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> >
425  operator<(Scalar threshold) const {
426  return operator<(constant(threshold));
427  }
428  EIGEN_DEVICE_FUNC
429  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> >
430  operator<=(Scalar threshold) const {
431  return operator<=(constant(threshold));
432  }
433  EIGEN_DEVICE_FUNC
434  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> >
435  operator>(Scalar threshold) const {
436  return operator>(constant(threshold));
437  }
438  EIGEN_DEVICE_FUNC
439  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> >
440  operator>=(Scalar threshold) const {
441  return operator>=(constant(threshold));
442  }
443  EIGEN_DEVICE_FUNC
444  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> >
445  operator==(Scalar threshold) const {
446  return operator==(constant(threshold));
447  }
448  EIGEN_DEVICE_FUNC
449  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> >
450  operator!=(Scalar threshold) const {
451  return operator!=(constant(threshold));
452  }
453 
454  // Checks
455  EIGEN_DEVICE_FUNC
457  (isnan)() const {
459  }
460  EIGEN_DEVICE_FUNC
462  (isinf)() const {
464  }
465  EIGEN_DEVICE_FUNC
467  (isfinite)() const {
469  }
470 
471  // Coefficient-wise ternary operators.
472  template<typename ThenDerived, typename ElseDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
474  select(const ThenDerived& thenTensor, const ElseDerived& elseTensor) const {
475  return TensorSelectOp<const Derived, const ThenDerived, const ElseDerived>(derived(), thenTensor.derived(), elseTensor.derived());
476  }
477 
478  // Contractions.
480 
481  template<typename OtherDerived, typename Dimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
483  contract(const OtherDerived& other, const Dimensions& dims) const {
485  }
486 
487  // Convolutions.
488  template<typename KernelDerived, typename Dimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
490  convolve(const KernelDerived& kernel, const Dimensions& dims) const {
492  }
493 
494  // Fourier transforms
495  template <int FFTDataType, int FFTDirection, typename FFT> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
497  fft(const FFT& fft) const {
499  }
500 
501  // Scan.
503  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
504  const TensorScanSumOp
505  cumsum(const Index& axis, bool exclusive = false) const {
506  return TensorScanSumOp(derived(), axis, exclusive);
507  }
508 
510  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
511  const TensorScanProdOp
512  cumprod(const Index& axis, bool exclusive = false) const {
513  return TensorScanProdOp(derived(), axis, exclusive);
514  }
515 
516  template <typename Reducer>
517  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
519  scan(const Index& axis, const Reducer& reducer, bool exclusive = false) const {
520  return TensorScanOp<Reducer, const Derived>(derived(), axis, exclusive, reducer);
521  }
522 
523  // Reductions.
524  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
525  const TensorReductionOp<internal::SumReducer<CoeffReturnType>, const Dims, const Derived>
526  sum(const Dims& dims) const {
527  return TensorReductionOp<internal::SumReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::SumReducer<CoeffReturnType>());
528  }
529 
530  const TensorReductionOp<internal::SumReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
531  sum() const {
532  DimensionList<Index, NumDimensions> in_dims;
533  return TensorReductionOp<internal::SumReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::SumReducer<CoeffReturnType>());
534  }
535 
536  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
537  const TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const Dims, const Derived>
538  mean(const Dims& dims) const {
539  return TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MeanReducer<CoeffReturnType>());
540  }
541 
542  const TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
543  mean() const {
544  DimensionList<Index, NumDimensions> in_dims;
545  return TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MeanReducer<CoeffReturnType>());
546  }
547 
548  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
549  const TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const Dims, const Derived>
550  prod(const Dims& dims) const {
551  return TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::ProdReducer<CoeffReturnType>());
552  }
553 
554  const TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
555  prod() const {
556  DimensionList<Index, NumDimensions> in_dims;
557  return TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::ProdReducer<CoeffReturnType>());
558  }
559 
560  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
561  const TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const Dims, const Derived>
562  maximum(const Dims& dims) const {
563  return TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MaxReducer<CoeffReturnType>());
564  }
565 
566  const TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
567  maximum() const {
568  DimensionList<Index, NumDimensions> in_dims;
569  return TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MaxReducer<CoeffReturnType>());
570  }
571 
572  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
573  const TensorReductionOp<internal::MinReducer<CoeffReturnType>, const Dims, const Derived>
574  minimum(const Dims& dims) const {
575  return TensorReductionOp<internal::MinReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MinReducer<CoeffReturnType>());
576  }
577 
578  const TensorReductionOp<internal::MinReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
579  minimum() const {
580  DimensionList<Index, NumDimensions> in_dims;
581  return TensorReductionOp<internal::MinReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MinReducer<CoeffReturnType>());
582  }
583 
584  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
586  all(const Dims& dims) const {
587  return cast<bool>().reduce(dims, internal::AndReducer());
588  }
589 
590  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
592  all() const {
593  DimensionList<Index, NumDimensions> in_dims;
594  return cast<bool>().reduce(in_dims, internal::AndReducer());
595  }
596 
597  template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
599  any(const Dims& dims) const {
600  return cast<bool>().reduce(dims, internal::OrReducer());
601  }
602 
603  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
605  any() const {
606  DimensionList<Index, NumDimensions> in_dims;
607  return cast<bool>().reduce(in_dims, internal::OrReducer());
608  }
609 
610  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
611  const TensorTupleReducerOp<
613  const array<Index, NumDimensions>, const Derived>
614  argmax() const {
615  array<Index, NumDimensions> in_dims;
616  for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d;
617  return TensorTupleReducerOp<
618  internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
619  const array<Index, NumDimensions>,
620  const Derived>(derived(), internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >(), -1, in_dims);
621  }
622 
623  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
624  const TensorTupleReducerOp<
626  const array<Index, NumDimensions>, const Derived>
627  argmin() const {
628  array<Index, NumDimensions> in_dims;
629  for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d;
630  return TensorTupleReducerOp<
631  internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
632  const array<Index, NumDimensions>,
633  const Derived>(derived(), internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >(), -1, in_dims);
634  }
635 
636  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
637  const TensorTupleReducerOp<
638  internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
639  const array<Index, 1>, const Derived>
640  argmax(const int return_dim) const {
641  array<Index, 1> in_dims;
642  in_dims[0] = return_dim;
643  return TensorTupleReducerOp<
644  internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
645  const array<Index, 1>,
646  const Derived>(derived(), internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >(), return_dim, in_dims);
647  }
648 
649  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
650  const TensorTupleReducerOp<
651  internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
652  const array<Index, 1>, const Derived>
653  argmin(const int return_dim) const {
654  array<Index, 1> in_dims;
655  in_dims[0] = return_dim;
656  return TensorTupleReducerOp<
657  internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
658  const array<Index, 1>,
659  const Derived>(derived(), internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >(), return_dim, in_dims);
660  }
661 
662  template <typename Reducer, typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
664  reduce(const Dims& dims, const Reducer& reducer) const {
666  }
667 
668  template <typename Broadcast> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
670  broadcast(const Broadcast& broadcast) const {
672  }
673 
674  template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
676  concatenate(const OtherDerived& other, Axis axis) const {
678  }
679 
680  template <typename PatchDims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
682  extract_patches(const PatchDims& patch_dims) const {
684  }
685 
686  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
688  extract_image_patches(const Index patch_rows = 1, const Index patch_cols = 1,
689  const Index row_stride = 1, const Index col_stride = 1,
690  const Index in_row_stride = 1, const Index in_col_stride = 1,
691  const PaddingType padding_type = PADDING_SAME, const Scalar padding_value = Scalar(0)) const {
692  return TensorImagePatchOp<Dynamic, Dynamic, const Derived>(derived(), patch_rows, patch_cols, row_stride, col_stride,
693  in_row_stride, in_col_stride, 1, 1, padding_type, padding_value);
694  }
695 
696  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
698  extract_image_patches(const Index patch_rows, const Index patch_cols,
699  const Index row_stride, const Index col_stride,
700  const Index in_row_stride, const Index in_col_stride,
701  const Index row_inflate_stride, const Index col_inflate_stride,
702  const Index padding_top, const Index padding_bottom,
703  const Index padding_left,const Index padding_right,
704  const Scalar padding_value) const {
705  return TensorImagePatchOp<Dynamic, Dynamic, const Derived>(derived(), patch_rows, patch_cols, row_stride, col_stride,
706  in_row_stride, in_col_stride, row_inflate_stride, col_inflate_stride,
707  padding_top, padding_bottom, padding_left, padding_right, padding_value);
708  }
709 
710  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
712  extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols,
713  const Index plane_stride = 1, const Index row_stride = 1, const Index col_stride = 1,
714  const PaddingType padding_type = PADDING_SAME, const Scalar padding_value = Scalar(0)) const {
715  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);
716  }
717 
718 
719  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
721  extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols,
722  const Index plane_stride, const Index row_stride, const Index col_stride,
723  const Index plane_inflate_stride, const Index row_inflate_stride, const Index col_inflate_stride,
724  const Index padding_top_z, const Index padding_bottom_z,
725  const Index padding_top, const Index padding_bottom,
726  const Index padding_left, const Index padding_right, const Scalar padding_value = Scalar(0)) const {
727  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);
728  }
729 
730  // Morphing operators.
731  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
733  swap_layout() const {
735  }
736  template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
738  reshape(const NewDimensions& newDimensions) const {
740  }
741  template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
743  slice(const StartIndices& startIndices, const Sizes& sizes) const {
745  }
746  template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
748  stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) const {
749  return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
750  const Derived>(derived(), startIndices, stopIndices, strides);
751  }
752  template <Index DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
754  chip(const Index offset) const {
755  return TensorChippingOp<DimId, const Derived>(derived(), offset, DimId);
756  }
757  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
759  chip(const Index offset, const Index dim) const {
761  }
762  template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
764  reverse(const ReverseDimensions& rev) const {
766  }
767  template <typename PaddingDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
769  pad(const PaddingDimensions& padding) const {
771  }
772  template <typename PaddingDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
774  pad(const PaddingDimensions& padding, const Scalar padding_value) const {
775  return TensorPaddingOp<const PaddingDimensions, const Derived>(derived(), padding, padding_value);
776  }
777  template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
779  shuffle(const Shuffle& shuffle) const {
781  }
782  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
784  stride(const Strides& strides) const {
786  }
787  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
789  inflate(const Strides& strides) const {
791  }
792 
793  // Returns a tensor containing index/value tuples
794  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
796  index_tuples() const {
798  }
799 
800  // Support for custom unary and binary operations
801  template <typename CustomUnaryFunc>
802  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
805  }
806  template <typename OtherDerived, typename CustomBinaryFunc>
807  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
808  const TensorCustomBinaryOp<const CustomBinaryFunc, const Derived, const OtherDerived> customOp(const OtherDerived& other, const CustomBinaryFunc& op) const {
810  }
811 
812  // Force the evaluation of the expression.
813  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
816  }
817 
818  protected:
819  template <typename Scalar, int NumIndices, int Options, typename IndexType> friend class Tensor;
820  template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize;
821  template <typename OtherDerived, int AccessLevel> friend class TensorBase;
822  EIGEN_DEVICE_FUNC
823  EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); }
824 };
825 
826 template<typename Derived, int AccessLevel = internal::accessors_level<Derived>::value>
827 class TensorBase : public TensorBase<Derived, ReadOnlyAccessors> {
828  public:
830  typedef typename DerivedTraits::Scalar Scalar;
831  typedef typename DerivedTraits::Index Index;
832  typedef Scalar CoeffReturnType;
833  static const int NumDimensions = DerivedTraits::NumDimensions;
834 
835  template <typename Scalar, int NumIndices, int Options, typename IndexType> friend class Tensor;
836  template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize;
837  template <typename OtherDerived, int OtherAccessLevel> friend class TensorBase;
838 
839  EIGEN_DEVICE_FUNC
841  return setConstant(Scalar(0));
842  }
843  EIGEN_DEVICE_FUNC
844  EIGEN_STRONG_INLINE Derived& setConstant(const Scalar& val) {
845  return derived() = this->constant(val);
846  }
847  EIGEN_DEVICE_FUNC
849  return derived() = this->random();
850  }
851  template <typename RandomGenerator> EIGEN_DEVICE_FUNC
853  return derived() = this->template random<RandomGenerator>();
854  }
855 
856 #if EIGEN_HAS_VARIADIC_TEMPLATES
857  EIGEN_DEVICE_FUNC
858  EIGEN_STRONG_INLINE Derived& setValues(
859  const typename internal::Initializer<Derived, NumDimensions>::InitList& vals) {
861  internal::initialize_tensor<Derived, NumDimensions>(eval, vals);
862  return derived();
863  }
864 #endif // EIGEN_HAS_VARIADIC_TEMPLATES
865 
866  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
867  Derived& operator+=(const OtherDerived& other) {
868  return derived() = derived() + other.derived();
869  }
870  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
871  Derived& operator-=(const OtherDerived& other) {
872  return derived() = derived() - other.derived();
873  }
874  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
875  Derived& operator*=(const OtherDerived& other) {
876  return derived() = derived() * other.derived();
877  }
878  template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
879  Derived& operator/=(const OtherDerived& other) {
880  return derived() = derived() / other.derived();
881  }
882 
883  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
885  swap_layout() const {
887  }
888  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
892  }
893 
894  template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
896  concatenate(const OtherDerived& other, const Axis& axis) const {
898  }
899  template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
901  concatenate(const OtherDerived& other, const Axis& axis) {
903  }
904 
905  template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
907  reshape(const NewDimensions& newDimensions) const {
909  }
910  template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
912  reshape(const NewDimensions& newDimensions) {
914  }
915 
916  template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
918  slice(const StartIndices& startIndices, const Sizes& sizes) const {
920  }
921  template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
923  slice(const StartIndices& startIndices, const Sizes& sizes) {
925  }
926 
927  template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
929  stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) const {
930  return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
931  const Derived>(derived(), startIndices, stopIndices, strides);
932  }
933  template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
935  stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) {
936  return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
937  Derived>(derived(), startIndices, stopIndices, strides);
938  }
939 
940  template <DenseIndex DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
942  chip(const Index offset) const {
943  return TensorChippingOp<DimId, const Derived>(derived(), offset, DimId);
944  }
945  template <Index DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
947  chip(const Index offset) {
948  return TensorChippingOp<DimId, Derived>(derived(), offset, DimId);
949  }
950 
951  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
953  chip(const Index offset, const Index dim) const {
955  }
956  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
958  chip(const Index offset, const Index dim) {
960  }
961 
962  template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
964  reverse(const ReverseDimensions& rev) const {
966  }
967  template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
969  reverse(const ReverseDimensions& rev) {
971  }
972 
973  template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
975  shuffle(const Shuffle& shuffle) const {
977  }
978  template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
980  shuffle(const Shuffle& shuffle) {
982  }
983 
984  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
986  stride(const Strides& strides) const {
988  }
989  template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
991  stride(const Strides& strides) {
993  }
994 
995  // Select the device on which to evaluate the expression.
996  template <typename DeviceType>
999  }
1000 
1001  protected:
1002  EIGEN_DEVICE_FUNC
1003  EIGEN_STRONG_INLINE Derived& derived() { return *static_cast<Derived*>(this); }
1004  EIGEN_DEVICE_FUNC
1005  EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); }
1006 };
1007 
1008 } // end namespace Eigen
1009 
1010 #endif // EIGEN_CXX11_TENSOR_TENSOR_BASE_H
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator-=(const OtherDerived &other)
Definition: TensorBase.h:871
d
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:918
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:366
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator*=(const OtherDerived &other)
Definition: TensorBase.h:875
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorBroadcastingOp< const Broadcast, const Derived > broadcast(const Broadcast &broadcast) const
Definition: TensorBase.h:670
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool() isfinite(const half &a)
Definition: Half.h:379
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_round_op< Scalar >, const Derived > round() const
Definition: TensorBase.h:310
Tensor custom class.
#define EIGEN_STRONG_INLINE
Definition: Macros.h:493
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorChippingOp< DimId, Derived > chip(const Index offset)
Definition: TensorBase.h:947
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorConcatenationOp< const Axis, Derived, OtherDerived > concatenate(const OtherDerived &other, const Axis &axis)
Definition: TensorBase.h:901
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:435
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 TensorCwiseBinaryOp< internal::scalar_quotient_op< Scalar >, const Derived, const OtherDerived > operator/(const OtherDerived &other) const
Definition: TensorBase.h:354
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:139
Tensor custom class.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_floor_op< Scalar >, const Derived > floor() const
Definition: TensorBase.h:322
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 Derived & derived() const
Definition: TensorBase.h:1005
bool operator>(const TransformStorage &lhs, const TransformStorage &rhs)
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:808
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:929
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCustomUnaryOp< const CustomUnaryFunc, const Derived > customOp(const CustomUnaryFunc &op) const
Definition: TensorBase.h:803
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator/=(const OtherDerived &other)
Definition: TensorBase.h:879
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorShufflingOp< const Shuffle, const Derived > shuffle(const Shuffle &shuffle) const
Definition: TensorBase.h:975
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< CustomUnaryOp, const Derived > unaryExpr(const CustomUnaryOp &func) const
Definition: TensorBase.h:71
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::SumReducer< CoeffReturnType >, const Dims, const Derived > sum(const Dims &dims) const
Definition: TensorBase.h:526
const TensorReductionOp< internal::MaxReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > maximum() const
Definition: TensorBase.h:567
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_sign_op< Scalar >, const Derived > sign() const
Definition: TensorBase.h:90
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< internal::scalar_constant_op< Scalar >, const Derived > constant(const Scalar &value) const
Definition: TensorBase.h:46
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:160
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< RandomGenerator, const Derived > random(const RandomGenerator &gen=RandomGenerator()) const
Definition: TensorBase.h:57
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:440
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:298
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:712
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_exp_op< Scalar >, const Derived > exp() const
Definition: TensorBase.h:184
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setRandom()
Definition: TensorBase.h:848
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setRandom()
Definition: TensorBase.h:852
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< DimId, const Derived > chip(const Index offset) const
Definition: TensorBase.h:754
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorScanProdOp cumprod(const Index &axis, bool exclusive=false) const
Definition: TensorBase.h:512
Definition: LDLT.h:16
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_inverse_op< Scalar >, const Derived > inverse() const
Definition: TensorBase.h:114
Scalar CoeffReturnType
Definition: TensorBase.h:832
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_square_op< Scalar >, const Derived > square() const
Definition: TensorBase.h:102
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:997
Pseudo expression providing an operator = that will evaluate its argument on the specified computing ...
Definition: TensorDevice.h:27
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
Definition: NumTraits.h:150
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< Reducer, const Dims, const Derived > reduce(const Dims &dims, const Reducer &reducer) const
Definition: TensorBase.h:664
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorForcedEvalOp< const Derived > eval() const
Definition: TensorBase.h:814
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:122
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_sigmoid_op< Scalar >, const Derived > sigmoid() const
Definition: TensorBase.h:178
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:519
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorPaddingOp< const PaddingDimensions, const Derived > pad(const PaddingDimensions &padding, const Scalar padding_value) const
Definition: TensorBase.h:774
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorLayoutSwapOp< const Derived > swap_layout() const
Definition: TensorBase.h:733
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:412
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_tanh_op< Scalar >, const Derived > tanh() const
Definition: TensorBase.h:120
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool operator>=(const half &a, const half &b)
Definition: Half.h:255
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool() isinf(const half &a)
Definition: Half.h:369
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
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:445
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & derived()
Definition: TensorBase.h:1003
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::MeanReducer< CoeffReturnType >, const Dims, const Derived > mean(const Dims &dims) const
Definition: TensorBase.h:538
internal::traits< Derived > DerivedTraits
Definition: TensorBase.h:30
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:450
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::OrReducer, const DimensionList< Index, NumDimensions >, const TensorConversionOp< bool, const Derived > > any() const
Definition: TensorBase.h:605
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< DimId, const Derived > chip(const Index offset) const
Definition: TensorBase.h:942
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_real_op< Scalar >, const Derived > real() const
Definition: TensorBase.h:220
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorReshapingOp< const NewDimensions, Derived > reshape(const NewDimensions &newDimensions)
Definition: TensorBase.h:912
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorChippingOp< Dynamic, Derived > chip(const Index offset, const Index dim)
Definition: TensorBase.h:958
const TensorReductionOp< internal::MinReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > minimum() const
Definition: TensorBase.h:579
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:384
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_sqrt_op< Scalar >, const Derived > sqrt() const
Definition: TensorBase.h:84
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:935
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorShufflingOp< const Shuffle, const Derived > shuffle(const Shuffle &shuffle) const
Definition: TensorBase.h:779
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::MaxReducer< CoeffReturnType >, const Dims, const Derived > maximum(const Dims &dims) const
Definition: TensorBase.h:562
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:640
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_erf_op< Scalar >, const Derived > erf() const
Definition: TensorBase.h:166
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:348
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:406
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_abs_op< Scalar >, const Derived > abs() const
Definition: TensorBase.h:202
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:214
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setConstant(const Scalar &val)
Definition: TensorBase.h:844
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::ProdReducer< CoeffReturnType >, const Dims, const Derived > prod(const Dims &dims) const
Definition: TensorBase.h:550
DerivedTraits::Scalar Scalar
Definition: TensorBase.h:830
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:721
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:153
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorLayoutSwapOp< const Derived > swap_layout() const
Definition: TensorBase.h:885
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 TensorReverseOp< const ReverseDimensions, const Derived > reverse(const ReverseDimensions &rev) const
Definition: TensorBase.h:964
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorGeneratorOp< Generator, const Derived > generate(const Generator &generator) const
Definition: TensorBase.h:64
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorSlicingOp< const StartIndices, const Sizes, Derived > slice(const StartIndices &startIndices, const Sizes &sizes)
Definition: TensorBase.h:923
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC half operator/(const half &a, const half &b)
Definition: Half.h:216
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReshapingOp< const NewDimensions, const Derived > reshape(const NewDimensions &newDimensions) const
Definition: TensorBase.h:907
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_digamma_op< Scalar >, const Derived > digamma() const
Definition: TensorBase.h:132
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::AndReducer, const DimensionList< Index, NumDimensions >, const TensorConversionOp< bool, const Derived > > all() const
Definition: TensorBase.h:592
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:698
Tensor conversion class. This class makes it possible to vectorize type casting operations when the n...
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConversionOp< NewType, const Derived > cast() const
Definition: TensorBase.h:304
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:249
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:360
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorLayoutSwapOp< Derived > swap_layout()
Definition: TensorBase.h:890
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorScanSumOp cumsum(const Index &axis, bool exclusive=false) const
Definition: TensorBase.h:505
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorShufflingOp< const Shuffle, Derived > shuffle(const Shuffle &shuffle)
Definition: TensorBase.h:980
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< CustomBinaryOp, const Derived, const OtherDerived > binaryExpr(const OtherDerived &other, const CustomBinaryOp &func) const
Definition: TensorBase.h:329
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReshapingOp< const NewDimensions, const Derived > reshape(const NewDimensions &newDimensions) const
Definition: TensorBase.h:738
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:490
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReductionOp< internal::MinReducer< CoeffReturnType >, const Dims, const Derived > minimum(const Dims &dims) const
Definition: TensorBase.h:574
EIGEN_DEVICE_FUNC const Product< MatrixDerived, PermutationDerived, AliasFreeProduct > operator*(const MatrixBase< MatrixDerived > &matrix, const PermutationBase< PermutationDerived > &permutation)
const TensorReductionOp< internal::SumReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > sum() const
Definition: TensorBase.h:531
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator+=(const OtherDerived &other)
Definition: TensorBase.h:867
The fixed sized version of the tensor class.
const mpreal dim(const mpreal &a, const mpreal &b, mp_rnd_t r=mpreal::get_default_rnd())
Definition: mpreal.h:2201
TensorScanOp< internal::ProdReducer< CoeffReturnType >, const Derived > TensorScanProdOp
Definition: TensorBase.h:509
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_log_op< Scalar >, const Derived > log() const
Definition: TensorBase.h:190
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:146
The tensor base class.
Definition: TensorBase.h:827
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:378
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorStridingOp< const Strides, const Derived > stride(const Strides &strides) const
Definition: TensorBase.h:986
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< CustomNullaryOp, const Derived > nullaryExpr(const CustomNullaryOp &func) const
Definition: TensorBase.h:39
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< Dynamic, const Derived > chip(const Index offset, const Index dim) const
Definition: TensorBase.h:759
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_imag_op< Scalar >, const Derived > imag() const
Definition: TensorBase.h:226
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:743
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:688
internal::remove_const< Scalar >::type CoeffReturnType
Definition: TensorBase.h:33
const TensorReductionOp< internal::ProdReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > prod() const
Definition: TensorBase.h:555
TensorScanOp< internal::SumReducer< CoeffReturnType >, const Derived > TensorScanSumOp
Definition: TensorBase.h:502
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:599
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_conjugate_op< Scalar >, const Derived > conjugate() const
Definition: TensorBase.h:208
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:401
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:342
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_rsqrt_op< Scalar >, const Derived > rsqrt() const
Definition: TensorBase.h:96
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_cube_op< Scalar >, const Derived > cube() const
Definition: TensorBase.h:108
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:418
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorInflationOp< const Strides, const Derived > inflate(const Strides &strides) const
Definition: TensorBase.h:789
const mpreal random(unsigned int seed=0)
Definition: mpreal.h:2614
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Derived & derived() const
Definition: TensorBase.h:823
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:653
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorPaddingOp< const PaddingDimensions, const Derived > pad(const PaddingDimensions &padding) const
Definition: TensorBase.h:769
DerivedTraits::Index Index
Definition: TensorBase.h:831
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorFFTOp< const FFT, const Derived, FFTDataType, FFTDirection > fft(const FFT &fft) const
Definition: TensorBase.h:497
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorIndexTupleOp< const Derived > index_tuples() const
Definition: TensorBase.h:796
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorTupleReducerOp< internal::ArgMaxTupleReducer< Tuple< Index, CoeffReturnType > >, const array< Index, NumDimensions >, const Derived > argmax() const
Definition: TensorBase.h:614
const TensorReductionOp< internal::MeanReducer< CoeffReturnType >, const DimensionList< Index, NumDimensions >, const Derived > mean() const
Definition: TensorBase.h:543
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:483
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_ceil_op< Scalar >, const Derived > ceil() const
Definition: TensorBase.h:316
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:336
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseBinaryOp< internal::scalar_boolean_and_op, const Derived, const OtherDerived > operator&&(const OtherDerived &other) const
Definition: TensorBase.h:372
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_log1p_op< Scalar >, const Derived > log1p() const
Definition: TensorBase.h:196
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_lgamma_op< Scalar >, const Derived > lgamma() const
Definition: TensorBase.h:126
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:474
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:748
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:896
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool() isnan(const half &a)
Definition: Half.h:372
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorStridingOp< const Strides, Derived > stride(const Strides &strides)
Definition: TensorBase.h:991
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_opposite_op< Scalar >, const Derived > operator-() const
Definition: TensorBase.h:78
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator!=(const Tuple< U, V > &x, const Tuple< U, V > &y)
Definition: TensorMeta.h:148
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseNullaryOp< internal::UniformRandomGenerator< Scalar >, const Derived > random() const
Definition: TensorBase.h:52
Tensor concatenation class.
internal::traits< Derived > DerivedTraits
Definition: TensorBase.h:829
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:292
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorReverseOp< const ReverseDimensions, Derived > reverse(const ReverseDimensions &rev)
Definition: TensorBase.h:969
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConcatenationOp< Axis, const Derived, const OtherDerived > concatenate(const OtherDerived &other, Axis axis) const
Definition: TensorBase.h:676
static const int NumDimensions
Definition: TensorBase.h:833
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorCwiseUnaryOp< internal::scalar_erfc_op< Scalar >, const Derived > erfc() const
Definition: TensorBase.h:172
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorStridingOp< const Strides, const Derived > stride(const Strides &strides) const
Definition: TensorBase.h:784
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setZero()
Definition: TensorBase.h:840
The tensor class.
Definition: Tensor.h:63
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorReverseOp< const ReverseDimensions, const Derived > reverse(const ReverseDimensions &rev) const
Definition: TensorBase.h:764
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
bool operator<(hardware_interface::ControllerInfo const &i1, hardware_interface::ControllerInfo const &i2)
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:586
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< Dynamic, const Derived > chip(const Index offset, const Index dim) const
Definition: TensorBase.h:953
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorPatchOp< const PatchDims, const Derived > extract_patches(const PatchDims &patch_dims) const
Definition: TensorBase.h:682
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorTupleReducerOp< internal::ArgMinTupleReducer< Tuple< Index, CoeffReturnType > >, const array< Index, NumDimensions >, const Derived > argmin() const
Definition: TensorBase.h:627


hebiros
Author(s): Xavier Artache , Matthew Tesch
autogenerated on Thu Sep 3 2020 04:09:12