Sleipnir C++ API
Loading...
Searching...
No Matches
slp::detail::BinaryPlusExpression< Scalar, T > Struct Template Reference

#include <sleipnir/autodiff/expression.hpp>

Inheritance diagram for slp::detail::BinaryPlusExpression< Scalar, T >:
slp::detail::Expression< Scalar >

Public Member Functions

constexpr BinaryPlusExpression (ExpressionPtr< Scalar > lhs, ExpressionPtr< Scalar > rhs)
 
Scalar value (Scalar lhs, Scalar rhs) const override
 
ExpressionType type () const override
 
Scalar grad_l (Scalar, Scalar, Scalar parent_adjoint) const override
 
Scalar grad_r (Scalar, Scalar, Scalar parent_adjoint) const override
 
ExpressionPtr< Scalargrad_expr_l (const ExpressionPtr< Scalar > &, const ExpressionPtr< Scalar > &, const ExpressionPtr< Scalar > &parent_adjoint) const override
 
ExpressionPtr< Scalargrad_expr_r (const ExpressionPtr< Scalar > &, const ExpressionPtr< Scalar > &, const ExpressionPtr< Scalar > &parent_adjoint) const override
 
- Public Member Functions inherited from slp::detail::Expression< Scalar >
constexpr Expression ()=default
 
constexpr Expression (Scalar value)
 
constexpr Expression (ExpressionPtr< Scalar > lhs)
 
constexpr Expression (ExpressionPtr< Scalar > lhs, ExpressionPtr< Scalar > rhs)
 
constexpr bool is_constant (Scalar constant) const
 

Additional Inherited Members

- Public Types inherited from slp::detail::Expression< Scalar >
using Scalar = Scalar
 
- Public Attributes inherited from slp::detail::Expression< Scalar >
Scalar val
 The value of the expression node.
 
Scalar adjoint
 The adjoint of the expression node, used during autodiff.
 
uint32_t incoming_edges
 Counts incoming edges for this node.
 
int32_t col
 This expression's column in a Jacobian, or -1 otherwise.
 
ExpressionPtr< Scalaradjoint_expr
 
uint32_t ref_count
 Reference count for intrusive shared pointer.
 
std::array< ExpressionPtr< Scalar >, 2 > args
 Expression arguments.
 

Detailed Description

template<typename Scalar, ExpressionType T>
struct slp::detail::BinaryPlusExpression< Scalar, T >

Derived expression type for binary plus operator.

Template Parameters
ScalarScalar type.
TExpression type.

Constructor & Destructor Documentation

◆ BinaryPlusExpression()

template<typename Scalar , ExpressionType T>
constexpr slp::detail::BinaryPlusExpression< Scalar, T >::BinaryPlusExpression ( ExpressionPtr< Scalar lhs,
ExpressionPtr< Scalar 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()

template<typename Scalar , ExpressionType T>
ExpressionPtr< Scalar > slp::detail::BinaryPlusExpression< Scalar, T >::grad_expr_l ( const ExpressionPtr< Scalar > &  lhs,
const ExpressionPtr< Scalar > &  rhs,
const ExpressionPtr< Scalar > &  parent_adjoint 
) const
inlineoverridevirtual

Returns ∂/∂l as an Expression.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
parent_adjointAdjoint of parent expression.
Returns
∂/∂l as an Expression.

Reimplemented from slp::detail::Expression< Scalar >.

◆ grad_expr_r()

template<typename Scalar , ExpressionType T>
ExpressionPtr< Scalar > slp::detail::BinaryPlusExpression< Scalar, T >::grad_expr_r ( const ExpressionPtr< Scalar > &  lhs,
const ExpressionPtr< Scalar > &  rhs,
const ExpressionPtr< Scalar > &  parent_adjoint 
) const
inlineoverridevirtual

Returns ∂/∂r as an Expression.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
parent_adjointAdjoint of parent expression.
Returns
∂/∂r as an Expression.

Reimplemented from slp::detail::Expression< Scalar >.

◆ grad_l()

template<typename Scalar , ExpressionType T>
Scalar slp::detail::BinaryPlusExpression< Scalar, T >::grad_l ( Scalar  lhs,
Scalar  rhs,
Scalar  parent_adjoint 
) const
inlineoverridevirtual

Returns ∂/∂l as a Scalar.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
parent_adjointAdjoint of parent expression.
Returns
∂/∂l as a Scalar.

Reimplemented from slp::detail::Expression< Scalar >.

◆ grad_r()

template<typename Scalar , ExpressionType T>
Scalar slp::detail::BinaryPlusExpression< Scalar, T >::grad_r ( Scalar  lhs,
Scalar  rhs,
Scalar  parent_adjoint 
) const
inlineoverridevirtual

Returns ∂/∂r as a Scalar.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
parent_adjointAdjoint of parent expression.
Returns
∂/∂r as a Scalar.

Reimplemented from slp::detail::Expression< Scalar >.

◆ type()

template<typename Scalar , ExpressionType T>
ExpressionType slp::detail::BinaryPlusExpression< Scalar, T >::type ( ) const
inlineoverridevirtual

Returns the type of this expression (constant, linear, quadratic, or nonlinear).

Returns
The type of this expression.

Implements slp::detail::Expression< Scalar >.

◆ value()

template<typename Scalar , ExpressionType T>
Scalar slp::detail::BinaryPlusExpression< Scalar, T >::value ( Scalar  lhs,
Scalar  rhs 
) const
inlineoverridevirtual

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.

Parameters
lhsLeft argument to binary operator.
rhsRight argument to binary operator.
Returns
The node's value.

Implements slp::detail::Expression< Scalar >.


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