1 #ifndef SYMENGINE_MATRICES_MATRIX_MUL_H
2 #define SYMENGINE_MATRICES_MATRIX_MUL_H
6 #include <symengine/matrices/matrix_expr.h>
7 #include <symengine/matrices/size.h>
15 RCP<const Basic> scalar_;
19 MatrixMul(
const RCP<const Basic> &scalar,
const vec_basic &factors)
20 : scalar_(scalar), factors_(factors)
22 SYMENGINE_ASSIGN_TYPEID();
23 SYMENGINE_ASSERT(is_canonical(scalar, factors));
27 hash_t __hash__()
const override;
28 bool __eq__(
const Basic &o)
const override;
29 int compare(
const Basic &o)
const override;
30 bool is_canonical(
const RCP<const Basic> &scalar,
31 const vec_basic &factors)
const;
35 if (!
eq(*scalar_, *one)) {
36 args.push_back(scalar_);
38 args.insert(args.end(), factors_.begin(), factors_.end());
41 inline const vec_basic &get_factors()
const
45 inline const RCP<const Basic> &get_scalar()
const
51 SYMENGINE_EXPORT RCP<const MatrixExpr> matrix_mul(
const vec_basic &factors);
The base class for SymEngine.
#define IMPLEMENT_TYPEID(SYMENGINE_ID)
Inline members and functions.
The lowest unit of symbolic representation.
vec_basic get_args() const override
Returns the list of arguments.
Main namespace for SymEngine package.
bool eq(const Basic &a, const Basic &b)
Checks equality for a and b