11#ifndef EIGEN_TENSOR_TENSOR_INITIALIZER_H
12#define EIGEN_TENSOR_TENSOR_INITIALIZER_H
14#include <initializer_list>
17#include "./InternalHeaderCheck.h"
28template <
typename Derived,
int N>
30 typedef std::initializer_list<
typename Initializer<Derived, N - 1>::InitList> InitList;
33 Eigen::array<
typename traits<Derived>::Index, traits<Derived>::NumDimensions>* indices,
34 const InitList& vals) {
36 for (
const auto& v : vals) {
37 (*indices)[traits<Derived>::NumDimensions - N] = i++;
38 Initializer<Derived, N - 1>::run(tensor, indices, v);
43template <
typename Derived>
45 typedef std::initializer_list<typename traits<Derived>::Scalar> InitList;
48 Eigen::array<
typename traits<Derived>::Index, traits<Derived>::NumDimensions>* indices,
49 const InitList& vals) {
52 for (
const auto& v : vals) {
53 (*indices)[traits<Derived>::NumDimensions - 1] = i++;
54 tensor.coeffRef(*indices) = v;
59template <
typename Derived>
61 typedef typename traits<Derived>::Scalar InitList;
63 static void run(TensorEvaluator<Derived, DefaultDevice>& tensor,
64 Eigen::array<
typename traits<Derived>::Index, traits<Derived>::NumDimensions>*,
const InitList& v) {
65 tensor.coeffRef(0) = v;
69template <
typename Derived,
int N>
70void initialize_tensor(TensorEvaluator<Derived, DefaultDevice>& tensor,
71 const typename Initializer<Derived, traits<Derived>::NumDimensions>::InitList& vals) {
72 Eigen::array<typename traits<Derived>::Index, traits<Derived>::NumDimensions> indices;
Namespace containing all symbols from the Eigen library.
The tensor evaluator class.
Definition TensorEvaluator.h:47
Helper template to initialize Tensors from std::initializer_lists.
Definition TensorInitializer.h:29