5#ifndef OASIS_INTEGRATE_HPP
6#define OASIS_INTEGRATE_HPP
14template <IExpression Integrand, IExpression Differential>
19class Integral<Expression, Expression> :
public BinaryExpression<Integral> {
22 Integral(
const Integral<Expression, Expression>& other) =
default;
24 Integral(
const Expression& integrand,
const Expression& differential);
26 [[nodiscard]]
auto Simplify() const ->
std::unique_ptr<Expression> final;
27 [[nodiscard]] auto
Simplify(const Expression& upper, const Expression& lower) const ->
std::unique_ptr<Expression> ;
40template <IExpression IntegrandT = Expression, IExpression DifferentialT = IntegrandT>
49 Integral(
const IntegrandT& integrand,
const DifferentialT& differential)
#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
The Integral expression integrates the two expressions together.
Definition Integral.hpp:41
Integral(const Integral< IntegrandT, DifferentialT > &other)
Definition Integral.hpp:44
Integral(const IntegrandT &integrand, const DifferentialT &differential)
Definition Integral.hpp:49
auto operator=(const Integral &other) -> Integral &=default
@ Commutative
Definition Expression.hpp:44
@ Associative
Definition Expression.hpp:43