#ifndef EIGEN_PRODUCTEVALUATORS_H
#define EIGEN_PRODUCTEVALUATORS_H
#include "./InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
evaluator<Product<Lhs, Rhs, Options>>;
evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_product_op<Scalar1, Scalar2>, const CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>, const Product<Lhs, Rhs, DefaultProduct>>>;
evaluator<CwiseBinaryOp<internal::scalar_product_op<Scalar1, Scalar2>, const CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>, const Product<Lhs, Rhs, DefaultProduct>>>;
evaluator<Diagonal<const Product<Lhs, Rhs, DefaultProduct>, DiagIndex>>;
template <typename Lhs, typename Rhs, typename LhsShape = typename evaluator_traits<Lhs>::Shape,
typename RhsShape = typename evaluator_traits<Rhs>::Shape,
int ProductType = internal::product_type<Lhs, Rhs>::value>
struct generic_product_impl;
evaluator_assume_aliasing<Product<Lhs, Rhs, DefaultProduct>>;
product_evaluator<Product<Lhs, Rhs, Options>, ProductTag, LhsShape, RhsShape>;
Assignment<DstXprType, Product<Lhs, Rhs, Options>, internal::assign_op<Scalar, Scalar>, Dense2Dense, std::enable_if_t<(Options == DefaultProduct || Options == AliasFreeProduct)>>;
Assignment<DstXprType, Product<Lhs, Rhs, Options>, internal::add_assign_op<Scalar, Scalar>, Dense2Dense, std::enable_if_t<(Options == DefaultProduct || Options == AliasFreeProduct)>>;
Assignment<DstXprType, Product<Lhs, Rhs, Options>, internal::sub_assign_op<Scalar, Scalar>, Dense2Dense, std::enable_if_t<(Options == DefaultProduct || Options == AliasFreeProduct)>>;
Assignment<DstXprType, CwiseBinaryOp<internal::scalar_product_op<ScalarBis, Scalar>, const CwiseNullaryOp<internal::scalar_constant_op<ScalarBis>, Plain>, const Product<Lhs, Rhs, DefaultProduct>>, AssignFunc, Dense2Dense>;
evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_sum_op<typename OtherXpr::Scalar, typename Product<Lhs, Rhs, DefaultProduct>::Scalar>, const OtherXpr, const Product<Lhs, Rhs, DefaultProduct>>, DenseShape>;
evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_difference_op<typename OtherXpr::Scalar, typename Product<Lhs, Rhs, DefaultProduct>::Scalar>, const OtherXpr, const Product<Lhs, Rhs, DefaultProduct>>, DenseShape>;
template <typename DstXprType, typename OtherXpr, typename ProductType, typename Func1, typename Func2>
struct assignment_from_xpr_op_product { … };
#define EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(ASSIGN_OP, BINOP, ASSIGN_OP2) …
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(…);
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(…);
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(…);
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(…);
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(…);
EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(…);
generic_product_impl<Lhs, Rhs, DenseShape, DenseShape, InnerProduct>;
template <typename Dst, typename Lhs, typename Rhs, typename Func>
void EIGEN_DEVICE_FUNC outer_product_selector_run(Dst& dst, const Lhs& lhs, const Rhs& rhs, const Func& func,
const false_type&) { … }
template <typename Dst, typename Lhs, typename Rhs, typename Func>
void EIGEN_DEVICE_FUNC outer_product_selector_run(Dst& dst, const Lhs& lhs, const Rhs& rhs, const Func& func,
const true_type&) { … }
generic_product_impl<Lhs, Rhs, DenseShape, DenseShape, OuterProduct>;
template <typename Lhs, typename Rhs, typename Derived>
struct generic_product_impl_base { … };
generic_product_impl<Lhs, Rhs, DenseShape, DenseShape, GemvProduct>;
generic_product_impl<Lhs, Rhs, DenseShape, DenseShape, CoeffBasedProductMode>;
generic_product_impl<Lhs, Rhs, DenseShape, DenseShape, LazyCoeffBasedProductMode>;
template <int Traversal, int UnrollingIndex, typename Lhs, typename Rhs, typename RetScalar>
struct etor_product_coeff_impl;
template <int StorageOrder, int UnrollingIndex, typename Lhs, typename Rhs, typename Packet, int LoadMode>
struct etor_product_packet_impl;
product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape, DenseShape>;
product_evaluator<Product<Lhs, Rhs, DefaultProduct>, LazyCoeffBasedProductMode, DenseShape, DenseShape>;
etor_product_packet_impl<RowMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<ColMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<RowMajor, 1, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<ColMajor, 1, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<RowMajor, 0, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<ColMajor, 0, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<RowMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>;
etor_product_packet_impl<ColMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>;
template <int Mode, bool LhsIsTriangular, typename Lhs, bool LhsIsVector, typename Rhs, bool RhsIsVector>
struct triangular_product_impl;
generic_product_impl<Lhs, Rhs, TriangularShape, DenseShape, ProductTag>;
generic_product_impl<Lhs, Rhs, DenseShape, TriangularShape, ProductTag>;
template <typename Lhs, int LhsMode, bool LhsIsVector, typename Rhs, int RhsMode, bool RhsIsVector>
struct selfadjoint_product_impl;
generic_product_impl<Lhs, Rhs, SelfAdjointShape, DenseShape, ProductTag>;
generic_product_impl<Lhs, Rhs, DenseShape, SelfAdjointShape, ProductTag>;
template <typename MatrixType, typename DiagonalType, typename Derived, int ProductOrder>
struct diagonal_product_evaluator_base : evaluator_base<Derived> { … };
product_evaluator<Product<Lhs, Rhs, ProductKind>, ProductTag, DiagonalShape, DenseShape>;
product_evaluator<Product<Lhs, Rhs, ProductKind>, ProductTag, DenseShape, DiagonalShape>;
template <typename ExpressionType, int Side, bool Transposed, typename ExpressionShape>
struct permutation_matrix_product;
permutation_matrix_product<ExpressionType, Side, Transposed, DenseShape>;
generic_product_impl<Lhs, Rhs, PermutationShape, MatrixShape, ProductTag>;
generic_product_impl<Lhs, Rhs, MatrixShape, PermutationShape, ProductTag>;
generic_product_impl<Inverse<Lhs>, Rhs, PermutationShape, MatrixShape, ProductTag>;
generic_product_impl<Lhs, Inverse<Rhs>, MatrixShape, PermutationShape, ProductTag>;
template <typename ExpressionType, int Side, bool Transposed, typename ExpressionShape>
struct transposition_matrix_product { … };
generic_product_impl<Lhs, Rhs, TranspositionsShape, MatrixShape, ProductTag>;
generic_product_impl<Lhs, Rhs, MatrixShape, TranspositionsShape, ProductTag>;
generic_product_impl<Transpose<Lhs>, Rhs, TranspositionsShape, MatrixShape, ProductTag>;
generic_product_impl<Lhs, Transpose<Rhs>, MatrixShape, TranspositionsShape, ProductTag>;
generic_product_impl<Lhs, Rhs, SkewSymmetricShape, MatrixShape, ProductTag>;
generic_product_impl<Lhs, Rhs, MatrixShape, SkewSymmetricShape, ProductTag>;
generic_product_impl<Lhs, Rhs, SkewSymmetricShape, SkewSymmetricShape, ProductTag>;
}
}
#endif