120 inline const Tensor & base()
const
141 assert(
n <= NumIndices &&
"n is larger than the dimension of the tensor.");
142 return m_dimensions[
n];
147 return m_storage.size();
152 return m_storage.data();
157 return m_storage.data();
163 return setConstant(
Scalar(0));
169 m_storage.setConstant(
val);
176 m_storage.setRandom();
186 : m_storage(
other.m_storage)
187 , m_dimensions(
other.m_dimensions)
194 m_dimensions[0] =
dim1;
201 m_dimensions[0] =
dim1;
202 m_dimensions[1] =
dim2;
209 m_dimensions[0] =
dim1;
210 m_dimensions[1] =
dim2;
211 m_dimensions[2] =
dim3;
218 m_dimensions[0] =
dim1;
219 m_dimensions[1] =
dim2;
220 m_dimensions[2] =
dim3;
221 m_dimensions[3] =
dim4;
229 m_dimensions[0] =
dim1;
230 m_dimensions[1] =
dim2;
231 m_dimensions[2] =
dim3;
232 m_dimensions[3] =
dim4;
233 m_dimensions[4] =
dim5;
241 return m_storage.coeff(
i0);
248 return m_storage.coeff(
i0 +
i1 * m_dimensions[0]);
255 return m_storage.coeff(
i0 +
i1 * m_dimensions[0] +
i2 * m_dimensions[1] * m_dimensions[0]);
263 i0 +
i1 * m_dimensions[0] +
i2 * m_dimensions[1] * m_dimensions[0]
264 +
i3 * m_dimensions[2] * m_dimensions[1] * m_dimensions[0]);
273 i0 +
i1 * m_dimensions[0] +
i2 * m_dimensions[1] * m_dimensions[0]
274 +
i3 * m_dimensions[2] * m_dimensions[1] * m_dimensions[0]
275 +
i4 * m_dimensions[3] * m_dimensions[2] * m_dimensions[1] * m_dimensions[0]);
283 for (
i = 0;
i < NumIndices;
i++)
285 Eigen::internal::check_rows_cols_for_overflow<Eigen::Dynamic>::run(size, dimensions[
i]);
286 size *= dimensions[
i];
289 for (
i = 0;
i < NumIndices;
i++)
290 m_dimensions[
i] = dimensions[
i];
294 m_storage.resize(size);
296 #ifdef EIGEN_INITIALIZE_COEFFS
299 #if defined(EIGEN_INITIALIZE_MATRICES_BY_ZERO)
300 m_storage.fill(
Scalar(0));
301 #elif defined(EIGEN_INITIALIZE_MATRICES_BY_NAN)
302 m_storage.fill(std::numeric_limits<Scalar>::quiet_NaN());
308 EIGEN_DEVICE_FUNC
bool operator==(
const Tensor &
other)
const
310 return m_storage ==
other.m_storage;
313 EIGEN_DEVICE_FUNC
bool operator!=(
const Tensor &
other)
const
315 return m_storage !=
other.m_storage;
319 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Options> StorageType;
320 StorageType m_storage;