Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags > Class Template Reference

#include <Symmetry.h>

Public Types

typedef Tensor_::Index Index
 
typedef Tensor_::Scalar Scalar
 

Public Member Functions

 tensor_symmetry_value_setter (Tensor_ &tensor, Symmetry_ const &symmetry, std::array< Index, NumIndices > const &indices)
 
tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags > & operator= (Scalar const &value)
 

Static Public Attributes

constexpr static std::size_t NumIndices = Tensor_::NumIndices
 

Private Member Functions

void doAssign (Scalar const &value)
 

Private Attributes

Tensor_ & m_tensor
 
Symmetry_ m_symmetry
 
std::array< Index, NumIndicesm_indices
 

Member Typedef Documentation

◆ Index

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
typedef Tensor_::Index Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::Index

◆ Scalar

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
typedef Tensor_::Scalar Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::Scalar

Constructor & Destructor Documentation

◆ tensor_symmetry_value_setter()

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::tensor_symmetry_value_setter ( Tensor_ &  tensor,
Symmetry_ const &  symmetry,
std::array< Index, NumIndices > const &  indices 
)
inline
304  : m_tensor(tensor), m_symmetry(symmetry), m_indices(indices) {}
Tensor_ & m_tensor
Definition: Symmetry.h:312
std::array< Index, NumIndices > m_indices
Definition: Symmetry.h:314
Symmetry_ m_symmetry
Definition: Symmetry.h:313

Member Function Documentation

◆ doAssign()

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
void Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::doAssign ( Scalar const &  value)
inlineprivate
316  {
317 #ifdef EIGEN_TENSOR_SYMMETRY_CHECK_VALUES
318  int value_flags = m_symmetry.template apply<internal::tensor_symmetry_calculate_flags<Tensor_>, int>(
319  m_indices, m_symmetry.globalFlags(), m_indices);
320  if (value_flags & GlobalRealFlag) eigen_assert(numext::imag(value) == 0);
321  if (value_flags & GlobalImagFlag) eigen_assert(numext::real(value) == 0);
322 #endif
323  m_symmetry.template apply<internal::tensor_symmetry_assign_value<Tensor_>, int>(m_indices, 0, m_tensor, value);
324  }
AnnoyingScalar imag(const AnnoyingScalar &)
Definition: AnnoyingScalar.h:132
#define eigen_assert(x)
Definition: Macros.h:910
float real
Definition: datatypes.h:10
squared absolute value
Definition: GlobalFunctions.h:87
@ GlobalRealFlag
Definition: Symmetry.h:20
@ GlobalImagFlag
Definition: Symmetry.h:20

References eigen_assert, Eigen::GlobalImagFlag, Eigen::GlobalRealFlag, imag(), Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::m_indices, Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::m_symmetry, Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::m_tensor, and Eigen::value.

Referenced by Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::operator=().

◆ operator=()

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
tensor_symmetry_value_setter<Tensor_, Symmetry_, Flags>& Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::operator= ( Scalar const &  value)
inline
306  {
307  doAssign(value);
308  return *this;
309  }
void doAssign(Scalar const &value)
Definition: Symmetry.h:316

References Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::doAssign(), and Eigen::value.

Member Data Documentation

◆ m_indices

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
std::array<Index, NumIndices> Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::m_indices
private

◆ m_symmetry

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
Symmetry_ Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::m_symmetry
private

◆ m_tensor

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
Tensor_& Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::m_tensor
private

◆ NumIndices

template<typename Tensor_ , typename Symmetry_ , int Flags = 0>
constexpr static std::size_t Eigen::internal::tensor_symmetry_value_setter< Tensor_, Symmetry_, Flags >::NumIndices = Tensor_::NumIndices
staticconstexpr

The documentation for this class was generated from the following file: