5#ifndef OASIS_DIVIDE_HPP
6#define OASIS_DIVIDE_HPP
12template <IExpression Div
idendT, IExpression DivisorT>
17class Divide<Expression, Expression> :
public BinaryExpression<Divide> {
20 Divide(
const Divide<Expression, Expression>& other) =
default;
22 Divide(
const Expression& dividend,
const Expression& divisor);
24 [[nodiscard]]
auto Simplify() const ->
std::unique_ptr<Expression> final;
26 [[nodiscard]] auto
Differentiate(const Expression& differentiationVariable) const ->
std::unique_ptr<Expression> final;
28 [[nodiscard]] auto
Integrate(const Expression& integrationVariable) const ->
std::unique_ptr<Expression> final;
41template <IExpression DividendT = Expression, IExpression DivisorT = DividendT>
50 Divide(
const DividendT& addend1,
const DivisorT& addend2)
#define EXPRESSION_CATEGORY(category)
Definition Expression.hpp:192
#define EXPRESSION_TYPE(type)
Definition Expression.hpp:181
A binary expression.
Definition BinaryExpression.hpp:79
auto Simplify() const -> std::unique_ptr< Expression > override
Simplifies this expression.
Definition BinaryExpression.hpp:200
auto Differentiate(const Expression &differentiationVariable) const -> std::unique_ptr< Expression > override
Tries to differentiate this function.
Definition BinaryExpression.hpp:128
auto Integrate(const Expression &integrationVariable) const -> std::unique_ptr< Expression > override
Attempts to integrate this expression using integration rules.
Definition BinaryExpression.hpp:205
The Divide expression divides two expressions.
Definition Divide.hpp:42
Divide(const Divide< DividendT, DivisorT > &other)
Definition Divide.hpp:45
Divide(const DividendT &addend1, const DivisorT &addend2)
Definition Divide.hpp:50
auto operator=(const Divide &other) -> Divide &=default
@ BinExp
Definition Expression.hpp:45