12 #ifndef EIGEN_PRODUCTEVALUATORS_H
13 #define EIGEN_PRODUCTEVALUATORS_H
30 template <
typename Lhs,
typename Rhs,
int Options>
40 template <
typename Lhs,
typename Rhs,
typename Scalar1,
typename Scalar2,
typename Plain1>
42 const
CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>,
43 const
Product<Lhs, Rhs, DefaultProduct>>> {
46 template <
typename Lhs,
typename Rhs,
typename Scalar1,
typename Scalar2,
typename Plain1>
48 const
CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>,
49 const
Product<Lhs, Rhs, DefaultProduct>>>
50 :
public evaluator<Product<EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar1, Lhs, product), Rhs, DefaultProduct>> {
58 :
Base(xpr.lhs().functor().m_other * xpr.rhs().lhs() * xpr.rhs().rhs()) {}
61 template <
typename Lhs,
typename Rhs,
int DiagIndex>
63 :
public evaluator<Diagonal<const Product<Lhs, Rhs, LazyProduct>, DiagIndex>> {
75 template <typename Lhs, typename Rhs, typename LhsShape = typename evaluator_traits<Lhs>::Shape,
80 template <
typename Lhs,
typename Rhs>
87 template <
typename Lhs,
typename Rhs,
int Options,
int ProductTag,
typename LhsShape,
typename RhsShape>
89 :
public evaluator<typename Product<Lhs, Rhs, Options>::PlainObject> {
97 internal::construct_at<Base>(
this, m_result);
123 template <
typename DstXprType,
typename Lhs,
typename Rhs,
int Options,
typename Scalar>
125 std::enable_if_t<(Options == DefaultProduct || Options == AliasFreeProduct)>> {
131 if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
138 template <
typename DstXprType,
typename Lhs,
typename Rhs,
int Options,
typename Scalar>
140 std::enable_if_t<(Options == DefaultProduct || Options == AliasFreeProduct)>> {
151 template <
typename DstXprType,
typename Lhs,
typename Rhs,
int Options,
typename Scalar>
153 std::enable_if_t<(Options == DefaultProduct || Options == AliasFreeProduct)>> {
166 template <
typename DstXprType,
typename Lhs,
typename Rhs,
typename AssignFunc,
typename Scalar,
typename ScalarBis,
170 const
CwiseNullaryOp<internal::scalar_constant_op<ScalarBis>, Plain>,
171 const
Product<Lhs, Rhs, DefaultProduct>>,
178 const AssignFunc&
func) {
187 template <
typename OtherXpr,
typename Lhs,
typename Rhs>
190 internal::
scalar_sum_op<typename OtherXpr::Scalar, typename Product<Lhs, Rhs, DefaultProduct>::Scalar>,
191 const OtherXpr, const
Product<Lhs, Rhs, DefaultProduct>>,
196 template <
typename OtherXpr,
typename Lhs,
typename Rhs>
200 const OtherXpr, const
Product<Lhs, Rhs, DefaultProduct>>,
205 template <
typename DstXprType,
typename OtherXpr,
typename ProductType,
typename Func1,
typename Func2>
207 template <
typename SrcXprType,
typename InitialFunc>
209 const InitialFunc& ) {
215 #define EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(ASSIGN_OP, BINOP, ASSIGN_OP2) \
216 template <typename DstXprType, typename OtherXpr, typename Lhs, typename Rhs, typename DstScalar, \
217 typename SrcScalar, typename OtherScalar, typename ProdScalar> \
218 struct Assignment<DstXprType, \
219 CwiseBinaryOp<internal::BINOP<OtherScalar, ProdScalar>, const OtherXpr, \
220 const Product<Lhs, Rhs, DefaultProduct>>, \
221 internal::ASSIGN_OP<DstScalar, SrcScalar>, Dense2Dense> \
222 : assignment_from_xpr_op_product<DstXprType, OtherXpr, Product<Lhs, Rhs, DefaultProduct>, \
223 internal::ASSIGN_OP<DstScalar, OtherScalar>, \
224 internal::ASSIGN_OP2<DstScalar, ProdScalar>> {}
236 template <
typename Lhs,
typename Rhs>
239 template <
typename Dst>
241 dst.coeffRef(0, 0) =
impl::run(lhs, rhs);
244 template <
typename Dst>
246 dst.coeffRef(0, 0) +=
impl::run(lhs, rhs);
249 template <
typename Dst>
251 dst.coeffRef(0, 0) -=
impl::run(lhs, rhs);
260 template <
typename Dst,
typename Lhs,
typename Rhs,
typename Func>
272 template <
typename Dst,
typename Lhs,
typename Rhs,
typename Func>
283 template <
typename Lhs,
typename Rhs>
285 template <
typename T>
286 struct is_row_major : std::conditional_t<(int(T::Flags) & RowMajorBit), internal::true_type, internal::false_type> {};
291 template <
typename Dst,
typename Src>
293 dst.const_cast_derived() = src;
297 template <
typename Dst,
typename Src>
299 dst.const_cast_derived() += src;
303 template <
typename Dst,
typename Src>
305 dst.const_cast_derived() -= src;
311 template <
typename Dst,
typename Src>
313 dst.const_cast_derived() += m_scale * src;
317 template <
typename Dst>
322 template <
typename Dst>
327 template <
typename Dst>
332 template <
typename Dst>
340 template <
typename Lhs,
typename Rhs,
typename Derived>
344 template <
typename Dst>
350 template <
typename Dst>
355 template <
typename Dst>
360 template <
typename Dst>
363 Derived::scaleAndAddTo(dst, lhs, rhs,
alpha);
367 template <
typename Lhs,
typename Rhs>
376 template <
typename Dest>
380 if (lhs.rows() == 1 && rhs.cols() == 1) {
381 dst.coeffRef(0, 0) +=
alpha * lhs.row(0).conjugate().dot(rhs.col(0));
393 template <
typename Lhs,
typename Rhs>
397 template <
typename Dst>
404 template <
typename Dst>
410 template <
typename Dst>
430 template <
typename Dst,
typename Func>
440 Scalar actualAlpha = combine_scalar_factors<Scalar>(lhs, rhs);
444 std::conditional_t<HasScalarFactor, true_type, false_type>());
448 template <
typename Dst,
typename LhsT,
typename RhsT,
typename Func,
typename Scalar>
457 template <
typename Dst,
typename LhsT,
typename RhsT,
typename Func,
typename Scalar>
465 template <
typename Lhs,
typename Rhs>
475 template <
int Traversal,
int UnrollingIndex,
typename Lhs,
typename Rhs,
typename RetScalar>
478 template <
int StorageOrder,
int UnrollingIndex,
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
481 template <
typename Lhs,
typename Rhs,
int ProductTag>
495 m_innerDim(xpr.lhs().
cols()) {
500 std::cerr <<
"LhsOuterStrideBytes= " << LhsOuterStrideBytes <<
"\n";
501 std::cerr <<
"RhsOuterStrideBytes= " << RhsOuterStrideBytes <<
"\n";
502 std::cerr <<
"LhsAlignment= " << LhsAlignment <<
"\n";
503 std::cerr <<
"RhsAlignment= " << RhsAlignment <<
"\n";
504 std::cerr <<
"CanVectorizeLhs= " << CanVectorizeLhs <<
"\n";
505 std::cerr <<
"CanVectorizeRhs= " << CanVectorizeRhs <<
"\n";
506 std::cerr <<
"CanVectorizeInner= " << CanVectorizeInner <<
"\n";
507 std::cerr <<
"EvalToRowMajor= " << EvalToRowMajor <<
"\n";
508 std::cerr <<
"Alignment= " << Alignment <<
"\n";
509 std::cerr <<
"Flags= " <<
Flags <<
"\n";
525 RowsAtCompileTime = LhsNestedCleaned::RowsAtCompileTime,
526 ColsAtCompileTime = RhsNestedCleaned::ColsAtCompileTime,
528 MaxRowsAtCompileTime = LhsNestedCleaned::MaxRowsAtCompileTime,
529 MaxColsAtCompileTime = RhsNestedCleaned::MaxColsAtCompileTime
537 LhsCoeffReadCost = LhsEtorType::CoeffReadCost,
538 RhsCoeffReadCost = RhsEtorType::CoeffReadCost,
547 LhsFlags = LhsEtorType::Flags,
548 RhsFlags = RhsEtorType::Flags,
564 CanVectorizeRhs =
bool(RhsRowMajor) && (RhsFlags &
PacketAccessBit) && (ColsAtCompileTime != 1),
565 CanVectorizeLhs = (!LhsRowMajor) && (LhsFlags &
PacketAccessBit) && (RowsAtCompileTime != 1),
567 EvalToRowMajor = (MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1) ? 1
568 : (MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1)
570 : (
bool(RhsRowMajor) && !CanVectorizeLhs),
575 | (SameType && (CanVectorizeLhs || CanVectorizeRhs) ?
PacketAccessBit : 0) |
578 LhsOuterStrideBytes =
580 RhsOuterStrideBytes =
583 Alignment =
bool(CanVectorizeLhs)
584 ? (LhsOuterStrideBytes <= 0 || (
int(LhsOuterStrideBytes) %
plain_enum_max(1, LhsAlignment)) != 0
587 :
bool(CanVectorizeRhs)
588 ? (RhsOuterStrideBytes <= 0 || (
int(RhsOuterStrideBytes) %
plain_enum_max(1, RhsAlignment)) != 0
598 CanVectorizeInner = SameType && LhsRowMajor && (!RhsRowMajor) &&
604 return (m_lhs.row(
row).transpose().cwiseProduct(m_rhs.col(
col))).sum();
612 const Index row = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime == 1) ? 0 : index;
613 const Index col = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime == 1) ? index : 0;
614 return (m_lhs.row(
row).transpose().cwiseProduct(m_rhs.col(
col))).sum();
617 template <
int LoadMode,
typename PacketType>
627 template <
int LoadMode,
typename PacketType>
629 const Index row = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime == 1) ? 0 : index;
630 const Index col = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime == 1) ? index : 0;
631 return packet<LoadMode, PacketType>(
row,
col);
645 template <
typename Lhs,
typename Rhs>
647 :
product_evaluator<Product<Lhs, Rhs, LazyProduct>, CoeffBasedProductMode, DenseShape, DenseShape> {
660 template <
int UnrollingIndex,
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
667 rhs.template packet<LoadMode, Packet>(
Index(UnrollingIndex - 1),
col),
res);
671 template <
int UnrollingIndex,
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
677 res =
pmadd(lhs.template packet<LoadMode, Packet>(
row,
Index(UnrollingIndex - 1)),
678 pset1<Packet>(rhs.coeff(
Index(UnrollingIndex - 1),
col)),
res);
682 template <
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
690 template <
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
698 template <
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
706 template <
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
714 template <
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
719 for (
Index i = 0;
i < innerDim; ++
i)
720 res =
pmadd(pset1<Packet>(lhs.coeff(
row,
i)), rhs.template packet<LoadMode, Packet>(
i,
col),
res);
724 template <
typename Lhs,
typename Rhs,
typename Packet,
int LoadMode>
729 for (
Index i = 0;
i < innerDim; ++
i)
730 res =
pmadd(lhs.template packet<LoadMode, Packet>(
row,
i), pset1<Packet>(rhs.coeff(
i,
col)),
res);
737 template <
int Mode,
bool LhsIsTriangular,
typename Lhs,
bool LhsIsVector,
typename Rhs,
bool RhsIsVector>
740 template <
typename Lhs,
typename Rhs,
int ProductTag>
745 template <
typename Dest>
748 dst, lhs.nestedExpression(), rhs,
alpha);
752 template <
typename Lhs,
typename Rhs,
int ProductTag>
757 template <
typename Dest>
760 dst, lhs, rhs.nestedExpression(),
alpha);
767 template <
typename Lhs,
int LhsMode,
bool LhsIsVector,
typename Rhs,
int RhsMode,
bool RhsIsVector>
770 template <
typename Lhs,
typename Rhs,
int ProductTag>
775 template <
typename Dest>
778 dst, lhs.nestedExpression(), rhs,
alpha);
782 template <
typename Lhs,
typename Rhs,
int ProductTag>
787 template <
typename Dest>
790 dst, lhs, rhs.nestedExpression(),
alpha);
798 template <
typename MatrixType,
typename DiagonalType,
typename Derived,
int ProductOrder>
810 StorageOrder_ = (Derived::MaxRowsAtCompileTime == 1 && Derived::MaxColsAtCompileTime != 1) ?
RowMajor
811 : (Derived::MaxColsAtCompileTime == 1 && Derived::MaxRowsAtCompileTime != 1) ?
ColMajor
826 (MatrixType::RowsAtCompileTime == 1 || MatrixType::ColsAtCompileTime == 1) ?
LinearAccessBit : 0,
832 (DiagonalType::SizeAtCompileTime == 1) ||
833 (DiagonalType::SizeAtCompileTime ==
Dynamic && MatrixType::RowsAtCompileTime == 1 &&
835 (DiagonalType::SizeAtCompileTime ==
Dynamic && MatrixType::ColsAtCompileTime == 1 && ProductOrder ==
OnTheRight)
852 template <
int LoadMode,
typename PacketType>
855 internal::pset1<PacketType>(
m_diagImpl.coeff(
id)));
858 template <
int LoadMode,
typename PacketType>
861 InnerSize = (MatrixType::Flags &
RowMajorBit) ? MatrixType::ColsAtCompileTime : MatrixType::RowsAtCompileTime,
867 m_diagImpl.template packet<DiagonalPacketLoadMode, PacketType>(
id));
875 template <
typename Lhs,
typename Rhs,
int ProductKind,
int ProductTag>
883 using Base::m_diagImpl;
884 using Base::m_matImpl;
891 enum { StorageOrder = Base::StorageOrder_ };
896 return m_diagImpl.coeff(
row) * m_matImpl.coeff(
row,
col);
900 template <
int LoadMode,
typename PacketType>
904 return this->
template packet_impl<LoadMode, PacketType>(
908 template <
int LoadMode,
typename PacketType>
910 return packet<LoadMode, PacketType>(
int(StorageOrder) ==
ColMajor ? idx : 0,
911 int(StorageOrder) ==
ColMajor ? 0 : idx);
917 template <
typename Lhs,
typename Rhs,
int ProductKind,
int ProductTag>
925 using Base::m_diagImpl;
926 using Base::m_matImpl;
932 enum { StorageOrder = Base::StorageOrder_ };
937 return m_matImpl.coeff(
row,
col) * m_diagImpl.coeff(
col);
941 template <
int LoadMode,
typename PacketType>
943 return this->
template packet_impl<LoadMode, PacketType>(
947 template <
int LoadMode,
typename PacketType>
949 return packet<LoadMode, PacketType>(
int(StorageOrder) ==
ColMajor ? idx : 0,
950 int(StorageOrder) ==
ColMajor ? 0 : idx);
964 template <
typename ExpressionType,
int S
ide,
bool Transposed,
typename ExpressionShape>
967 template <
typename ExpressionType,
int S
ide,
bool Transposed>
972 template <
typename Dest,
typename PermutationType>
974 const ExpressionType& xpr) {
985 while (
r < perm.size()) {
987 while (
r < perm.size() && mask[
r])
r++;
988 if (
r >= perm.size())
break;
993 for (
Index k = perm.indices().coeff(k0);
k != k0;
k = perm.indices().coeff(
k)) {
999 : Dest::ColsAtCompileTime > (dst, ((
Side ==
OnTheLeft) ^ Transposed) ? k0 : kPrev));
1008 dst, ((
Side ==
OnTheLeft) ^ Transposed) ? perm.indices().coeff(
i) :
i)
1013 Side ==
OnTheLeft ? 1 : MatrixTypeCleaned::RowsAtCompileTime,
1015 : MatrixTypeCleaned::ColsAtCompileTime >
1022 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1024 template <
typename Dest>
1030 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1032 template <
typename Dest>
1038 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1040 template <
typename Dest>
1046 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1048 template <
typename Dest>
1064 template <
typename ExpressionType,
int S
ide,
bool Transposed,
typename ExpressionShape>
1069 template <
typename Dest,
typename TranspositionType>
1071 const ExpressionType& xpr) {
1073 typedef typename TranspositionType::StorageIndex StorageIndex;
1079 for (
Index k = (Transposed ?
size - 1 : 0); Transposed ?
k >= 0 :
k <
size; Transposed ? --
k : ++
k)
1082 dst.row(
k).
swap(dst.row(
j));
1084 dst.col(
k).swap(dst.col(
j));
1089 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1091 template <
typename Dest>
1097 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1099 template <
typename Dest>
1105 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1107 template <
typename Dest>
1113 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1115 template <
typename Dest>
1125 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1127 template <
typename Dest>
1134 template <
typename Lhs,
typename Rhs,
int ProductTag,
typename MatrixShape>
1136 template <
typename Dest>
1143 template <
typename Lhs,
typename Rhs,
int ProductTag>
1145 template <
typename Dest>
1148 ProductTag>::evalTo(dst, lhs, rhs);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
#define eigen_internal_assert(x)
Definition: Macros.h:916
#define EIGEN_UNUSED_VARIABLE(var)
Definition: Macros.h:966
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define ei_declare_local_nested_eval(XPR_T, XPR, N, NAME)
Definition: Memory.h:812
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
#define EIGEN_UNROLLING_LIMIT
Definition: Settings.h:23
#define EIGEN_INTERNAL_CHECK_COST_VALUE(C)
Definition: StaticAssert.h:101
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
Expression of a fixed-size or dynamic-size block.
Definition: Block.h:110
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:79
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const RhsNested_ & rhs() const
Definition: CwiseBinaryOp.h:125
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const LhsNested_ & lhs() const
Definition: CwiseBinaryOp.h:123
Generic expression of a matrix where all coefficients are defined by a functor.
Definition: CwiseNullaryOp.h:64
Expression of a diagonal/subdiagonal/superdiagonal in a matrix.
Definition: Diagonal.h:68
Expression of the inverse of another expression.
Definition: Inverse.h:43
EIGEN_DEVICE_FUNC const XprTypeNestedCleaned & nestedExpression() const
Definition: Inverse.h:57
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition: PlainObjectBase.h:217
Expression of the product of two arbitrary matrices or vectors.
Definition: Product.h:202
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: Product.h:227
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const LhsNestedCleaned & lhs() const
Definition: Product.h:230
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const RhsNestedCleaned & rhs() const
Definition: Product.h:231
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: Product.h:228
Scalar coeff(Index row, Index col) const
Definition: SparseMatrix.h:211
void swap(SparseMatrix &other)
Definition: SparseMatrix.h:829
Index cols() const
Definition: SparseMatrix.h:161
Index rows() const
Definition: SparseMatrix.h:159
Expression of the transpose of a matrix.
Definition: Transpose.h:56
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all_t< MatrixTypeNested > & nestedExpression() const
Definition: Transpose.h:72
void diagonal(const MatrixType &m)
Definition: diagonal.cpp:13
@ GemvProduct
Definition: Constants.h:510
@ LazyProduct
Definition: Constants.h:504
@ InnerProduct
Definition: Constants.h:509
@ DefaultProduct
Definition: Constants.h:503
@ CoeffBasedProductMode
Definition: Constants.h:506
@ OuterProduct
Definition: Constants.h:508
@ LazyCoeffBasedProductMode
Definition: Constants.h:507
@ Aligned16
Definition: Constants.h:237
@ ColMajor
Definition: Constants.h:318
@ RowMajor
Definition: Constants.h:320
@ OnTheLeft
Definition: Constants.h:331
@ OnTheRight
Definition: Constants.h:333
const unsigned int PacketAccessBit
Definition: Constants.h:97
const unsigned int LinearAccessBit
Definition: Constants.h:133
const unsigned int EvalBeforeNestingBit
Definition: Constants.h:74
const unsigned int RowMajorBit
Definition: Constants.h:70
RealScalar s
Definition: level1_cplx_impl.h:130
RealScalar alpha
Definition: level1_cplx_impl.h:151
func(actual_m, actual_n, a, *lda, actual_b, 1, actual_c, 1, alpha)
const char const char const char * diag
Definition: level2_impl.h:86
char char char int int * k
Definition: level2_impl.h:374
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_restricted_packet_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:833
constexpr int plain_enum_min(A a, B b)
Definition: Meta.h:649
@ Lhs
Definition: TensorContractionMapper.h:20
@ Rhs
Definition: TensorContractionMapper.h:20
constexpr int plain_enum_max(A a, B b)
Definition: Meta.h:656
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(assign_op, scalar_sum_op, add_assign_op)
constexpr int min_size_prefer_fixed(A a, B b)
Definition: Meta.h:683
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: AltiVec/PacketMath.h:1218
EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf &a, const Packet4cf &b)
Definition: AVX/Complex.h:88
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void call_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:812
void EIGEN_DEVICE_FUNC outer_product_selector_run(Dst &dst, const Lhs &lhs, const Rhs &rhs, const Func &func, const false_type &)
Definition: ProductEvaluators.h:261
typename remove_all< T >::type remove_all_t
Definition: Meta.h:142
EIGEN_DEVICE_FUNC bool is_same_dense(const T1 &mat1, const T2 &mat2, std::enable_if_t< possibly_same_dense< T1, T2 >::value > *=0)
Definition: XprHelper.h:869
void swap(scoped_array< T > &a, scoped_array< T > &b)
Definition: Memory.h:734
typename add_const_on_value_type< T >::type add_const_on_value_type_t
Definition: Meta.h:274
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool is_exactly_one(const X &x)
Definition: Meta.h:601
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
const unsigned int ActualPacketAccessBit
Definition: Constants.h:110
auto run(Kernel kernel, Args &&... args) -> decltype(kernel(args...))
Definition: gpu_test_helper.h:414
const unsigned int HereditaryBits
Definition: Constants.h:198
const int HugeCost
Definition: Constants.h:48
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
Definition: Eigen_Colamd.h:49
void product(const MatrixType &m)
Definition: product.h:42
void set(Container &c, Position position, const Value &value)
Definition: stdlist_overload.cpp:36
Definition: Constants.h:540
Definition: Constants.h:549
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: TensorMeta.h:47
Definition: Constants.h:564
Determines whether the given binary operation of two numeric types is allowed and what the scalar ret...
Definition: XprHelper.h:1043
Definition: Constants.h:561
Definition: Constants.h:552
Definition: Constants.h:567
Definition: Constants.h:558
CwiseBinaryOp< internal::scalar_product_op< ScalarBis, Scalar >, const CwiseNullaryOp< internal::scalar_constant_op< ScalarBis >, Plain >, const Product< Lhs, Rhs, DefaultProduct > > SrcXprType
Definition: ProductEvaluators.h:176
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const AssignFunc &func)
Definition: ProductEvaluators.h:177
Product< Lhs, Rhs, Options > SrcXprType
Definition: ProductEvaluators.h:126
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op< Scalar, Scalar > &)
Definition: ProductEvaluators.h:127
Product< Lhs, Rhs, Options > SrcXprType
Definition: ProductEvaluators.h:141
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op< Scalar, Scalar > &)
Definition: ProductEvaluators.h:142
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op< Scalar, Scalar > &)
Definition: ProductEvaluators.h:155
Product< Lhs, Rhs, Options > SrcXprType
Definition: ProductEvaluators.h:154
Definition: AssignEvaluator.h:773
Definition: AssignEvaluator.h:756
Template functor for scalar/packet assignment with addition.
Definition: AssignmentFunctors.h:52
Template functor for scalar/packet assignment.
Definition: AssignmentFunctors.h:25
Definition: ProductEvaluators.h:206
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const InitialFunc &)
Definition: ProductEvaluators.h:208
Definition: BlasUtil.h:459
Definition: InnerProduct.h:232
Definition: ProductEvaluators.h:799
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index idx) const
Definition: ProductEvaluators.h:844
EIGEN_STRONG_INLINE PacketType packet_impl(Index row, Index col, Index id, internal::true_type) const
Definition: ProductEvaluators.h:853
@ DiagFlags
Definition: ProductEvaluators.h:808
@ CoeffReadCost
Definition: ProductEvaluators.h:804
@ SameTypes_
Definition: ProductEvaluators.h:818
@ StorageOrder_
Definition: ProductEvaluators.h:810
@ SameStorageOrder_
Definition: ProductEvaluators.h:814
@ AsScalarProduct
Definition: ProductEvaluators.h:831
@ ScalarAccessOnDiag_
Definition: ProductEvaluators.h:816
@ LinearAccessMask_
Definition: ProductEvaluators.h:825
@ Vectorizable_
Definition: ProductEvaluators.h:822
@ Alignment
Definition: ProductEvaluators.h:829
@ MatrixFlags
Definition: ProductEvaluators.h:807
evaluator< DiagonalType > m_diagImpl
Definition: ProductEvaluators.h:870
evaluator< MatrixType > m_matImpl
Definition: ProductEvaluators.h:871
EIGEN_STRONG_INLINE PacketType packet_impl(Index row, Index col, Index id, internal::false_type) const
Definition: ProductEvaluators.h:859
ScalarBinaryOpTraits< typename MatrixType::Scalar, typename DiagonalType::Scalar >::ReturnType Scalar
Definition: ProductEvaluators.h:800
EIGEN_DEVICE_FUNC diagonal_product_evaluator_base(const MatrixType &mat, const DiagonalType &diag)
Definition: ProductEvaluators.h:838
Definition: ProductEvaluators.h:476
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index, Index, const Lhs &, const Rhs &, Index, Packet &res)
Definition: ProductEvaluators.h:708
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs &lhs, const Rhs &rhs, Index, Packet &res)
Definition: ProductEvaluators.h:692
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs &lhs, const Rhs &rhs, Index innerDim, Packet &res)
Definition: ProductEvaluators.h:726
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs &lhs, const Rhs &rhs, Index innerDim, Packet &res)
Definition: ProductEvaluators.h:673
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index, Index, const Lhs &, const Rhs &, Index, Packet &res)
Definition: ProductEvaluators.h:700
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs &lhs, const Rhs &rhs, Index, Packet &res)
Definition: ProductEvaluators.h:684
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs &lhs, const Rhs &rhs, Index innerDim, Packet &res)
Definition: ProductEvaluators.h:716
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs &lhs, const Rhs &rhs, Index innerDim, Packet &res)
Definition: ProductEvaluators.h:662
Definition: ProductEvaluators.h:479
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:57
CwiseBinaryOp< internal::scalar_product_op< Scalar1, Scalar2 >, const CwiseNullaryOp< internal::scalar_constant_op< Scalar1 >, Plain1 >, const Product< Lhs, Rhs, DefaultProduct > > XprType
Definition: ProductEvaluators.h:54
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:67
Diagonal< const Product< Lhs, Rhs, DefaultProduct >, DiagIndex > XprType
Definition: ProductEvaluators.h:64
evaluator< Diagonal< const Product< Lhs, Rhs, LazyProduct >, DiagIndex > > Base
Definition: ProductEvaluators.h:65
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:35
product_evaluator< XprType > Base
Definition: ProductEvaluators.h:33
Product< Lhs, Rhs, Options > XprType
Definition: ProductEvaluators.h:32
Definition: CoreEvaluators.h:98
static const bool value
Definition: CoreEvaluators.h:99
Definition: CoreEvaluators.h:118
storage_kind_to_shape< typename traits< T >::StorageKind >::Shape Shape
Definition: CoreEvaluators.h:90
Definition: CoreEvaluators.h:104
unary_evaluator< T > Base
Definition: CoreEvaluators.h:105
find_best_packet_helper< Size, typename packet_traits< T >::type >::type type
Definition: XprHelper.h:290
Definition: GeneralProduct.h:221
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Inverse< Lhs > &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1041
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Inverse< Rhs > &rhs)
Definition: ProductEvaluators.h:1049
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void eval_dynamic(Dst &dst, const Lhs &lhs, const Rhs &rhs, const Func &func)
Definition: ProductEvaluators.h:431
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:395
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void eval_dynamic_impl(Dst &dst, const LhsT &lhs, const RhsT &rhs, const Func &func, const Scalar &s, false_type)
Definition: ProductEvaluators.h:449
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void eval_dynamic_impl(Dst &dst, const LhsT &lhs, const RhsT &rhs, const Func &func, const Scalar &s, true_type)
Definition: ProductEvaluators.h:458
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:398
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void addTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:405
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void subTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:411
EIGEN_DEVICE_FUNC void operator()(const Dst &dst, const Src &src) const
Definition: ProductEvaluators.h:304
EIGEN_DEVICE_FUNC void operator()(const Dst &dst, const Src &src) const
Definition: ProductEvaluators.h:298
EIGEN_DEVICE_FUNC void operator()(const Dst &dst, const Src &src) const
Definition: ProductEvaluators.h:292
Scalar m_scale
Definition: ProductEvaluators.h:309
void EIGEN_DEVICE_FUNC operator()(const Dst &dst, const Src &src) const
Definition: ProductEvaluators.h:312
adds(const Scalar &s)
Definition: ProductEvaluators.h:310
nested_eval< Lhs, 1 >::type LhsNested
Definition: ProductEvaluators.h:370
nested_eval< Rhs, 1 >::type RhsNested
Definition: ProductEvaluators.h:371
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void scaleAndAddTo(Dest &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:377
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:372
internal::remove_all_t< std::conditional_t< int(Side)==OnTheRight, LhsNested, RhsNested > > MatrixType
Definition: ProductEvaluators.h:374
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void subTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:250
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:240
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void addTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:245
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:318
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void subTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:328
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void scaleAndAddTo(Dst &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:333
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void addTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:323
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:287
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:785
static void scaleAndAddTo(Dest &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:788
static void scaleAndAddTo(Dest &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:758
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:755
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1033
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1137
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1100
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1025
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:773
static EIGEN_DEVICE_FUNC void scaleAndAddTo(Dest &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:776
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1146
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1128
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1092
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:743
static void scaleAndAddTo(Dest &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:746
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Lhs &lhs, const Transpose< Rhs > &rhs)
Definition: ProductEvaluators.h:1116
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dest &dst, const Transpose< Lhs > &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:1108
Definition: ProductEvaluators.h:341
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void scaleAndAddTo(Dst &dst, const Lhs &lhs, const Rhs &rhs, const Scalar &alpha)
Definition: ProductEvaluators.h:361
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void addTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:351
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void subTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:356
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalTo(Dst &dst, const Lhs &lhs, const Rhs &rhs)
Definition: ProductEvaluators.h:345
Product< Lhs, Rhs >::Scalar Scalar
Definition: ProductEvaluators.h:342
Definition: ProductEvaluators.h:78
std::conditional_t< Evaluate, PlainObject, typename ref_selector< T >::type > type
Definition: XprHelper.h:549
Definition: GenericPacketMath.h:108
Definition: ProductEvaluators.h:968
remove_all_t< MatrixType > MatrixTypeCleaned
Definition: ProductEvaluators.h:970
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Dest &dst, const PermutationType &perm, const ExpressionType &xpr)
Definition: ProductEvaluators.h:973
nested_eval< ExpressionType, 1 >::type MatrixType
Definition: ProductEvaluators.h:969
Definition: ProductEvaluators.h:965
product_evaluator< BaseProduct, CoeffBasedProductMode, DenseShape, DenseShape > Base
Definition: ProductEvaluators.h:650
Product< Lhs, Rhs, LazyProduct > BaseProduct
Definition: ProductEvaluators.h:649
Product< Lhs, Rhs, DefaultProduct > XprType
Definition: ProductEvaluators.h:648
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE product_evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:652
evaluator< RhsNestedCleaned > RhsEtorType
Definition: ProductEvaluators.h:522
find_best_packet< Scalar, ColsAtCompileTime >::type RhsVecPacketType
Definition: ProductEvaluators.h:533
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index index) const
Definition: ProductEvaluators.h:611
XprType::CoeffReturnType CoeffReturnType
Definition: ProductEvaluators.h:486
LhsEtorType m_lhsImpl
Definition: ProductEvaluators.h:638
internal::remove_all_t< RhsNested > RhsNestedCleaned
Definition: ProductEvaluators.h:519
internal::nested_eval< Lhs, Rhs::ColsAtCompileTime >::type LhsNested
Definition: ProductEvaluators.h:515
XprType::Scalar Scalar
Definition: ProductEvaluators.h:485
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PacketType packet(Index index) const
Definition: ProductEvaluators.h:628
internal::remove_all_t< LhsNested > LhsNestedCleaned
Definition: ProductEvaluators.h:518
find_best_packet< Scalar, RowsAtCompileTime >::type LhsVecPacketType
Definition: ProductEvaluators.h:532
Product< Lhs, Rhs, LazyProduct > XprType
Definition: ProductEvaluators.h:484
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE product_evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:488
Index m_innerDim
Definition: ProductEvaluators.h:642
add_const_on_value_type_t< LhsNested > m_lhs
Definition: ProductEvaluators.h:635
internal::nested_eval< Rhs, Lhs::RowsAtCompileTime >::type RhsNested
Definition: ProductEvaluators.h:516
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PacketType packet(Index row, Index col) const
Definition: ProductEvaluators.h:618
add_const_on_value_type_t< RhsNested > m_rhs
Definition: ProductEvaluators.h:636
RhsEtorType m_rhsImpl
Definition: ProductEvaluators.h:639
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index row, Index col) const
Definition: ProductEvaluators.h:603
evaluator< LhsNestedCleaned > LhsEtorType
Definition: ProductEvaluators.h:521
Product< Lhs, Rhs, Options > XprType
Definition: ProductEvaluators.h:90
XprType::PlainObject PlainObject
Definition: ProductEvaluators.h:91
evaluator< PlainObject > Base
Definition: ProductEvaluators.h:92
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE product_evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:95
PlainObject m_result
Definition: ProductEvaluators.h:116
Base::Scalar Scalar
Definition: ProductEvaluators.h:927
EIGEN_DEVICE_FUNC product_evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:934
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index row, Index col) const
Definition: ProductEvaluators.h:936
diagonal_product_evaluator_base< Lhs, typename Rhs::DiagonalVectorType, Product< Lhs, Rhs, LazyProduct >, OnTheRight > Base
Definition: ProductEvaluators.h:923
EIGEN_STRONG_INLINE PacketType packet(Index idx) const
Definition: ProductEvaluators.h:948
Product< Lhs, Rhs, ProductKind > XprType
Definition: ProductEvaluators.h:929
EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const
Definition: ProductEvaluators.h:942
XprType::PlainObject PlainObject
Definition: ProductEvaluators.h:930
Product< Lhs, Rhs, ProductKind > XprType
Definition: ProductEvaluators.h:887
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index row, Index col) const
Definition: ProductEvaluators.h:895
EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const
Definition: ProductEvaluators.h:901
XprType::PlainObject PlainObject
Definition: ProductEvaluators.h:888
diagonal_product_evaluator_base< Rhs, typename Lhs::DiagonalVectorType, Product< Lhs, Rhs, LazyProduct >, OnTheLeft > Base
Definition: ProductEvaluators.h:881
Base::Scalar Scalar
Definition: ProductEvaluators.h:885
Lhs::DiagonalVectorType DiagonalType
Definition: ProductEvaluators.h:889
EIGEN_DEVICE_FUNC product_evaluator(const XprType &xpr)
Definition: ProductEvaluators.h:893
EIGEN_STRONG_INLINE PacketType packet(Index idx) const
Definition: ProductEvaluators.h:909
Definition: ForwardDeclarations.h:221
Definition: GeneralProduct.h:52
Template functor to compute the difference of two scalars.
Definition: BinaryFunctors.h:381
Template functor to compute the product of two scalars.
Definition: BinaryFunctors.h:73
Template functor to compute the sum of two scalars.
Definition: BinaryFunctors.h:34
Definition: ProductEvaluators.h:768
Template functor for scalar/packet assignment with subtraction.
Definition: AssignmentFunctors.h:73
Definition: ProductEvaluators.h:1065
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Dest &dst, const TranspositionType &tr, const ExpressionType &xpr)
Definition: ProductEvaluators.h:1070
nested_eval< ExpressionType, 1 >::type MatrixType
Definition: ProductEvaluators.h:1066
remove_all_t< MatrixType > MatrixTypeCleaned
Definition: ProductEvaluators.h:1067
Definition: ProductEvaluators.h:738
Definition: GenericPacketMath.h:134
Definition: benchGeometry.cpp:21
EIGEN_DONT_INLINE T sub(T a, T b)
Definition: svd_common.h:238
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317
Definition: ZVector/PacketMath.h:50