11 #ifndef EIGEN_CXX11_TENSOR_TENSOR_H
12 #define EIGEN_CXX11_TENSOR_TENSOR_H
67 template <
typename Scalar_,
int NumIndices_,
int Options_,
typename IndexType_>
68 class Tensor :
public TensorBase<Tensor<Scalar_, NumIndices_, Options_, IndexType_> > {
89 template <
typename CustomIndices>
111 template <
typename... IndexTypes>
113 IndexTypes... otherIndices)
const {
126 template <
typename CustomIndices, EIGEN_SFINAE_ENABLE_IF(!(isOfNormalIndex<CustomIndices>::value))>
128 return coeff(internal::customIndices2Array<Index, NumIndices>(indices));
141 template <
typename... IndexTypes>
155 template <
typename CustomIndices, EIGEN_SFINAE_ENABLE_IF(!(isOfNormalIndex<CustomIndices>::value))>
157 return coeffRef(internal::customIndices2Array<Index, NumIndices>(indices));
170 template <
typename... IndexTypes>
178 template <
typename CustomIndices, EIGEN_SFINAE_ENABLE_IF(!(isOfNormalIndex<CustomIndices>::value))>
180 return coeff(internal::customIndices2Array<Index, NumIndices>(indices));
185 return coeff(indices);
204 template <
typename... IndexTypes>
217 template <
typename CustomIndices, EIGEN_SFINAE_ENABLE_IF(!(isOfNormalIndex<CustomIndices>::value))>
219 return coeffRef(internal::customIndices2Array<Index, NumIndices>(indices));
242 template <
typename... IndexTypes>
244 :
m_storage(firstDimension, otherDimensions...) {
255 template <
typename OtherDerived>
259 Assign assign(*
this, other.
derived());
264 template <
typename OtherDerived>
268 Assign assign(*
this, other.
derived());
281 Assign assign(*
this, other);
286 template <
typename OtherDerived>
289 Assign assign(*
this, other);
295 template <
typename... IndexTypes>
304 #ifndef EIGEN_NO_DEBUG
314 #ifdef EIGEN_INITIALIZE_COEFFS
315 bool size_changed =
size != this->
size();
328 template <
typename FirstType,
typename... OtherTypes>
338 template <
typename CustomDimension, EIGEN_SFINAE_ENABLE_IF(!(isOfNormalIndex<CustomDimension>::value))>
343 template <
typename std::ptrdiff_t... Indices>
352 #ifdef EIGEN_TENSOR_PLUGIN
353 #include EIGEN_TENSOR_PLUGIN
366 array_apply_and_reduce<logical_and_op, greater_equal_zero_op>(indices) &&
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
#define eigen_internal_assert(x)
Definition: Macros.h:916
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
Definition: PlainObjectBase.h:24
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
Definition: TensorAssign.h:57
The tensor base class.
Definition: TensorBase.h:1026
static constexpr int NumDimensions
Definition: TensorBase.h:1033
Scalar CoeffReturnType
Definition: TensorBase.h:1032
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & derived()
Definition: TensorBase.h:1220
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex size() const
Definition: TensorStorage.h:58
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const FixedDimensions dimensions() const
Definition: TensorStorage.h:56
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T * data()
Definition: TensorStorage.h:53
The tensor class.
Definition: Tensor.h:68
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(const Self &other)
Definition: Tensor.h:240
TensorStorage< Scalar, Dimensions, Options > m_storage
Definition: Tensor.h:87
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & operator()(const array< Index, NumIndices > &indices)
Definition: Tensor.h:212
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor & operator=(const Tensor &other)
Definition: Tensor.h:279
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & operator[](Index index) const
Definition: Tensor.h:198
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar * data() const
Definition: Tensor.h:103
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & coeff(Index index) const
Definition: Tensor.h:136
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & operator[](Index index)
Definition: Tensor.h:232
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Self &&other)
Definition: Tensor.h:273
const Scalar & operator()(Index firstIndex, Index secondIndex, IndexTypes... otherIndices) const
Definition: Tensor.h:171
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Index firstDimension, IndexTypes... otherDimensions)
Definition: Tensor.h:243
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor()
Definition: Tensor.h:238
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions & dimensions() const
Definition: Tensor.h:100
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & operator()()
Definition: Tensor.h:227
DSizes< Index, NumIndices_ > Dimensions
Definition: Tensor.h:84
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor & operator=(const OtherDerived &other)
Definition: Tensor.h:287
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & operator()(CustomIndices &indices)
Definition: Tensor.h:218
Self & base()
Definition: Tensor.h:108
EIGEN_DEVICE_FUNC void resize(const Sizes< Indices... > &dimensions)
Definition: Tensor.h:344
const Self & base() const
Definition: Tensor.h:109
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & coeff(Index firstIndex, Index secondIndex, IndexTypes... otherIndices) const
Definition: Tensor.h:112
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index linearizedIndex(const array< Index, NumIndices > &indices) const
Definition: Tensor.h:371
EIGEN_DEVICE_FUNC void resize(const array< Index, NumIndices > &dimensions)
Definition: Tensor.h:303
EIGEN_DEVICE_FUNC void resize(const Eigen::IndexList< FirstType, OtherTypes... > &dimensions)
Definition: Tensor.h:329
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef(const array< Index, NumIndices > &indices)
Definition: Tensor.h:149
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef(Index index)
Definition: Tensor.h:165
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(const array< Index, NumIndices > &dimensions)
Definition: Tensor.h:250
EIGEN_DEVICE_FUNC void resize(Index firstDimension, IndexTypes... otherDimensions)
Definition: Tensor.h:296
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & coeff(const array< Index, NumIndices > &indices) const
Definition: Tensor.h:120
Base::CoeffReturnType CoeffReturnType
Definition: Tensor.h:77
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & coeff(CustomIndices &indices) const
Definition: Tensor.h:127
bool checkIndexRange(const array< Index, NumIndices > &indices) const
Definition: Tensor.h:357
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & operator()(const array< Index, NumIndices > &indices) const
Definition: Tensor.h:184
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index size() const
Definition: Tensor.h:101
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & operator()(CustomIndices &indices) const
Definition: Tensor.h:179
Scalar & operator()(Index firstIndex, Index secondIndex, IndexTypes... otherIndices)
Definition: Tensor.h:205
static constexpr int Layout
Definition: Tensor.h:81
static constexpr int NumIndices
Definition: Tensor.h:83
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(const TensorBase< OtherDerived, WriteAccessors > &other)
Definition: Tensor.h:265
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef(CustomIndices &indices)
Definition: Tensor.h:156
Scalar & coeffRef(Index firstIndex, Index secondIndex, IndexTypes... otherIndices)
Definition: Tensor.h:142
TensorBase< Tensor< Scalar_, NumIndices_, Options_, IndexType_ > > Base
Definition: Tensor.h:71
Tensor< Scalar_, NumIndices_, Options_, IndexType_ > Self
Definition: Tensor.h:70
EIGEN_DEVICE_FUNC void resize()
Definition: Tensor.h:323
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & operator()(Index index)
Definition: Tensor.h:222
NumTraits< Scalar >::Real RealScalar
Definition: Tensor.h:76
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index dimension(std::size_t n) const
Definition: Tensor.h:99
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(CustomDimension &dimensions)
Definition: Tensor.h:339
Scalar_ Scalar
Definition: Tensor.h:75
internal::traits< Self >::Index Index
Definition: Tensor.h:74
Eigen::internal::nested< Self >::type Nested
Definition: Tensor.h:72
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(const TensorBase< OtherDerived, ReadOnlyAccessors > &other)
Definition: Tensor.h:256
static constexpr int Options
Definition: Tensor.h:82
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef()
Definition: Tensor.h:160
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar * data()
Definition: Tensor.h:102
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & coeff() const
Definition: Tensor.h:131
internal::traits< Self >::StorageKind StorageKind
Definition: Tensor.h:73
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rank() const
Definition: Tensor.h:98
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor & operator=(Self &&other)
Definition: Tensor.h:274
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & operator()(Index index) const
Definition: Tensor.h:188
@ CoordAccess
Definition: Tensor.h:79
@ IsAligned
Definition: Tensor.h:79
@ RawAccess
Definition: Tensor.h:79
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar & operator()() const
Definition: Tensor.h:193
static EIGEN_STRONG_INLINE void run(const Expression &expr, const Device &device=DefaultDevice())
Definition: TensorExecutor.h:92
@ ColMajor
Definition: Constants.h:318
@ DontAlign
Definition: Constants.h:324
@ RowMajor
Definition: Constants.h:320
constexpr EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE auto array_prod(const array< T, N > &arr) -> decltype(array_reduce< product_op, T, N >(arr, static_cast< T >(1)))
Definition: MoreMeta.h:497
constexpr EIGEN_STRONG_INLINE auto array_zip_and_reduce(array< A, N > a, array< B, N > b) -> decltype(h_array_zip_and_reduce< Reducer, Op, A, B, N >(a, b, typename gen_numeric_list< int, N >::type()))
Definition: MoreMeta.h:536
constexpr EIGEN_STRONG_INLINE auto array_apply_and_reduce(array< A, N > a) -> decltype(h_array_apply_and_reduce< Reducer, Op, A, N >(a, typename gen_numeric_list< int, N >::type()))
Definition: MoreMeta.h:564
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
std::array< T, N > array
Definition: EmulateArray.h:231
Definition: Eigen_Colamd.h:49
Definition: TensorDimensions.h:161
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfColMajor(const array< DenseIndex, NumDims > &indices) const
Definition: TensorDimensions.h:230
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfRowMajor(const array< DenseIndex, NumDims > &indices) const
Definition: TensorDimensions.h:234
Definition: TensorDeviceDefault.h:19
Definition: TensorIndexList.h:271
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: TensorDimensions.h:85
A cost model used to limit the number of threads used for evaluating tensor expression.
Definition: TensorEvaluator.h:31
static const bool is_int
Definition: Tensor.h:92
static const bool is_array
Definition: Tensor.h:91
static const bool value
Definition: Tensor.h:93
Definition: MoreMeta.h:422
Definition: TensorMeta.h:271
Definition: MoreMeta.h:383
Definition: MoreMeta.h:358
ref_selector< T >::type type
Definition: TensorTraits.h:153
Definition: ForwardDeclarations.h:21
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317