OASIS
Open Algebra Software
Loading...
Searching...
No Matches
Derivative.hpp
Go to the documentation of this file.
1//
2// Created by bachia on 4/12/2024.
3//
4
5#ifndef OASIS_DERIVATIVE_HPP
6#define OASIS_DERIVATIVE_HPP
7
9
10namespace Oasis {
11
12template <IExpression Exp, IExpression Var>
13class Derivative;
14
16template <>
17class Derivative<Expression, Expression> : public BinaryExpression<Derivative> {
18public:
19 Derivative() = default;
20 Derivative(const Derivative<Expression, Expression>& other) = default;
21
22 Derivative(const Expression& Exp, const Expression& Var);
23
24 [[nodiscard]] auto Simplify() const -> std::unique_ptr<Expression> final;
25
26 [[nodiscard]] auto Differentiate(const Expression& differentiationVariable) const -> std::unique_ptr<Expression> override;
27
30};
32
66template <IExpression DependentT = Expression, IExpression IndependentT = DependentT>
67class Derivative : public BinaryExpression<Derivative, DependentT, IndependentT> {
68public:
69 Derivative() = default;
71 : BinaryExpression<Derivative, DependentT, IndependentT>(other)
72 {
73 }
74
75 Derivative(const DependentT& exp, const IndependentT& var)
76 : BinaryExpression<Derivative, DependentT, IndependentT>(exp, var)
77 {
78 }
79
80 auto operator=(const Derivative& other) -> Derivative& = default;
81
84};
85
86} // namespace Oasis
87
88#endif // OASIS_DERIVATIVE_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
The Derivative class template calculates the derivative of given expressions.
Definition Derivative.hpp:67
auto operator=(const Derivative &other) -> Derivative &=default
Derivative()=default
Derivative(const DependentT &exp, const IndependentT &var)
Definition Derivative.hpp:75
Derivative(const Derivative< DependentT, IndependentT > &other)
Definition Derivative.hpp:70
Definition Add.hpp:11
@ BinExp
Definition Expression.hpp:51