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 Integrate(const Expression& integrationVar) const -> std::unique_ptr<Expression> override
43 {
44 // TODO: Implement
45 const std::unique_ptr<Expression> operandDerivative = this->GetOperand().Integrate(integrationVar);
47 *operandDerivative
48 }
49 .Generalize();
50 }
51
54};
55
56} // Oasis
57
58#endif // OASIS_MAGNITUDE_HPP
#define EXPRESSION_CATEGORY(category)
Definition Expression.hpp:237
#define EXPRESSION_TYPE(type)
Definition Expression.hpp:226
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
Magnitude()=default
auto Integrate(const Expression &integrationVar) const -> std::unique_ptr< Expression > override
Attempts to integrate this expression using integration rules.
Definition Magnitude.hpp:42
Definition UnaryExpression.hpp:14
auto GetOperand() const -> const OperandT &
Definition UnaryExpression.hpp:62
Definition Add.hpp:11
@ UnExp
Definition Expression.hpp:53