WPILibC++ 2027.0.0-alpha-4
Loading...
Searching...
No Matches
variable.hpp File Reference
#include <algorithm>
#include <concepts>
#include <initializer_list>
#include <source_location>
#include <utility>
#include <vector>
#include <Eigen/Core>
#include <gch/small_vector.hpp>
#include "sleipnir/autodiff/expression.hpp"
#include "sleipnir/autodiff/expression_graph.hpp"
#include "sleipnir/autodiff/sleipnir_base.hpp"
#include "sleipnir/util/assert.hpp"
#include "sleipnir/util/concepts.hpp"
#include "sleipnir/util/print.hpp"

Go to the source code of this file.

Classes

class  slp::Variable< Scalar_ >
 An autodiff variable pointing to an expression node. More...
struct  slp::EqualityConstraints< Scalar >
 A vector of equality constraints of the form cₑ(x) = 0. More...
struct  slp::InequalityConstraints< Scalar >
 A vector of inequality constraints of the form cᵢ(x) ≥ 0. More...
struct  Eigen::NumTraits< slp::Variable< Scalar > >
 NumTraits specialization that allows instantiating Eigen types with Variable. More...

Namespaces

namespace  slp
namespace  slp::detail
namespace  Eigen

Functions

template<template< typename > typename T, typename Scalar>
requires SleipnirMatrixLike<T<Scalar>, Scalar>
 slp::Variable (T< Scalar >) -> Variable< Scalar >
template<std::floating_point T>
 slp::Variable (T) -> Variable< T >
template<std::integral T>
 slp::Variable (T) -> Variable< T >
template<typename Scalar>
Variable< Scalar > slp::abs (const Variable< Scalar > &x)
 abs() for Variables.
template<typename Scalar>
Variable< Scalar > slp::acos (const Variable< Scalar > &x)
 acos() for Variables.
template<typename Scalar>
Variable< Scalar > slp::asin (const Variable< Scalar > &x)
 asin() for Variables.
template<typename Scalar>
Variable< Scalar > slp::atan (const Variable< Scalar > &x)
 atan() for Variables.
template<typename Scalar>
Variable< Scalar > slp::atan2 (const ScalarLike auto &y, const Variable< Scalar > &x)
 atan2() for Variables.
template<typename Scalar>
Variable< Scalar > slp::atan2 (const Variable< Scalar > &y, const ScalarLike auto &x)
 atan2() for Variables.
template<typename Scalar>
Variable< Scalar > slp::atan2 (const Variable< Scalar > &y, const Variable< Scalar > &x)
 atan2() for Variables.
template<typename Scalar>
Variable< Scalar > slp::cbrt (const Variable< Scalar > &x)
 cbrt() for Variables.
template<typename Scalar>
Variable< Scalar > slp::cos (const Variable< Scalar > &x)
 cos() for Variables.
template<typename Scalar>
Variable< Scalar > slp::cosh (const Variable< Scalar > &x)
 cosh() for Variables.
template<typename Scalar>
Variable< Scalar > slp::erf (const Variable< Scalar > &x)
 erf() for Variables.
template<typename Scalar>
Variable< Scalar > slp::exp (const Variable< Scalar > &x)
 exp() for Variables.
template<typename Scalar>
Variable< Scalar > slp::hypot (const ScalarLike auto &x, const Variable< Scalar > &y)
 hypot() for Variables.
template<typename Scalar>
Variable< Scalar > slp::hypot (const Variable< Scalar > &x, const ScalarLike auto &y)
 hypot() for Variables.
template<typename Scalar>
Variable< Scalar > slp::hypot (const Variable< Scalar > &x, const Variable< Scalar > &y)
 hypot() for Variables.
template<typename Scalar>
Variable< Scalar > slp::log (const Variable< Scalar > &x)
 log() for Variables.
template<typename Scalar>
Variable< Scalar > slp::log10 (const Variable< Scalar > &x)
 log10() for Variables.
template<typename Scalar>
Variable< Scalar > slp::pow (const ScalarLike auto &base, const Variable< Scalar > &power)
 pow() for Variables.
template<typename Scalar>
Variable< Scalar > slp::pow (const Variable< Scalar > &base, const ScalarLike auto &power)
 pow() for Variables.
template<typename Scalar>
Variable< Scalar > slp::pow (const Variable< Scalar > &base, const Variable< Scalar > &power)
 pow() for Variables.
template<typename Scalar>
Variable< Scalar > slp::sign (const Variable< Scalar > &x)
 sign() for Variables.
template<typename Scalar>
Variable< Scalar > slp::sin (const Variable< Scalar > &x)
 sin() for Variables.
template<typename Scalar>
Variable< Scalar > slp::sinh (const Variable< Scalar > &x)
 sinh() for Variables.
template<typename Scalar>
Variable< Scalar > slp::sqrt (const Variable< Scalar > &x)
 sqrt() for Variables.
template<typename Scalar>
Variable< Scalar > slp::tan (const Variable< Scalar > &x)
 tan() for Variables.
template<typename Scalar>
Variable< Scalar > slp::tanh (const Variable< Scalar > &x)
 tanh() for Variables.
template<typename Scalar>
Variable< Scalar > slp::hypot (const Variable< Scalar > &x, const Variable< Scalar > &y, const Variable< Scalar > &z)
 hypot() for Variables.
template<typename Scalar, ScalarLike LHS, ScalarLike RHS>
requires SleipnirScalarLike<LHS, Scalar> || SleipnirScalarLike<RHS, Scalar>
auto slp::make_constraints (LHS &&lhs, RHS &&rhs)
template<typename Scalar, ScalarLike LHS, MatrixLike RHS>
requires SleipnirScalarLike<LHS, Scalar> || SleipnirMatrixLike<RHS, Scalar>
auto slp::make_constraints (LHS &&lhs, RHS &&rhs)
template<typename Scalar, MatrixLike LHS, ScalarLike RHS>
requires SleipnirMatrixLike<LHS, Scalar> || SleipnirScalarLike<RHS, Scalar>
auto slp::make_constraints (LHS &&lhs, RHS &&rhs)
template<typename Scalar, MatrixLike LHS, MatrixLike RHS>
requires SleipnirMatrixLike<LHS, Scalar> || SleipnirMatrixLike<RHS, Scalar>
auto slp::make_constraints (LHS &&lhs, RHS &&rhs)
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && SleipnirType<LHS> && (ScalarLike<RHS> || MatrixLike<RHS>) && (!SleipnirType<RHS>)
auto slp::operator== (LHS &&lhs, RHS &&rhs)
 Equality operator that returns an equality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && (!SleipnirType<LHS>) && (ScalarLike<RHS> || MatrixLike<RHS>) && SleipnirType<RHS>
auto slp::operator== (LHS &&lhs, RHS &&rhs)
 Equality operator that returns an equality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && SleipnirType<LHS> && (ScalarLike<RHS> || MatrixLike<RHS>) && SleipnirType<RHS>
auto slp::operator== (LHS &&lhs, RHS &&rhs)
 Equality operator that returns an equality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && (ScalarLike<RHS> || MatrixLike<RHS>) && (SleipnirType<LHS> || SleipnirType<RHS>)
auto slp::operator< (LHS &&lhs, RHS &&rhs)
 Less-than comparison operator that returns an inequality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && (ScalarLike<RHS> || MatrixLike<RHS>) && (SleipnirType<LHS> || SleipnirType<RHS>)
auto slp::operator<= (LHS &&lhs, RHS &&rhs)
 Less-than-or-equal-to comparison operator that returns an inequality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && (ScalarLike<RHS> || MatrixLike<RHS>) && (SleipnirType<LHS> || SleipnirType<RHS>)
auto slp::operator> (LHS &&lhs, RHS &&rhs)
 Greater-than comparison operator that returns an inequality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && SleipnirType<LHS> && (ScalarLike<RHS> || MatrixLike<RHS>) && (!SleipnirType<RHS>)
auto slp::operator>= (LHS &&lhs, RHS &&rhs)
 Greater-than-or-equal-to comparison operator that returns an inequality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && (!SleipnirType<LHS>) && (ScalarLike<RHS> || MatrixLike<RHS>) && SleipnirType<RHS>
auto slp::operator>= (LHS &&lhs, RHS &&rhs)
 Greater-than-or-equal-to comparison operator that returns an inequality constraint for two Variables.
template<typename LHS, typename RHS>
requires (ScalarLike<LHS> || MatrixLike<LHS>) && SleipnirType<LHS> && (ScalarLike<RHS> || MatrixLike<RHS>) && SleipnirType<RHS>
auto slp::operator>= (LHS &&lhs, RHS &&rhs)
 Greater-than-or-equal-to comparison operator that returns an inequality constraint for two Variables.
template<typename L, typename X, typename U>
requires (ScalarLike<L> || MatrixLike<L>) && SleipnirType<X> && (ScalarLike<U> || MatrixLike<U>)
auto slp::bounds (L &&l, X &&x, U &&u)
 Helper function for creating bound constraints.