OASIS
Open Algebra Software
Loading...
Searching...
No Matches
Multiply.hpp
Go to the documentation of this file.
1//
2// Created by Matthew McCall on 8/10/23.
3//
4
5#ifndef OASIS_MULTIPLY_HPP
6#define OASIS_MULTIPLY_HPP
7
9#include "Real.hpp"
10
11namespace Oasis {
12
13template <IExpression MultiplicandT, IExpression MultiplierT>
14class Multiply;
15
17template <>
18class Multiply<Expression, Expression> : public BinaryExpression<Multiply> {
19public:
21
22 [[nodiscard]] auto Simplify() const -> std::unique_ptr<Expression> final;
23
24 [[nodiscard]] auto Differentiate(const Expression& differentiationVariable) const -> std::unique_ptr<Expression> final;
25
26 [[nodiscard]] auto Integrate(const Expression& integrationVariable) const -> std::unique_ptr<Expression> final;
27
30};
32
128template <IExpression MultiplicandT = Expression, IExpression MultiplierT = MultiplicandT>
129class Multiply : public BinaryExpression<Multiply, MultiplicandT, MultiplierT> {
130public:
131 Multiply() = default;
133 : BinaryExpression<Multiply, MultiplicandT, MultiplierT>(other)
134 {
135 }
136
137 Multiply(const MultiplicandT& addend1, const MultiplierT& addend2)
138 : BinaryExpression<Multiply, MultiplicandT, MultiplierT>(addend1, addend2)
139 {
140 }
141
142 auto operator=(const Multiply& other) -> Multiply& = default;
143
146};
147
148} // Oasis
149
150#endif // OASIS_MULTIPLY_HPP
#define EXPRESSION_CATEGORY(category)
Definition Expression.hpp:230
#define EXPRESSION_TYPE(type)
Definition Expression.hpp:219
A binary expression.
Definition BinaryExpression.hpp:82
auto Simplify() const -> std::unique_ptr< Expression > override
Simplifies this expression.
Definition BinaryExpression.hpp:203
auto Differentiate(const Expression &differentiationVariable) const -> std::unique_ptr< Expression > override
Tries to differentiate this function.
Definition BinaryExpression.hpp:131
auto Integrate(const Expression &integrationVariable) const -> std::unique_ptr< Expression > override
Attempts to integrate this expression using integration rules.
Definition BinaryExpression.hpp:208
The Multiply expression multiplies two expressions.
Definition Multiply.hpp:129
Multiply(const MultiplicandT &addend1, const MultiplierT &addend2)
Definition Multiply.hpp:137
auto operator=(const Multiply &other) -> Multiply &=default
Multiply(const Multiply< MultiplicandT, MultiplierT > &other)
Definition Multiply.hpp:132
Multiply()=default
Definition Add.hpp:11
@ Commutative
Definition Expression.hpp:50
@ Associative
Definition Expression.hpp:49
@ BinExp
Definition Expression.hpp:51