TensorDimensions.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_DIMENSIONS_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
12 
13 
14 namespace Eigen {
15 
32 // Boilerplate code
33 namespace internal {
34 
35 template<std::size_t n, typename Dimension> struct dget {
36  static const std::size_t value = get<n, Dimension>::value;
37 };
38 
39 
40 template<typename Index, std::size_t NumIndices, std::size_t n, bool RowMajor>
42 {
43  template <typename Dimensions> EIGEN_DEVICE_FUNC
44  static inline Index run(array<Index, NumIndices> const& indices,
45  const Dimensions& dimensions)
46  {
47  return array_get<RowMajor ? n - 1 : (NumIndices - n)>(indices) +
48  dget<RowMajor ? n - 1 : (NumIndices - n), Dimensions>::value *
50  }
51 };
52 
53 template<typename Index, std::size_t NumIndices, bool RowMajor>
55 {
56  template <typename Dimensions> EIGEN_DEVICE_FUNC
57  static inline Index run(array<Index, NumIndices> const&, const Dimensions&)
58  {
59  return 0;
60  }
61 };
62 
63 template<typename Index, std::size_t n>
65 {
66  template <typename Dimensions> EIGEN_DEVICE_FUNC
67  static inline Index run(const Index index,
68  const Dimensions& dimensions)
69  {
70  const Index mult = (index == n-1) ? 1 : 0;
71  return array_get<n-1>(dimensions) * mult +
73  }
74 };
75 
76 template<typename Index>
78 {
79  template <typename Dimensions> EIGEN_DEVICE_FUNC
80  static inline Index run(const Index,
81  const Dimensions&)
82  {
83  return 0;
84  }
85  };
86 
87 } // end namespace internal
88 
89 
90 // Fixed size
91 #ifndef EIGEN_EMULATE_CXX11_META_H
92 template <typename std::ptrdiff_t... Indices>
93 struct Sizes : internal::numeric_list<std::ptrdiff_t, Indices...> {
94  typedef internal::numeric_list<std::ptrdiff_t, Indices...> Base;
95  static const std::ptrdiff_t total_size = internal::arg_prod(Indices...);
96 
97  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t rank() const {
98  return Base::count;
99  }
100 
101  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t TotalSize() {
102  return internal::arg_prod(Indices...);
103  }
104 
105  EIGEN_DEVICE_FUNC Sizes() { }
106  template <typename DenseIndex>
107  explicit EIGEN_DEVICE_FUNC Sizes(const array<DenseIndex, Base::count>& /*indices*/) {
108  // todo: add assertion
109  }
110 #if EIGEN_HAS_VARIADIC_TEMPLATES
111  template <typename... DenseIndex> EIGEN_DEVICE_FUNC Sizes(DenseIndex...) { }
112  explicit EIGEN_DEVICE_FUNC Sizes(std::initializer_list<std::ptrdiff_t> /*l*/) {
113  // todo: add assertion
114  }
115 #endif
116 
117  template <typename T> Sizes& operator = (const T& /*other*/) {
118  // add assertion failure if the size of other is different
119  return *this;
120  }
121 
122  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t operator[] (const std::size_t index) const {
124  }
125 
126  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
127  size_t IndexOfColMajor(const array<DenseIndex, Base::count>& indices) const {
129  }
130  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
131  size_t IndexOfRowMajor(const array<DenseIndex, Base::count>& indices) const {
133  }
134 };
135 
136 namespace internal {
137 template <typename std::ptrdiff_t... Indices>
138 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_prod(const Sizes<Indices...>&) {
139  return Sizes<Indices...>::total_size;
140 }
141 }
142 
143 #else
144 
145 template <std::size_t n>
146 struct non_zero_size {
147  typedef internal::type2val<std::size_t, n> type;
148 };
149 template <>
150 struct non_zero_size<0> {
151  typedef internal::null_type type;
152 };
153 
154 template <std::size_t V1=0, std::size_t V2=0, std::size_t V3=0, std::size_t V4=0, std::size_t V5=0> struct Sizes {
155  typedef typename internal::make_type_list<typename non_zero_size<V1>::type, typename non_zero_size<V2>::type, typename non_zero_size<V3>::type, typename non_zero_size<V4>::type, typename non_zero_size<V5>::type >::type Base;
156  static const size_t count = Base::count;
157  static const std::size_t total_size = internal::arg_prod<Base>::value;
158 
159  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t rank() const {
160  return count;
161  }
162 
163  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t TotalSize() {
165  }
166 
167  Sizes() { }
168  template <typename DenseIndex>
169  explicit Sizes(const array<DenseIndex, Base::count>& /*indices*/) {
170  // todo: add assertion
171  }
172  template <typename T> Sizes& operator = (const T& /*other*/) {
173  // add assertion failure if the size of other is different
174  return *this;
175  }
176 
177 #if EIGEN_HAS_VARIADIC_TEMPLATES
178  template <typename... DenseIndex> Sizes(DenseIndex... /*indices*/) { }
179  explicit Sizes(std::initializer_list<std::size_t>) {
180  // todo: add assertion
181  }
182 #else
183  EIGEN_DEVICE_FUNC explicit Sizes(const DenseIndex) {
184  }
185  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex) {
186  }
187  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex, const DenseIndex) {
188  }
189  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex, const DenseIndex, const DenseIndex) {
190  }
191  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex, const DenseIndex, const DenseIndex, const DenseIndex) {
192  }
193 #endif
194 
195  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index operator[] (const Index index) const {
196  switch (index) {
197  case 0:
198  return internal::get<0, Base>::value;
199  case 1:
200  return internal::get<1, Base>::value;
201  case 2:
202  return internal::get<2, Base>::value;
203  case 3:
204  return internal::get<3, Base>::value;
205  case 4:
206  return internal::get<4, Base>::value;
207  default:
208  eigen_assert(false && "index overflow");
209  return static_cast<Index>(-1);
210  }
211  }
212 
213  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
214  size_t IndexOfColMajor(const array<DenseIndex, Base::count>& indices) const {
216  }
217  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
218  size_t IndexOfRowMajor(const array<DenseIndex, Base::count>& indices) const {
220  }
221 };
222 
223 namespace internal {
224 template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5>
225 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::size_t array_prod(const Sizes<V1, V2, V3, V4, V5>&) {
227 }
228 }
229 
230 #endif
231 
232 // Boilerplate
233 namespace internal {
234 template<typename Index, std::size_t NumIndices, std::size_t n, bool RowMajor>
236 {
237  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
238  Index run(array<Index, NumIndices> const& indices, array<Index, NumIndices> const& dimensions)
239  {
240  return array_get<RowMajor ? n : (NumIndices - n - 1)>(indices) +
241  array_get<RowMajor ? n : (NumIndices - n - 1)>(dimensions) *
243  }
244 };
245 
246 template<typename Index, std::size_t NumIndices, bool RowMajor>
248 {
249  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
251  {
252  return array_get<RowMajor ? 0 : NumIndices - 1>(indices);
253  }
254 };
255 } // end namespace internal
256 
257 
258 
259 // Dynamic size
260 template <typename DenseIndex, int NumDims>
261 struct DSizes : array<DenseIndex, NumDims> {
263  static const int count = NumDims;
264 
265  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t rank() const {
266  return NumDims;
267  }
268 
269  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex TotalSize() const {
270  return (NumDims == 0) ? 1 : internal::array_prod(*static_cast<const Base*>(this));
271  }
272 
273  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DSizes() {
274  for (int i = 0 ; i < NumDims; ++i) {
275  (*this)[i] = 0;
276  }
277  }
278  EIGEN_DEVICE_FUNC explicit DSizes(const array<DenseIndex, NumDims>& a) : Base(a) { }
279 
280  EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0) {
281  eigen_assert(NumDims == 1);
282  (*this)[0] = i0;
283  }
284 
285 #if EIGEN_HAS_VARIADIC_TEMPLATES
286  template<typename... IndexTypes> EIGEN_DEVICE_FUNC
287  EIGEN_STRONG_INLINE explicit DSizes(DenseIndex firstDimension, DenseIndex secondDimension, IndexTypes... otherDimensions) : Base({{firstDimension, secondDimension, otherDimensions...}}) {
288  EIGEN_STATIC_ASSERT(sizeof...(otherDimensions) + 2 == NumDims, YOU_MADE_A_PROGRAMMING_MISTAKE)
289  }
290 #else
291  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1) {
292  eigen_assert(NumDims == 2);
293  (*this)[0] = i0;
294  (*this)[1] = i1;
295  }
296  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2) {
297  eigen_assert(NumDims == 3);
298  (*this)[0] = i0;
299  (*this)[1] = i1;
300  (*this)[2] = i2;
301  }
302  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3) {
303  eigen_assert(NumDims == 4);
304  (*this)[0] = i0;
305  (*this)[1] = i1;
306  (*this)[2] = i2;
307  (*this)[3] = i3;
308  }
309  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3, const DenseIndex i4) {
310  eigen_assert(NumDims == 5);
311  (*this)[0] = i0;
312  (*this)[1] = i1;
313  (*this)[2] = i2;
314  (*this)[3] = i3;
315  (*this)[4] = i4;
316  }
317 #endif
318 
319  EIGEN_DEVICE_FUNC DSizes& operator = (const array<DenseIndex, NumDims>& other) {
320  *static_cast<Base*>(this) = other;
321  return *this;
322  }
323 
324  // A constexpr would be so much better here
327  }
330  }
331 };
332 
333 
334 
335 
336 // Boilerplate
337 namespace internal {
338 template<typename Index, std::size_t NumIndices, std::size_t n, bool RowMajor>
340 {
341  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
342  Index run(array<Index, NumIndices> const& indices, std::vector<DenseIndex> const& dimensions)
343  {
344  return array_get<RowMajor ? n : (NumIndices - n - 1)>(indices) +
345  array_get<RowMajor ? n : (NumIndices - n - 1)>(dimensions) *
347  }
348 };
349 
350 template<typename Index, std::size_t NumIndices, bool RowMajor>
352 {
353  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
354  Index run(array<Index, NumIndices> const& indices, std::vector<DenseIndex> const&)
355  {
356  return array_get<RowMajor ? 0 : NumIndices - 1>(indices);
357  }
358 };
359 } // end namespace internal
360 
361 
362 namespace internal {
363 
364 template <typename DenseIndex, int NumDims> struct array_size<const DSizes<DenseIndex, NumDims> > {
365  static const size_t value = NumDims;
366 };
367 template <typename DenseIndex, int NumDims> struct array_size<DSizes<DenseIndex, NumDims> > {
368  static const size_t value = NumDims;
369 };
370 #ifndef EIGEN_EMULATE_CXX11_META_H
371 template <typename std::ptrdiff_t... Indices> struct array_size<const Sizes<Indices...> > {
372 static const std::ptrdiff_t value = Sizes<Indices...>::count;
373 };
374 template <typename std::ptrdiff_t... Indices> struct array_size<Sizes<Indices...> > {
375 static const std::ptrdiff_t value = Sizes<Indices...>::count;
376 };
377 template <std::ptrdiff_t n, typename std::ptrdiff_t... Indices> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_get(const Sizes<Indices...>&) {
378  return get<n, internal::numeric_list<std::size_t, Indices...> >::value;
379 }
380 template <std::ptrdiff_t n> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_get(const Sizes<>&) {
381  eigen_assert(false && "should never be called");
382  return -1;
383 }
384 #else
385 template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5> struct array_size<const Sizes<V1,V2,V3,V4,V5> > {
386  static const size_t value = Sizes<V1,V2,V3,V4,V5>::count;
387 };
388 template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5> struct array_size<Sizes<V1,V2,V3,V4,V5> > {
389  static const size_t value = Sizes<V1,V2,V3,V4,V5>::count;
390 };
391 template <std::size_t n, std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::size_t array_get(const Sizes<V1,V2,V3,V4,V5>&) {
392  return get<n, typename Sizes<V1,V2,V3,V4,V5>::Base>::value;
393 }
394 
395 #endif
396 
397 
398 template <typename Dims1, typename Dims2, size_t n, size_t m>
400  static EIGEN_DEVICE_FUNC inline bool run(Dims1&, Dims2&) {
401  return false;
402  }
403 };
404 template <typename Dims1, typename Dims2, size_t n>
405 struct sizes_match_below_dim<Dims1, Dims2, n, n> {
406  static EIGEN_DEVICE_FUNC inline bool run(Dims1& dims1, Dims2& dims2) {
407  return (array_get<n-1>(dims1) == array_get<n-1>(dims2)) &
409  }
410 };
411 template <typename Dims1, typename Dims2>
412 struct sizes_match_below_dim<Dims1, Dims2, 0, 0> {
413  static EIGEN_DEVICE_FUNC inline bool run(Dims1&, Dims2&) {
414  return true;
415  }
416 };
417 
418 } // end namespace internal
419 
420 
421 template <typename Dims1, typename Dims2>
422 EIGEN_DEVICE_FUNC bool dimensions_match(Dims1& dims1, Dims2& dims2) {
424 }
425 
426 } // end namespace Eigen
427 
428 #endif // EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
Eigen::Sizes::rank
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t rank() const
Definition: TensorDimensions.h:97
Eigen
Definition: common.h:73
Eigen::internal::sizes_match_below_dim< Dims1, Dims2, n, n >::run
static EIGEN_DEVICE_FUNC bool run(Dims1 &dims1, Dims2 &dims2)
Definition: TensorDimensions.h:406
Eigen::internal::fixed_size_tensor_index_extraction_helper< Index, 0 >::run
static EIGEN_DEVICE_FUNC Index run(const Index, const Dimensions &)
Definition: TensorDimensions.h:80
Eigen::array
Definition: EmulateArray.h:21
Eigen::DSizes::rank
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t rank() const
Definition: TensorDimensions.h:265
Eigen::internal::tensor_index_linearization_helper
Definition: TensorDimensions.h:235
Eigen::internal::tensor_vsize_index_linearization_helper::run
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index run(array< Index, NumIndices > const &indices, std::vector< DenseIndex > const &dimensions)
Definition: TensorDimensions.h:342
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2)
Definition: TensorDimensions.h:296
eigen_assert
#define eigen_assert(x)
Definition: Macros.h:579
Eigen::Sizes::IndexOfColMajor
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t IndexOfColMajor(const array< DenseIndex, Base::count > &indices) const
Definition: TensorDimensions.h:127
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC DSizes(const array< DenseIndex, NumDims > &a)
Definition: TensorDimensions.h:278
Eigen::Sizes::total_size
static const std::ptrdiff_t total_size
Definition: TensorDimensions.h:95
Eigen::internal::tensor_index_linearization_helper< Index, NumIndices, 0, RowMajor >::run
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index run(array< Index, NumIndices > const &indices, array< Index, NumIndices > const &)
Definition: TensorDimensions.h:250
Eigen::RowMajor
@ RowMajor
Definition: Constants.h:322
Eigen::internal::fixed_size_tensor_index_linearization_helper< Index, NumIndices, 0, RowMajor >::run
static EIGEN_DEVICE_FUNC Index run(array< Index, NumIndices > const &, const Dimensions &)
Definition: TensorDimensions.h:57
Eigen::internal::fixed_size_tensor_index_linearization_helper
Definition: TensorDimensions.h:41
Eigen::internal::arg_prod
Definition: EmulateCXX11Meta.h:154
Eigen::DSizes
Definition: TensorDimensions.h:261
Eigen::internal::array_get
const Index array_get(DimensionList< Index, Rank > &)
Definition: TensorDimensionList.h:39
Eigen::Sizes
Definition: TensorDimensions.h:93
Eigen::internal::arg_prod::value
static const NList::HeadType::type value
Definition: EmulateCXX11Meta.h:155
Eigen::DSizes::IndexOfRowMajor
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfRowMajor(const array< DenseIndex, NumDims > &indices) const
Definition: TensorDimensions.h:328
Eigen::Sizes::Base
internal::numeric_list< std::ptrdiff_t, Indices... > Base
Definition: TensorDimensions.h:94
Eigen::internal::tensor_vsize_index_linearization_helper
Definition: TensorDimensions.h:339
Eigen::Sizes::TotalSize
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t TotalSize()
Definition: TensorDimensions.h:101
Eigen::internal::get
Definition: EmulateCXX11Meta.h:114
Eigen::DSizes::Base
array< DenseIndex, NumDims > Base
Definition: TensorDimensions.h:262
Eigen::Sizes::Sizes
EIGEN_DEVICE_FUNC Sizes(const array< DenseIndex, Base::count > &)
Definition: TensorDimensions.h:107
Eigen::internal::fixed_size_tensor_index_extraction_helper
Definition: TensorDimensions.h:64
EIGEN_STRONG_INLINE
#define EIGEN_STRONG_INLINE
Definition: Macros.h:494
Eigen::internal::tensor_vsize_index_linearization_helper< Index, NumIndices, 0, RowMajor >::run
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index run(array< Index, NumIndices > const &indices, std::vector< DenseIndex > const &)
Definition: TensorDimensions.h:354
Eigen::DSizes::TotalSize
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex TotalSize() const
Definition: TensorDimensions.h:269
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DSizes()
Definition: TensorDimensions.h:273
Eigen::internal::fixed_size_tensor_index_extraction_helper::run
static EIGEN_DEVICE_FUNC Index run(const Index index, const Dimensions &dimensions)
Definition: TensorDimensions.h:67
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3, const DenseIndex i4)
Definition: TensorDimensions.h:309
Eigen::internal::tensor_index_linearization_helper::run
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index run(array< Index, NumIndices > const &indices, array< Index, NumIndices > const &dimensions)
Definition: TensorDimensions.h:238
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1)
Definition: TensorDimensions.h:291
Eigen::internal::array_prod
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_prod(const Sizes< Indices... > &)
Definition: TensorDimensions.h:138
Eigen::internal::array_size
Definition: EmulateArray.h:203
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0)
Definition: TensorDimensions.h:280
Eigen::Sizes::operator[]
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t operator[](const std::size_t index) const
Definition: TensorDimensions.h:122
Eigen::dimensions_match
EIGEN_DEVICE_FUNC bool dimensions_match(Dims1 &dims1, Dims2 &dims2)
Definition: TensorDimensions.h:422
Eigen::DSizes::DSizes
EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3)
Definition: TensorDimensions.h:302
Eigen::internal::sizes_match_below_dim::run
static EIGEN_DEVICE_FUNC bool run(Dims1 &, Dims2 &)
Definition: TensorDimensions.h:400
Eigen::internal::sizes_match_below_dim< Dims1, Dims2, 0, 0 >::run
static EIGEN_DEVICE_FUNC bool run(Dims1 &, Dims2 &)
Definition: TensorDimensions.h:413
EIGEN_STATIC_ASSERT
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition: StaticAssert.h:124
Eigen::DenseIndex
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
Definition: Meta.h:25
a
Scalar * a
Definition: cholesky.cpp:26
Eigen::internal::dget
Definition: TensorDimensions.h:35
Eigen::DSizes::operator=
EIGEN_DEVICE_FUNC DSizes & operator=(const array< DenseIndex, NumDims > &other)
Definition: TensorDimensions.h:319
Eigen::DSizes::IndexOfColMajor
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfColMajor(const array< DenseIndex, NumDims > &indices) const
Definition: TensorDimensions.h:325
Eigen::TensorSycl::run
void run(Expr &expr, Dev &dev)
Definition: TensorSyclRun.h:47
Eigen::Sizes::Sizes
EIGEN_DEVICE_FUNC Sizes()
Definition: TensorDimensions.h:105
Eigen::internal::sizes_match_below_dim
Definition: TensorDimensions.h:399
Eigen::Sizes::operator=
Sizes & operator=(const T &)
Definition: TensorDimensions.h:117
Eigen::internal::fixed_size_tensor_index_linearization_helper::run
static EIGEN_DEVICE_FUNC Index run(array< Index, NumIndices > const &indices, const Dimensions &dimensions)
Definition: TensorDimensions.h:44
internal
Definition: BandTriangularSolver.h:13
n
PlainMatrixType mat * n
Definition: eigenvalues.cpp:41
Eigen::internal::dget::value
static const std::size_t value
Definition: TensorDimensions.h:36
Eigen::internal::make_type_list::type
type_list< T1, tailresult > type
Definition: EmulateCXX11Meta.h:43
Eigen::Sizes::IndexOfRowMajor
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t IndexOfRowMajor(const array< DenseIndex, Base::count > &indices) const
Definition: TensorDimensions.h:131
Eigen::Index
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:33
Eigen::DSizes::count
static const int count
Definition: TensorDimensions.h:263


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