OASIS
Open Algebra Software
Loading...
Searching...
No Matches
Magnitude.hpp
Go to the documentation of this file.
1//
2// Created by Andrew Nazareth on 6/28/24.
3//
4
5#ifndef OASIS_MAGNITUDE_HPP
6#define OASIS_MAGNITUDE_HPP
7
8#include <memory>
9
10#include "Add.hpp"
11#include "Exponent.hpp"
12#include "Expression.hpp"
13#include "Imaginary.hpp"
14#include "Matrix.hpp"
15#include "Multiply.hpp"
17#include "Real.hpp"
18#include "RecursiveCast.hpp"
19#include "UnaryExpression.hpp"
20
21namespace Oasis {
22
28template <typename OperandT>
29class Magnitude final : public UnaryExpression<Magnitude, OperandT> {
30public:
31 Magnitude() = default;
32 Magnitude(const Magnitude& other)
33 : UnaryExpression<Magnitude, OperandT>(other)
34 {
35 }
36
37 explicit Magnitude(const OperandT& operand)
38 : UnaryExpression<Magnitude, OperandT>(operand)
39 {
40 }
41
42 [[nodiscard]] auto Differentiate(const Expression& var) const -> std::unique_ptr<Expression> override
43 {
44 // TODO: Implement
45 Oasis::SimplifyVisitor simplifyVisitor {};
46
47 const std::unique_ptr<Expression> operandDerivative = this->GetOperand().Differentiate(var);
49 *operandDerivative
50 }
51 .Generalize();
52 }
53
54 [[nodiscard]] auto Integrate(const Expression& integrationVar) const -> std::unique_ptr<Expression> override
55 {
56 // TODO: Implement
57 const std::unique_ptr<Expression> operandDerivative = this->GetOperand().Integrate(integrationVar);
59 *operandDerivative
60 }
61 .Generalize();
62 }
63
66};
67
68} // Oasis
69
70#endif // OASIS_MAGNITUDE_HPP
#define EXPRESSION_CATEGORY(category)
Definition Expression.hpp:231
#define EXPRESSION_TYPE(type)
Definition Expression.hpp:220
An expression.
Definition Expression.hpp:63
Definition Magnitude.hpp:29
Magnitude(const Magnitude &other)
Definition Magnitude.hpp:32
Magnitude(const OperandT &operand)
Definition Magnitude.hpp:37
auto Differentiate(const Expression &var) const -> std::unique_ptr< Expression > override
Tries to differentiate this function.
Definition Magnitude.hpp:42
Magnitude()=default
auto Integrate(const Expression &integrationVar) const -> std::unique_ptr< Expression > override
Attempts to integrate this expression using integration rules.
Definition Magnitude.hpp:54
Definition SimplifyVisitor.hpp:25
Definition UnaryExpression.hpp:14
auto GetOperand() const -> const OperandT &
Definition UnaryExpression.hpp:62
Definition Add.hpp:11
@ UnExp
Definition Expression.hpp:53