![]() |
Sleipnir C++ API
|
#include <sleipnir/autodiff/expression.hpp>
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) |
An autodiff expression node.
|
constexprdefault |
Constructs a constant expression with a value of zero.
|
inlineexplicitconstexpr |
Constructs a nullary expression (an operator with no arguments).
value | The expression value. |
|
inlineexplicitconstexpr |
Constructs an unary expression (an operator with one argument).
lhs | Unary operator's operand. |
|
inlineconstexpr |
Constructs a binary expression (an operator with two arguments).
lhs | Binary operator's left operand. |
rhs | Binary operator's right operand. |
|
inlinevirtual |
Returns Expression adjoint of the left child expression.
lhs | Left argument to binary operator. |
rhs | Right argument to binary operator. |
parent_adjoint | Adjoint of parent expression. |
Reimplemented in slp::detail::SignExpression, slp::detail::BinaryMinusExpression< T >, slp::detail::BinaryPlusExpression< T >, slp::detail::UnaryMinusExpression< T >, slp::detail::DivExpression< T >, slp::detail::PowExpression< T >, slp::detail::MultExpression< T >, slp::detail::AbsExpression, slp::detail::AcosExpression, slp::detail::AsinExpression, slp::detail::AtanExpression, slp::detail::CosExpression, slp::detail::CoshExpression, slp::detail::ErfExpression, slp::detail::ExpExpression, slp::detail::LogExpression, slp::detail::Log10Expression, slp::detail::SinExpression, slp::detail::SinhExpression, slp::detail::SqrtExpression, slp::detail::TanExpression, slp::detail::TanhExpression, slp::detail::HypotExpression, and slp::detail::Atan2Expression.
|
inlinevirtual |
Returns Expression adjoint of the right child expression.
lhs | Left argument to binary operator. |
rhs | Right argument to binary operator. |
parent_adjoint | Adjoint of parent 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.
|
inlinevirtual |
Returns double adjoint of the left child expression.
lhs | Left argument to binary operator. |
rhs | Right argument to binary operator. |
parent_adjoint | Adjoint of parent expression. |
Reimplemented in slp::detail::PowExpression< T >, slp::detail::MultExpression< T >, slp::detail::HypotExpression, slp::detail::AbsExpression, slp::detail::AcosExpression, slp::detail::AsinExpression, slp::detail::AtanExpression, slp::detail::CosExpression, slp::detail::CoshExpression, slp::detail::ErfExpression, slp::detail::ExpExpression, slp::detail::LogExpression, slp::detail::Log10Expression, slp::detail::SinExpression, slp::detail::SinhExpression, slp::detail::SqrtExpression, slp::detail::TanExpression, slp::detail::TanhExpression, slp::detail::Atan2Expression, slp::detail::DivExpression< T >, slp::detail::BinaryMinusExpression< T >, slp::detail::BinaryPlusExpression< T >, slp::detail::UnaryMinusExpression< T >, and slp::detail::SignExpression.
|
inlinevirtual |
Returns double adjoint of the right child expression.
lhs | Left argument to binary operator. |
rhs | Right argument to binary operator. |
parent_adjoint | Adjoint of parent 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 >.
|
inlineconstexpr |
Returns true if the expression is the given constant.
constant | The constant. |
|
pure virtual |
Returns the type of this expression (constant, linear, quadratic, or nonlinear).
Implemented in slp::detail::BinaryMinusExpression< T >, slp::detail::BinaryPlusExpression< T >, slp::detail::ConstExpression, slp::detail::DecisionVariableExpression, slp::detail::DivExpression< T >, slp::detail::MultExpression< T >, slp::detail::UnaryMinusExpression< T >, slp::detail::AbsExpression, slp::detail::AcosExpression, slp::detail::AsinExpression, slp::detail::AtanExpression, slp::detail::Atan2Expression, slp::detail::CosExpression, slp::detail::CoshExpression, slp::detail::ErfExpression, slp::detail::ExpExpression, slp::detail::HypotExpression, slp::detail::LogExpression, slp::detail::Log10Expression, slp::detail::PowExpression< T >, slp::detail::SignExpression, slp::detail::SinExpression, slp::detail::SinhExpression, slp::detail::SqrtExpression, slp::detail::TanExpression, and slp::detail::TanhExpression.
|
pure virtual |
Either nullary operator with no arguments, unary operator with one argument, or binary operator with two arguments. This operator is used to update the node's value.
lhs | Left argument to binary operator. |
rhs | Right argument to binary operator. |
Implemented in slp::detail::PowExpression< T >, slp::detail::BinaryMinusExpression< T >, slp::detail::BinaryPlusExpression< T >, slp::detail::DivExpression< T >, slp::detail::MultExpression< T >, slp::detail::UnaryMinusExpression< T >, slp::detail::HypotExpression, slp::detail::AbsExpression, slp::detail::AcosExpression, slp::detail::AsinExpression, slp::detail::AtanExpression, slp::detail::CosExpression, slp::detail::CoshExpression, slp::detail::ErfExpression, slp::detail::ExpExpression, slp::detail::LogExpression, slp::detail::Log10Expression, slp::detail::SignExpression, slp::detail::SinExpression, slp::detail::SinhExpression, slp::detail::SqrtExpression, slp::detail::TanExpression, slp::detail::TanhExpression, slp::detail::Atan2Expression, slp::detail::ConstExpression, and slp::detail::DecisionVariableExpression.
|
friend |
Expression-Expression multiplication operator.
lhs | Operator left-hand side. |
rhs | Operator right-hand side. |
|
friend |
Unary plus operator.
lhs | Operand of unary plus. |
|
friend |
Expression-Expression addition operator.
lhs | Operator left-hand side. |
rhs | Operator right-hand side. |
|
friend |
Expression-Expression compound addition operator.
lhs | Operator left-hand side. |
rhs | Operator right-hand side. |
|
friend |
Unary minus operator.
lhs | Operand of unary minus. |
|
friend |
Expression-Expression subtraction operator.
lhs | Operator left-hand side. |
rhs | Operator right-hand side. |
|
friend |
Expression-Expression division operator.
lhs | Operator left-hand side. |
rhs | Operator right-hand side. |
ExpressionPtr slp::detail::Expression::adjoint_expr |
The adjoint of the expression node used during gradient expression tree generation.