WPILibC++ 2027.0.0-alpha-4
Loading...
Searching...
No Matches
slp::Variable< Scalar_ > Class Template Reference

An autodiff variable pointing to an expression node. More...

#include </home/runner/work/allwpilib/allwpilib/wpimath/src/main/native/thirdparty/sleipnir/include/sleipnir/autodiff/variable.hpp>

Inheritance diagram for slp::Variable< Scalar_ >:
slp::SleipnirBase

Public Types

using Scalar = Scalar_
 Scalar type alias.

Public Member Functions

 Variable ()=default
 Constructs a linear Variable with a value of zero.
 Variable (std::nullptr_t)
 Constructs an empty Variable.
 Variable (Scalar value)
 Constructs a Variable from a scalar type.
 Variable (SleipnirMatrixLike< Scalar > auto value)
 Constructs a Variable from a scalar type.
 Variable (std::floating_point auto value)
 Constructs a Variable from a floating-point type.
 Variable (std::integral auto value)
 Constructs a Variable from an integral type.
 Variable (const detail::ExpressionPtr< Scalar > &expr)
 Constructs a Variable pointing to the specified expression.
 Variable (detail::ExpressionPtr< Scalar > &&expr)
 Constructs a Variable pointing to the specified expression.
Variable< Scalar > & operator= (ScalarLike auto value)
 Assignment operator for scalar.
void set_value (Scalar value)
 Sets Variable's internal value.
Scalar value ()
 Returns the value of this variable.
ExpressionType type () const
 Returns the type of this expression (constant, linear, quadratic, or nonlinear).
Variable< Scalar > & operator*= (const Variable< Scalar > &rhs)
 Variable-Variable compound multiplication operator.
Variable< Scalar > & operator/= (const Variable< Scalar > &rhs)
 Variable-Variable compound division operator.
Variable< Scalar > & operator+= (const Variable< Scalar > &rhs)
 Variable-Variable compound addition operator.
Variable< Scalar > & operator-= (const Variable< Scalar > &rhs)
 Variable-Variable compound subtraction operator.

Friends

class detail::GradientExpressionGraph< Scalar >
template<typename Scalar, int UpLo>
class Hessian
template<typename Scalar>
class Jacobian
template<ScalarLike LHS, SleipnirScalarLike< Scalar > RHS>
Variable< Scalaroperator* (const LHS &lhs, const RHS &rhs)
 Variable-scalar multiplication operator.
template<SleipnirScalarLike< Scalar > LHS, ScalarLike RHS>
Variable< Scalaroperator* (const LHS &lhs, const RHS &rhs)
 Variable-scalar multiplication operator.
Variable< Scalaroperator* (const Variable< Scalar > &lhs, const Variable< Scalar > &rhs)
 Variable-scalar multiplication operator.
Variable< Scalaroperator/ (const Variable< Scalar > &lhs, const Variable< Scalar > &rhs)
 Variable-Variable division operator.
Variable< Scalaroperator+ (const Variable< Scalar > &lhs, const Variable< Scalar > &rhs)
 Variable-Variable addition operator.
Variable< Scalaroperator- (const Variable< Scalar > &lhs, const Variable< Scalar > &rhs)
 Variable-Variable subtraction operator.
Variable< Scalaroperator- (const Variable< Scalar > &lhs)
 Unary minus operator.
Variable< Scalaroperator+ (const Variable< Scalar > &lhs)
 Unary plus operator.
template<typename Scalar>
Variable< Scalarabs (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalaracos (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarasin (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalaratan (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalaratan2 (const ScalarLike auto &y, const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalaratan2 (const Variable< Scalar > &y, const ScalarLike auto &x)
template<typename Scalar>
Variable< Scalaratan2 (const Variable< Scalar > &y, const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarcbrt (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarcos (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarcosh (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarerf (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarexp (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarhypot (const ScalarLike auto &x, const Variable< Scalar > &y)
template<typename Scalar>
Variable< Scalarhypot (const Variable< Scalar > &x, const ScalarLike auto &y)
template<typename Scalar>
Variable< Scalarhypot (const Variable< Scalar > &x, const Variable< Scalar > &y)
template<typename Scalar>
Variable< Scalarlog (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarlog10 (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarpow (const ScalarLike auto &base, const Variable< Scalar > &power)
template<typename Scalar>
Variable< Scalarpow (const Variable< Scalar > &base, const ScalarLike auto &power)
template<typename Scalar>
Variable< Scalarpow (const Variable< Scalar > &base, const Variable< Scalar > &power)
template<typename Scalar>
Variable< Scalarsign (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarsin (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarsinh (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarsqrt (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalartan (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalartanh (const Variable< Scalar > &x)
template<typename Scalar>
Variable< Scalarhypot (const Variable< Scalar > &x, const Variable< Scalar > &y, const Variable< Scalar > &z)

Detailed Description

template<typename Scalar_>
class slp::Variable< Scalar_ >

An autodiff variable pointing to an expression node.

Template Parameters
Scalar_Scalar type.

Member Typedef Documentation

◆ Scalar

template<typename Scalar_>
using slp::Variable< Scalar_ >::Scalar = Scalar_

Scalar type alias.

Constructor & Destructor Documentation

◆ Variable() [1/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( )
default

Constructs a linear Variable with a value of zero.

◆ Variable() [2/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( std::nullptr_t )
inlineexplicit

Constructs an empty Variable.

◆ Variable() [3/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( Scalar value)
inline

Constructs a Variable from a scalar type.

Parameters
valueThe value of the Variable.

◆ Variable() [4/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( SleipnirMatrixLike< Scalar > auto value)
inline

Constructs a Variable from a scalar type.

Parameters
valueThe value of the Variable.

◆ Variable() [5/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( std::floating_point auto value)
inline

Constructs a Variable from a floating-point type.

Parameters
valueThe value of the Variable.

◆ Variable() [6/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( std::integral auto value)
inline

Constructs a Variable from an integral type.

Parameters
valueThe value of the Variable.

◆ Variable() [7/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( const detail::ExpressionPtr< Scalar > & expr)
inlineexplicit

Constructs a Variable pointing to the specified expression.

Parameters
exprThe autodiff variable.

◆ Variable() [8/8]

template<typename Scalar_>
slp::Variable< Scalar_ >::Variable ( detail::ExpressionPtr< Scalar > && expr)
inlineexplicit

Constructs a Variable pointing to the specified expression.

Parameters
exprThe autodiff variable.

Member Function Documentation

◆ operator*=()

template<typename Scalar_>
Variable< Scalar > & slp::Variable< Scalar_ >::operator*= ( const Variable< Scalar > & rhs)
inline

Variable-Variable compound multiplication operator.

Parameters
rhsOperator right-hand side.
Returns
Result of multiplication.

◆ operator+=()

template<typename Scalar_>
Variable< Scalar > & slp::Variable< Scalar_ >::operator+= ( const Variable< Scalar > & rhs)
inline

Variable-Variable compound addition operator.

Parameters
rhsOperator right-hand side.
Returns
Result of addition.

◆ operator-=()

template<typename Scalar_>
Variable< Scalar > & slp::Variable< Scalar_ >::operator-= ( const Variable< Scalar > & rhs)
inline

Variable-Variable compound subtraction operator.

Parameters
rhsOperator right-hand side.
Returns
Result of subtraction.

◆ operator/=()

template<typename Scalar_>
Variable< Scalar > & slp::Variable< Scalar_ >::operator/= ( const Variable< Scalar > & rhs)
inline

Variable-Variable compound division operator.

Parameters
rhsOperator right-hand side.
Returns
Result of division.

◆ operator=()

template<typename Scalar_>
Variable< Scalar > & slp::Variable< Scalar_ >::operator= ( ScalarLike auto value)
inline

Assignment operator for scalar.

Parameters
valueThe value of the Variable.
Returns
This variable.

◆ set_value()

template<typename Scalar_>
void slp::Variable< Scalar_ >::set_value ( Scalar value)
inline

Sets Variable's internal value.

Parameters
valueThe value of the Variable.

◆ type()

template<typename Scalar_>
ExpressionType slp::Variable< Scalar_ >::type ( ) const
inline

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

Returns
The type of this expression.

◆ value()

template<typename Scalar_>
Scalar slp::Variable< Scalar_ >::value ( )
inline

Returns the value of this variable.

Returns
The value of this variable.

◆ abs

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > abs ( const Variable< Scalar > & x)
friend

◆ acos

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > acos ( const Variable< Scalar > & x)
friend

◆ asin

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > asin ( const Variable< Scalar > & x)
friend

◆ atan

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > atan ( const Variable< Scalar > & x)
friend

◆ atan2 [1/3]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > atan2 ( const ScalarLike auto & y,
const Variable< Scalar > & x )
friend

◆ atan2 [2/3]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > atan2 ( const Variable< Scalar > & y,
const ScalarLike auto & x )
friend

◆ atan2 [3/3]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > atan2 ( const Variable< Scalar > & y,
const Variable< Scalar > & x )
friend

◆ cbrt

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > cbrt ( const Variable< Scalar > & x)
friend

◆ cos

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > cos ( const Variable< Scalar > & x)
friend

◆ cosh

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > cosh ( const Variable< Scalar > & x)
friend

◆ detail::GradientExpressionGraph< Scalar >

template<typename Scalar_>
friend class detail::GradientExpressionGraph< Scalar >
friend

◆ erf

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > erf ( const Variable< Scalar > & x)
friend

◆ exp

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > exp ( const Variable< Scalar > & x)
friend

◆ Hessian

template<typename Scalar_>
template<typename Scalar, int UpLo>
friend class Hessian
friend

◆ hypot [1/4]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > hypot ( const ScalarLike auto & x,
const Variable< Scalar > & y )
friend

◆ hypot [2/4]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > hypot ( const Variable< Scalar > & x,
const ScalarLike auto & y )
friend

◆ hypot [3/4]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > hypot ( const Variable< Scalar > & x,
const Variable< Scalar > & y )
friend

◆ hypot [4/4]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > hypot ( const Variable< Scalar > & x,
const Variable< Scalar > & y,
const Variable< Scalar > & z )
friend

◆ Jacobian

template<typename Scalar_>
template<typename Scalar>
friend class Jacobian
friend

◆ log

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > log ( const Variable< Scalar > & x)
friend

◆ log10

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > log10 ( const Variable< Scalar > & x)
friend

◆ operator* [1/3]

template<typename Scalar_>
template<SleipnirScalarLike< Scalar > LHS, ScalarLike RHS>
Variable< Scalar > operator* ( const LHS & lhs,
const RHS & rhs )
friend

Variable-scalar multiplication operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.
Returns
Result of multiplication.

◆ operator* [2/3]

template<typename Scalar_>
template<ScalarLike LHS, SleipnirScalarLike< Scalar > RHS>
Variable< Scalar > operator* ( const LHS & lhs,
const RHS & rhs )
friend

Variable-scalar multiplication operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.
Returns
Result of multiplication.

◆ operator* [3/3]

template<typename Scalar_>
Variable< Scalar > operator* ( const Variable< Scalar > & lhs,
const Variable< Scalar > & rhs )
friend

Variable-scalar multiplication operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.
Returns
Result of multiplication.

◆ operator+ [1/2]

template<typename Scalar_>
Variable< Scalar > operator+ ( const Variable< Scalar > & lhs)
friend

Unary plus operator.

Parameters
lhsOperand for unary plus.

◆ operator+ [2/2]

template<typename Scalar_>
Variable< Scalar > operator+ ( const Variable< Scalar > & lhs,
const Variable< Scalar > & rhs )
friend

Variable-Variable addition operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.
Returns
Result of addition.

◆ operator- [1/2]

template<typename Scalar_>
Variable< Scalar > operator- ( const Variable< Scalar > & lhs)
friend

Unary minus operator.

Parameters
lhsOperand for unary minus.

◆ operator- [2/2]

template<typename Scalar_>
Variable< Scalar > operator- ( const Variable< Scalar > & lhs,
const Variable< Scalar > & rhs )
friend

Variable-Variable subtraction operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.
Returns
Result of subtraction.

◆ operator/

template<typename Scalar_>
Variable< Scalar > operator/ ( const Variable< Scalar > & lhs,
const Variable< Scalar > & rhs )
friend

Variable-Variable division operator.

Parameters
lhsOperator left-hand side.
rhsOperator right-hand side.
Returns
Result of division.

◆ pow [1/3]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > pow ( const ScalarLike auto & base,
const Variable< Scalar > & power )
friend

◆ pow [2/3]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > pow ( const Variable< Scalar > & base,
const ScalarLike auto & power )
friend

◆ pow [3/3]

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > pow ( const Variable< Scalar > & base,
const Variable< Scalar > & power )
friend

◆ sign

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > sign ( const Variable< Scalar > & x)
friend

◆ sin

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > sin ( const Variable< Scalar > & x)
friend

◆ sinh

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > sinh ( const Variable< Scalar > & x)
friend

◆ sqrt

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > sqrt ( const Variable< Scalar > & x)
friend

◆ tan

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > tan ( const Variable< Scalar > & x)
friend

◆ tanh

template<typename Scalar_>
template<typename Scalar>
Variable< Scalar > tanh ( const Variable< Scalar > & x)
friend

The documentation for this class was generated from the following file:
  • /home/runner/work/allwpilib/allwpilib/wpimath/src/main/native/thirdparty/sleipnir/include/sleipnir/autodiff/variable.hpp