10 #ifndef EIGEN_PRODUCT_H
11 #define EIGEN_PRODUCT_H
18 template <
typename Lhs,
typename Rhs,
int Option,
typename StorageKind>
23 template <
typename Lhs,
typename Rhs,
int Option>
40 RowsAtCompileTime = LhsTraits::RowsAtCompileTime,
41 ColsAtCompileTime = RhsTraits::ColsAtCompileTime,
42 MaxRowsAtCompileTime = LhsTraits::MaxRowsAtCompileTime,
43 MaxColsAtCompileTime = RhsTraits::MaxColsAtCompileTime,
49 Flags = (MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1) ?
RowMajorBit
50 : (MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1) ? 0
69 template <
typename Xpr>
76 template <
typename Lhs,
typename Rhs>
81 template <typename Lhs, typename Rhs, int Option, int Kind = TransposeProductKind<Lhs, Rhs>::Kind>
100 template <
typename Lhs,
typename Rhs,
int Option>
130 template <
typename Lhs,
typename Rhs,
int Option>
155 template <
typename Lhs,
typename Rhs,
int Option>
197 template <
typename Lhs_,
typename Rhs_,
int Option>
200 typename internal::product_promote_storage_type<
201 typename internal::traits<Lhs_>::StorageKind, typename internal::traits<Rhs_>::StorageKind,
202 internal::product_type<Lhs_, Rhs_>::ret>::ret> {
224 "if you wanted a coeff-wise or a dot product use the respective explicit functions");
251 template <
typename Lhs,
typename Rhs,
int Option>
269 template <
typename Lhs,
typename Rhs,
int Option,
typename StorageKind>
275 template <
typename Lhs,
typename Rhs,
int Option>
284 IsOneByOne = (RowsAtCompileTime == 1 || RowsAtCompileTime ==
Dynamic) &&
285 (ColsAtCompileTime == 1 || ColsAtCompileTime ==
Dynamic),
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived)
Definition: Macros.h:1149
#define EIGEN_NOEXCEPT
Definition: Macros.h:1267
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
Definition: Macros.h:1171
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
Generic expression where a coefficient-wise unary operator is applied to an expression.
Definition: CwiseUnaryOp.h:53
Expression of the inverse of another expression.
Definition: Inverse.h:43
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Permutation matrix.
Definition: PermutationMatrix.h:280
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(Index i) const
Definition: Product.h:297
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(Index row, Index col) const
Definition: Product.h:290
internal::dense_product_base< Lhs, Rhs, Option > Base
Definition: Product.h:280
Product< Lhs, Rhs, Option > Derived
Definition: Product.h:277
Definition: Product.h:270
internal::generic_xpr_base< Product< Lhs, Rhs, Option >, MatrixXpr, StorageKind >::type Base
Definition: Product.h:272
Expression of the product of two arbitrary matrices or vectors.
Definition: Product.h:202
Lhs_ Lhs
Definition: Product.h:204
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: Product.h:227
internal::remove_all_t< LhsNested > LhsNestedCleaned
Definition: Product.h:216
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE AdjointReturnType adjoint() const
Definition: Product.h:236
typename internal::product_transpose_helper< Lhs, Rhs, Option >::AdjointType AdjointReturnType
Definition: Product.h:220
internal::remove_all_t< RhsNested > RhsNestedCleaned
Definition: Product.h:217
RhsNested m_rhs
Definition: Product.h:242
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const LhsNestedCleaned & lhs() const
Definition: Product.h:230
Rhs_ Rhs
Definition: Product.h:205
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const RhsNestedCleaned & rhs() const
Definition: Product.h:231
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TransposeReturnType transpose() const
Definition: Product.h:233
LhsNested m_lhs
Definition: Product.h:241
ProductImpl< Lhs, Rhs, Option, typename internal::product_promote_storage_type< typename internal::traits< Lhs >::StorageKind, typename internal::traits< Rhs >::StorageKind, internal::product_type< Lhs, Rhs >::ret >::ret >::Base Base
Definition: Product.h:211
internal::ref_selector< Rhs >::type RhsNested
Definition: Product.h:215
internal::ref_selector< Lhs >::type LhsNested
Definition: Product.h:214
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: Product.h:228
typename internal::product_transpose_helper< Lhs, Rhs, Option >::TransposeType TransposeReturnType
Definition: Product.h:219
Expression of the transpose of a matrix.
Definition: Transpose.h:56
internal::dense_xpr_base< ProductXpr >::type Base
Definition: Product.h:255
Product< Lhs, Rhs, Option > ProductXpr
Definition: Product.h:254
Base::Scalar Scalar
Definition: Product.h:259
Definition: Product.h:248
@ IsComplex
Definition: common.h:73
@ LazyProduct
Definition: Constants.h:504
@ InnerProduct
Definition: Constants.h:509
const unsigned int NoPreferredStorageOrderBit
Definition: Constants.h:182
const unsigned int RowMajorBit
Definition: Constants.h:70
Eigen::DenseIndex ret
Definition: level1_cplx_impl.h:43
@ Lhs
Definition: TensorContractionMapper.h:20
@ Rhs
Definition: TensorContractionMapper.h:20
constexpr int min_size_prefer_fixed(A a, B b)
Definition: Meta.h:683
typename remove_all< T >::type remove_all_t
Definition: Meta.h:142
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const int Dynamic
Definition: Constants.h:25
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56
type
Definition: compute_granudrum_aor.py:141
Definition: Eigen_Colamd.h:49
Definition: Constants.h:519
Definition: Constants.h:534
Determines whether the given binary operation of two numeric types is allowed and what the scalar ret...
Definition: XprHelper.h:1043
static constexpr int Kind
Definition: Product.h:71
@ Permutation
Definition: Product.h:63
@ Default
Definition: Product.h:61
@ MatrixMatrix
Definition: Product.h:64
@ MatrixPermutation
Definition: Product.h:65
@ Matrix
Definition: Product.h:62
static constexpr int Kind
Definition: Product.h:78
Definition: XprHelper.h:558
Definition: CoreEvaluators.h:104
Definition: XprHelper.h:575
Definition: XprHelper.h:990
Definition: XprHelper.h:993
typename DenseBase< Rhs >::ConstTransposeReturnType RhsTransposeType
Definition: Product.h:112
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE AdjointType run_adjoint(const Derived &derived)
Definition: Product.h:125
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TransposeType run_transpose(const Derived &derived)
Definition: Product.h:121
std::conditional_t< NumTraits< RhsScalar >::IsComplex, RhsConjugateTransposeType, RhsTransposeType > RhsAdjointType
Definition: Product.h:115
typename traits< Rhs >::Scalar RhsScalar
Definition: Product.h:111
typename DenseBase< Lhs >::ConstTransposeReturnType LhsTransposeType
Definition: Product.h:106
typename traits< Lhs >::Scalar LhsScalar
Definition: Product.h:105
std::conditional_t< NumTraits< LhsScalar >::IsComplex, LhsConjugateTransposeType, LhsTransposeType > LhsAdjointType
Definition: Product.h:109
typename PermutationBase< Rhs >::InverseReturnType RhsInverseType
Definition: Product.h:166
typename traits< Lhs >::Scalar LhsScalar
Definition: Product.h:160
std::conditional_t< NumTraits< LhsScalar >::IsComplex, LhsConjugateTransposeType, LhsTransposeType > LhsAdjointType
Definition: Product.h:164
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE AdjointType run_adjoint(const Derived &derived)
Definition: Product.h:176
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TransposeType run_transpose(const Derived &derived)
Definition: Product.h:172
typename DenseBase< Lhs >::ConstTransposeReturnType LhsTransposeType
Definition: Product.h:161
std::conditional_t< NumTraits< RhsScalar >::IsComplex, RhsConjugateTransposeType, RhsTransposeType > RhsAdjointType
Definition: Product.h:141
typename PermutationBase< Lhs >::InverseReturnType LhsInverseType
Definition: Product.h:135
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE AdjointType run_adjoint(const Derived &derived)
Definition: Product.h:151
typename DenseBase< Rhs >::ConstTransposeReturnType RhsTransposeType
Definition: Product.h:138
typename traits< Rhs >::Scalar RhsScalar
Definition: Product.h:137
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TransposeType run_transpose(const Derived &derived)
Definition: Product.h:147
std::conditional_t< NumTraits< Scalar >::IsComplex, ConjugateTransposeType, TransposeType > AdjointType
Definition: Product.h:88
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TransposeType run_transpose(const Derived &derived)
Definition: Product.h:91
Transpose< const Derived > TransposeType
Definition: Product.h:86
typename Derived::Scalar Scalar
Definition: Product.h:85
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE AdjointType run_adjoint(const Derived &derived)
Definition: Product.h:95
CwiseUnaryOp< scalar_conjugate_op< Scalar >, TransposeType > ConjugateTransposeType
Definition: Product.h:87
Definition: GeneralProduct.h:52
remove_all_t< Rhs > RhsCleaned
Definition: Product.h:26
MatrixXpr XprKind
Definition: Product.h:30
traits< LhsCleaned > LhsTraits
Definition: Product.h:27
traits< RhsCleaned > RhsTraits
Definition: Product.h:28
ScalarBinaryOpTraits< typename traits< LhsCleaned >::Scalar, typename traits< RhsCleaned >::Scalar >::ReturnType Scalar
Definition: Product.h:33
remove_all_t< Lhs > LhsCleaned
Definition: Product.h:25
promote_index_type< typename LhsTraits::StorageIndex, typename RhsTraits::StorageIndex >::type StorageIndex
Definition: Product.h:37
product_promote_storage_type< typename LhsTraits::StorageKind, typename RhsTraits::StorageKind, internal::product_type< Lhs, Rhs >::ret >::ret StorageKind
Definition: Product.h:35
Definition: ForwardDeclarations.h:21