MOAB
4.9.3pre
|
#include <ProductEvaluators.h>
Public Types | |
enum | { CoeffReadCost = NumTraits<Scalar>::MulCost + evaluator<MatrixType>::CoeffReadCost + evaluator<DiagonalType>::CoeffReadCost, MatrixFlags = evaluator<MatrixType>::Flags, DiagFlags = evaluator<DiagonalType>::Flags, _StorageOrder = MatrixFlags & RowMajorBit ? RowMajor : ColMajor, _ScalarAccessOnDiag, _SameTypes = is_same<typename MatrixType::Scalar, typename DiagonalType::Scalar>::value, _Vectorizable = bool(int(MatrixFlags)&PacketAccessBit) && _SameTypes && (_ScalarAccessOnDiag || (bool(int(DiagFlags)&PacketAccessBit))), _LinearAccessMask = (MatrixType::RowsAtCompileTime==1 || MatrixType::ColsAtCompileTime==1) ? LinearAccessBit : 0, Flags = ((HereditaryBits|_LinearAccessMask) & (unsigned int)(MatrixFlags)) | (_Vectorizable ? PacketAccessBit : 0), Alignment = evaluator<MatrixType>::Alignment } |
typedef scalar_product_traits < typename MatrixType::Scalar, typename DiagonalType::Scalar > ::ReturnType | Scalar |
Public Member Functions | |
diagonal_product_evaluator_base (const MatrixType &mat, const DiagonalType &diag) | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar | coeff (Index idx) const |
Protected Member Functions | |
template<int LoadMode, typename PacketType > | |
EIGEN_STRONG_INLINE PacketType | packet_impl (Index row, Index col, Index id, internal::true_type) const |
template<int LoadMode, typename PacketType > | |
EIGEN_STRONG_INLINE PacketType | packet_impl (Index row, Index col, Index id, internal::false_type) const |
Protected Attributes | |
evaluator< DiagonalType > | m_diagImpl |
evaluator< MatrixType > | m_matImpl |
Definition at line 724 of file ProductEvaluators.h.
typedef scalar_product_traits<typename MatrixType::Scalar, typename DiagonalType::Scalar>::ReturnType Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::Scalar |
anonymous enum |
CoeffReadCost | |
MatrixFlags | |
DiagFlags | |
_StorageOrder | |
_ScalarAccessOnDiag | |
_SameTypes | |
_Vectorizable | |
_LinearAccessMask | |
Flags | |
Alignment |
Definition at line 729 of file ProductEvaluators.h.
{ CoeffReadCost = NumTraits<Scalar>::MulCost + evaluator<MatrixType>::CoeffReadCost + evaluator<DiagonalType>::CoeffReadCost, MatrixFlags = evaluator<MatrixType>::Flags, DiagFlags = evaluator<DiagonalType>::Flags, _StorageOrder = MatrixFlags & RowMajorBit ? RowMajor : ColMajor, _ScalarAccessOnDiag = !((int(_StorageOrder) == ColMajor && int(ProductOrder) == OnTheLeft) ||(int(_StorageOrder) == RowMajor && int(ProductOrder) == OnTheRight)), _SameTypes = is_same<typename MatrixType::Scalar, typename DiagonalType::Scalar>::value, // FIXME currently we need same types, but in the future the next rule should be the one //_Vectorizable = bool(int(MatrixFlags)&PacketAccessBit) && ((!_PacketOnDiag) || (_SameTypes && bool(int(DiagFlags)&PacketAccessBit))), _Vectorizable = bool(int(MatrixFlags)&PacketAccessBit) && _SameTypes && (_ScalarAccessOnDiag || (bool(int(DiagFlags)&PacketAccessBit))), _LinearAccessMask = (MatrixType::RowsAtCompileTime==1 || MatrixType::ColsAtCompileTime==1) ? LinearAccessBit : 0, Flags = ((HereditaryBits|_LinearAccessMask) & (unsigned int)(MatrixFlags)) | (_Vectorizable ? PacketAccessBit : 0), Alignment = evaluator<MatrixType>::Alignment };
Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::diagonal_product_evaluator_base | ( | const MatrixType & | mat, |
const DiagonalType & | diag | ||
) | [inline] |
Definition at line 746 of file ProductEvaluators.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::coeff | ( | Index | idx | ) | const [inline] |
Definition at line 753 of file ProductEvaluators.h.
{ return m_diagImpl.coeff(idx) * m_matImpl.coeff(idx); }
EIGEN_STRONG_INLINE PacketType Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::packet_impl | ( | Index | row, |
Index | col, | ||
Index | id, | ||
internal::true_type | |||
) | const [inline, protected] |
Definition at line 760 of file ProductEvaluators.h.
{ return internal::pmul(m_matImpl.template packet<LoadMode,PacketType>(row, col), internal::pset1<PacketType>(m_diagImpl.coeff(id))); }
EIGEN_STRONG_INLINE PacketType Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::packet_impl | ( | Index | row, |
Index | col, | ||
Index | id, | ||
internal::false_type | |||
) | const [inline, protected] |
Definition at line 767 of file ProductEvaluators.h.
{ enum { InnerSize = (MatrixType::Flags & RowMajorBit) ? MatrixType::ColsAtCompileTime : MatrixType::RowsAtCompileTime, DiagonalPacketLoadMode = EIGEN_PLAIN_ENUM_MIN(LoadMode,((InnerSize%16) == 0) ? int(Aligned16) : int(evaluator<DiagonalType>::Alignment)) // FIXME hardcoded 16!! }; return internal::pmul(m_matImpl.template packet<LoadMode,PacketType>(row, col), m_diagImpl.template packet<DiagonalPacketLoadMode,PacketType>(id)); }
evaluator<DiagonalType> Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::m_diagImpl [protected] |
Definition at line 777 of file ProductEvaluators.h.
evaluator<MatrixType> Eigen::internal::diagonal_product_evaluator_base< MatrixType, DiagonalType, Derived, ProductOrder >::m_matImpl [protected] |
Definition at line 778 of file ProductEvaluators.h.