OASIS
Open Algebra Software
Loading...
Searching...
No Matches
Oasis::Derivative< DependentT, IndependentT > Class Template Reference

The Derivative class template calculates the derivative of given expressions. More...

#include <Oasis/Derivative.hpp>

Inheritance diagram for Oasis::Derivative< DependentT, IndependentT >:
[legend]
Collaboration diagram for Oasis::Derivative< DependentT, IndependentT >:
[legend]

Public Member Functions

 Derivative ()=default
 
 Derivative (const Derivative< DependentT, IndependentT > &other)
 
 Derivative (const DependentT &exp, const IndependentT &var)
 
auto operator= (const Derivative &other) -> Derivative &=default
 
- Public Member Functions inherited from Oasis::BinaryExpression< DerivedT, MostSigOpT, LeastSigOpT >
 BinaryExpression ()=default
 
 BinaryExpression (const BinaryExpression &other)
 
 BinaryExpression (const MostSigOpT &mostSigOp, const LeastSigOpT &leastSigOp)
 
template<IExpression Op1T, IExpression Op2T, IExpression... OpsT>
 BinaryExpression (const Op1T &op1, const Op2T &op2, const OpsT &... ops)
 
auto Copy () const -> std::unique_ptr< Expression > final
 Copies this expression.
 
auto Differentiate (const Expression &differentiationVariable) const -> std::unique_ptr< Expression > override
 Tries to differentiate this function.
 
auto Equals (const Expression &other) const -> bool final
 Compares this expression to another expression for equality.
 
auto Generalize () const -> std::unique_ptr< Expression > final
 Converts this expression to a more general expression.
 
auto Simplify () const -> std::unique_ptr< Expression > override
 Simplifies this expression.
 
auto Integrate (const Expression &integrationVariable) const -> std::unique_ptr< Expression > override
 Attempts to integrate this expression using integration rules.
 
auto StructurallyEquivalent (const Expression &other) const -> bool final
 Checks whether this expression is structurally equivalent to another expression.
 
auto Flatten (std::vector< std::unique_ptr< Expression > > &out) const -> void
 Flattens this expression.
 
auto GetMostSigOp () const -> const MostSigOpT &
 Gets the most significant operand of this expression.
 
auto GetLeastSigOp () const -> const LeastSigOpT &
 Gets the least significant operand of this expression.
 
auto HasMostSigOp () const -> bool
 Gets whether this expression has a most significant operand.
 
auto HasLeastSigOp () const -> bool
 Gets whether this expression has a least significant operand.
 
template<typename T >
requires IsAnyOf<T, MostSigOpT, Expression>
auto SetMostSigOp (const T &op) -> bool
 Sets the most significant operand of this expression.
 
template<typename T >
requires IsAnyOf<T, LeastSigOpT, Expression>
auto SetLeastSigOp (const T &op) -> bool
 Sets the least significant operand of this expression.
 
auto Substitute (const Expression &var, const Expression &val) -> std::unique_ptr< Expression > override
 
auto SwapOperands () const -> DerivedT< LeastSigOpT, MostSigOpT >
 Swaps the operands of this expression.
 
auto operator= (const BinaryExpression &other) -> BinaryExpression &=default
 
void Serialize (SerializationVisitor &visitor) const override
 This function serializes the expression object.
 
- Public Member Functions inherited from Oasis::Expression
auto FindZeros () const -> std::vector< std::unique_ptr< Expression > >
 The FindZeros function finds all rational real zeros, and up to 2 irrational/complex zeros of a polynomial.
 
virtual auto GetCategory () const -> uint32_t
 Gets the category of this expression.
 
virtual auto GetType () const -> ExpressionType
 Gets the type of this expression.
 
virtual auto IntegrateWithBounds (const Expression &, const Expression &, const Expression &) -> std::unique_ptr< Expression >
 Attempts to integrate this expression using integration rules.
 
template<IExpression T>
bool Is () const
 Gets whether this expression is of a specific type.
 
template<template< typename > typename T>
bool Is () const
 
template<template< typename, typename > typename T>
bool Is () const
 
virtual ~Expression ()=default
 

Additional Inherited Members

- Public Attributes inherited from Oasis::BinaryExpression< DerivedT, MostSigOpT, LeastSigOpT >
std::unique_ptr< MostSigOpT > mostSigOp
 
std::unique_ptr< LeastSigOpT > leastSigOp
 

Detailed Description

template<IExpression DependentT = Expression, IExpression IndependentT = DependentT>
class Oasis::Derivative< DependentT, IndependentT >

The Derivative class template calculates the derivative of given expressions.

Template Parameters
DependentTThe expression type that the derivative will be calculated of.
IndependentTThe type of the variable with respect to which the derivative will be calculated.

Constructor & Destructor Documentation

◆ Derivative() [1/3]

template<IExpression DependentT = Expression, IExpression IndependentT = DependentT>
Oasis::Derivative< DependentT, IndependentT >::Derivative ( )
default

◆ Derivative() [2/3]

template<IExpression DependentT = Expression, IExpression IndependentT = DependentT>
Oasis::Derivative< DependentT, IndependentT >::Derivative ( const Derivative< DependentT, IndependentT > & other)
inline

◆ Derivative() [3/3]

template<IExpression DependentT = Expression, IExpression IndependentT = DependentT>
Oasis::Derivative< DependentT, IndependentT >::Derivative ( const DependentT & exp,
const IndependentT & var )
inline

Member Function Documentation

◆ operator=()

template<IExpression DependentT = Expression, IExpression IndependentT = DependentT>
auto Oasis::Derivative< DependentT, IndependentT >::operator= ( const Derivative< DependentT, IndependentT > & other) -> Derivative &=default
default

The documentation for this class was generated from the following file: