Sleipnir C++ API
Loading...
Searching...
No Matches
slp::detail::Expression Struct Referenceabstract

#include <sleipnir/autodiff/expression.hpp>

Inheritance diagram for slp::detail::Expression:
slp::detail::AbsExpression slp::detail::AcosExpression slp::detail::AsinExpression slp::detail::Atan2Expression slp::detail::AtanExpression slp::detail::BinaryMinusExpression< T > slp::detail::BinaryPlusExpression< T > slp::detail::ConstExpression slp::detail::CosExpression slp::detail::CoshExpression slp::detail::DecisionVariableExpression slp::detail::DivExpression< T > slp::detail::ErfExpression slp::detail::ExpExpression slp::detail::HypotExpression slp::detail::Log10Expression slp::detail::LogExpression slp::detail::MultExpression< T > slp::detail::PowExpression< T > slp::detail::SignExpression slp::detail::SinExpression slp::detail::SinhExpression slp::detail::SqrtExpression slp::detail::TanExpression slp::detail::TanhExpression slp::detail::UnaryMinusExpression< T >

Public Member Functions

constexpr Expression ()=default
 
constexpr Expression (double value)
 
constexpr Expression (ExpressionPtr lhs)
 
constexpr Expression (ExpressionPtr lhs, ExpressionPtr rhs)
 
constexpr bool is_constant (double constant) const
 
virtual double value (double lhs, double rhs) const =0
 
virtual ExpressionType type () const =0
 
virtual double grad_l (double lhs, double rhs, double parent_adjoint) const
 
virtual double grad_r (double lhs, double rhs, double parent_adjoint) const
 
virtual ExpressionPtr grad_expr_l (const ExpressionPtr &lhs, const ExpressionPtr &rhs, const ExpressionPtr &parent_adjoint) const
 
virtual ExpressionPtr grad_expr_r (const ExpressionPtr &lhs, const ExpressionPtr &rhs, const ExpressionPtr &parent_adjoint) const
 

Public Attributes

double val = 0.0
 The value of the expression node.
 
double adjoint = 0.0
 The adjoint of the expression node used during autodiff.
 
uint32_t incoming_edges = 0
 Counts incoming edges for this node.
 
int32_t col = -1
 This expression's column in a Jacobian, or -1 otherwise.
 
ExpressionPtr adjoint_expr
 
uint32_t ref_count = 0
 Reference count for intrusive shared pointer.
 
std::array< ExpressionPtr, 2 > args {nullptr, nullptr}
 Expression arguments.
 

Friends

ExpressionPtr operator* (const ExpressionPtr &lhs, const ExpressionPtr &rhs)
 
ExpressionPtr operator/ (const ExpressionPtr &lhs, const ExpressionPtr &rhs)
 
ExpressionPtr operator+ (const ExpressionPtr &lhs, const ExpressionPtr &rhs)
 
ExpressionPtr operator+= (ExpressionPtr &lhs, const ExpressionPtr &rhs)
 
ExpressionPtr operator- (const ExpressionPtr &lhs, const ExpressionPtr &rhs)
 
ExpressionPtr operator- (const ExpressionPtr &lhs)
 
ExpressionPtr operator+ (const ExpressionPtr &lhs)
 

Detailed Description

An autodiff expression node.

Constructor & Destructor Documentation

◆ Expression() [1/4]

constexpr slp::detail::Expression::Expression ( )
constexprdefault

Constructs a constant expression with a value of zero.

◆ Expression() [2/4]

constexpr slp::detail::Expression::Expression ( double  value)
inlineexplicitconstexpr

Constructs a nullary expression (an operator with no arguments).

Parameters
valueThe expression value.

◆ Expression() [3/4]

constexpr slp::detail::Expression::Expression ( ExpressionPtr  lhs)
inlineexplicitconstexpr

Constructs an unary expression (an operator with one argument).

Parameters
lhsUnary operator's operand.

◆ Expression() [4/4]

constexpr slp::detail::Expression::Expression ( ExpressionPtr  lhs,
ExpressionPtr  rhs 
)
inlineconstexpr

Constructs a binary expression (an operator with two arguments).

Parameters
lhsBinary operator's left operand.
rhsBinary operator's right operand.

Member Function Documentation

◆ grad_expr_l()

◆ grad_expr_r()

virtual ExpressionPtr slp::detail::Expression::grad_expr_r ( const ExpressionPtr lhs,
const ExpressionPtr rhs,
const ExpressionPtr parent_adjoint 
) const
inlinevirtual

Returns Expression adjoint of the right child expression.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
parent_adjointAdjoint of parent expression.
Returns
The Expression adjoint of the right child expression.

Reimplemented in slp::detail::BinaryMinusExpression< T >, slp::detail::BinaryPlusExpression< T >, slp::detail::PowExpression< T >, slp::detail::DivExpression< T >, slp::detail::MultExpression< T >, slp::detail::HypotExpression, and slp::detail::Atan2Expression.

◆ grad_l()

◆ grad_r()

virtual double slp::detail::Expression::grad_r ( double  lhs,
double  rhs,
double  parent_adjoint 
) const
inlinevirtual

Returns double adjoint of the right child expression.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
parent_adjointAdjoint of parent expression.
Returns
The double adjoint of the right child expression.

Reimplemented in slp::detail::PowExpression< T >, slp::detail::DivExpression< T >, slp::detail::MultExpression< T >, slp::detail::HypotExpression, slp::detail::Atan2Expression, slp::detail::BinaryMinusExpression< T >, and slp::detail::BinaryPlusExpression< T >.

◆ is_constant()

constexpr bool slp::detail::Expression::is_constant ( double  constant) const
inlineconstexpr

Returns true if the expression is the given constant.

Parameters
constantThe constant.
Returns
True if the expression is the given constant.

◆ type()

◆ value()

Friends And Related Symbol Documentation

◆ operator*

ExpressionPtr operator* ( const ExpressionPtr lhs,
const ExpressionPtr rhs 
)
friend

Expression-Expression multiplication operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.

◆ operator+ [1/2]

ExpressionPtr operator+ ( const ExpressionPtr lhs)
friend

Unary plus operator.

Parameters
lhsOperand of unary plus.

◆ operator+ [2/2]

ExpressionPtr operator+ ( const ExpressionPtr lhs,
const ExpressionPtr rhs 
)
friend

Expression-Expression addition operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.

◆ operator+=

ExpressionPtr operator+= ( ExpressionPtr lhs,
const ExpressionPtr rhs 
)
friend

Expression-Expression compound addition operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.

◆ operator- [1/2]

ExpressionPtr operator- ( const ExpressionPtr lhs)
friend

Unary minus operator.

Parameters
lhsOperand of unary minus.

◆ operator- [2/2]

ExpressionPtr operator- ( const ExpressionPtr lhs,
const ExpressionPtr rhs 
)
friend

Expression-Expression subtraction operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.

◆ operator/

ExpressionPtr operator/ ( const ExpressionPtr lhs,
const ExpressionPtr rhs 
)
friend

Expression-Expression division operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.

Member Data Documentation

◆ adjoint_expr

ExpressionPtr slp::detail::Expression::adjoint_expr

The adjoint of the expression node used during gradient expression tree generation.


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