OASIS
Open Algebra Software
Loading...
Searching...
No Matches
Oasis::BoundedExpression< LowerBoundT, UpperBoundT > Class Template Reference

A concept base class for both Unary and BoundedBinary expressions. More...

#include <Oasis/BoundedExpression.hpp>

Inheritance diagram for Oasis::BoundedExpression< LowerBoundT, UpperBoundT >:
[legend]
Collaboration diagram for Oasis::BoundedExpression< LowerBoundT, UpperBoundT >:
[legend]

Public Member Functions

 BoundedExpression ()=default
 
 BoundedExpression (const BoundedExpression &other)
 
 BoundedExpression (const LowerBoundT &lowerBound, const UpperBoundT &upperBound)
 
auto HasLowerBound () const -> bool
 
auto HasUpperBound () const -> bool
 
auto GetLowerBound () const -> const LowerBoundT &
 
auto GetUpperBound () const -> const UpperBoundT &
 
template<typename T >
requires IsAnyOf<T, LowerBoundT, Expression>
void SetLowerBound (const T &expr)
 
template<typename T >
requires IsAnyOf<T, UpperBoundT, Expression>
void SetUpperBound (const T &expr)
 
- Public Member Functions inherited from Oasis::Expression
virtual auto Copy () const -> std::unique_ptr< Expression >=0
 Copies this expression.
 
virtual auto Differentiate (const Expression &) const -> std::unique_ptr< Expression >
 Tries to differentiate this function.
 
virtual auto Equals (const Expression &other) const -> bool=0
 Compares this expression to another expression for equality.
 
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 Generalize () const -> std::unique_ptr< Expression >
 Converts this expression to a more general expression.
 
virtual auto Integrate (const Expression &) const -> std::unique_ptr< Expression >
 Attempts to integrate this expression using integration rules.
 
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>
requires (DerivedFromUnaryExpression<T<Expression>> && !DerivedFromBinaryExpression<T<Expression>>)
bool Is () const
 
template<template< typename, typename > typename T>
requires DerivedFromBinaryExpression<T<Expression, Expression>>
bool Is () const
 
auto Simplify () const -> std::unique_ptr< Expression >
 Simplifies this expression.
 
virtual auto StructurallyEquivalent (const Expression &other) const -> bool=0
 Checks whether this expression is structurally equivalent to another expression.
 
virtual auto Substitute (const Expression &var, const Expression &val) -> std::unique_ptr< Expression >=0
 
template<IVisitor T>
requires ExpectedWithString<typename T::RetT>
auto Accept (T &visitor) const -> std::expected< typename T::RetT, std::string_view >
 
template<IVisitor T>
requires ExpectedWithString<typename T::RetT>
auto Accept (T &visitor) const -> typename T::RetT
 
virtual ~Expression ()=default
 

Additional Inherited Members

- Protected Member Functions inherited from Oasis::Expression
virtual any AcceptInternal (Visitor &visitor) const =0
 This function serializes the expression object.
 

Detailed Description

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
class Oasis::BoundedExpression< LowerBoundT, UpperBoundT >

A concept base class for both Unary and BoundedBinary expressions.

Note
This class is not intended to be used directly by end users.

Parameters

Template Parameters
LowerBoundTThe lower bound of the expression.
UpperBoundTThe upper bound of the expression.

Constructor & Destructor Documentation

◆ BoundedExpression() [1/3]

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::BoundedExpression ( )
default

◆ BoundedExpression() [2/3]

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::BoundedExpression ( const BoundedExpression< LowerBoundT, UpperBoundT > & other)
inline

◆ BoundedExpression() [3/3]

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::BoundedExpression ( const LowerBoundT & lowerBound,
const UpperBoundT & upperBound )
inline

Member Function Documentation

◆ GetLowerBound()

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
auto Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::GetLowerBound ( ) const -> const LowerBoundT&
inline

◆ GetUpperBound()

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
auto Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::GetUpperBound ( ) const -> const UpperBoundT&
inline

◆ HasLowerBound()

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
auto Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::HasLowerBound ( ) const -> bool
inline

◆ HasUpperBound()

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
auto Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::HasUpperBound ( ) const -> bool
inline

◆ SetLowerBound()

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
template<typename T >
requires IsAnyOf<T, LowerBoundT, Expression>
void Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::SetLowerBound ( const T & expr)
inline

◆ SetUpperBound()

template<IExpression LowerBoundT = Expression, IExpression UpperBoundT = Expression>
template<typename T >
requires IsAnyOf<T, UpperBoundT, Expression>
void Oasis::BoundedExpression< LowerBoundT, UpperBoundT >::SetUpperBound ( const T & expr)
inline

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