stator
A math, geometry, and utility library
Classes | Namespaces | Functions
symbolic.hpp File Reference

Main header for the stator::symbolic library. More...

#include <stator/config.hpp>
#include <stator/constants.hpp>
#include <stator/orphan/stack_vector.hpp>
#include <Eigen/Dense>
#include <complex>
#include <ratio>
#include <type_traits>
#include <stator/symbolic/constants.hpp>
#include <stator/orphan/template_config.hpp>
#include <stator/symbolic/binary_ops.hpp>
#include <stator/symbolic/unary_ops.hpp>
#include <stator/symbolic/simplify.hpp>
#include <stator/symbolic/polynomial.hpp>
#include <stator/symbolic/integrate.hpp>
#include <stator/symbolic/taylor.hpp>
#include <stator/symbolic/runtime.hpp>
#include <stator/symbolic/parser.hpp>
#include <stator/symbolic/print.hpp>

Go to the source code of this file.

Classes

struct  sym::Dynamic
 Template argument for dynamic types, as well as their base class. More...
 
struct  sym::enable_if_var_in< Var1, Var2 >
 
struct  sym::enable_if_var_not_in< Var1, Var2 >
 
struct  sym::detail::IsConstant< T >
 Type trait to determine if a certain type is a constant. More...
 
struct  sym::detail::IsConstant< std::complex< T > >
 
struct  sym::IsSymbolic< T >
 
class  sym::Polynomial< Order, Coeff_t, PolyVar >
 Array representation of Polynomial. More...
 
struct  sym::Relation< Var, Arg >
 Symbolic representation of a variable substitution. More...
 
struct  sym::SymbolicOperator
 A type trait to denote symbolic terms (i.e., one that is not yet immediately evaluable to a "normal" type) More...
 
struct  sym::Var< Args >
 Symbolic representation of a variable. More...
 
struct  sym::variable_combine< Var1, Var2 >
 
struct  sym::variable_in< Var1, Var2 >
 
struct  sym::vidx< idx >
 

Namespaces

 sym
 The stator symbolic math library.
 
 sym::detail
 Namespace containing the details of the implmentation for general stator components.
 

Functions

template<class T , class ... Args, typename = typename std::enable_if<detail::IsConstant<T>::value>::type>
Null sym::derivative (const T &, Var< Args... >)
 Determine the derivative of a symbolic expression. More...
 
template<class ... Args1, class ... Args2, typename = typename std::enable_if<!std::is_base_of<Dynamic, Var<Args1...> >::value && !std::is_base_of<Dynamic, Var<Args2...> >::value>::type>
auto sym::derivative (Var< Args1... >, Var< Args2... >) -> typename std::enable_if< Var< Args1... >::idx==Var< Args2... >::idx, Unity >::type
 Determine the derivative of a variable. More...
 
template<class T , typename = typename std::enable_if<std::is_arithmetic<T>::value>::type>
sym::empty_sum (const T &)
 Returns the empty sum of a type. More...
 
template<class T , typename = typename std::enable_if<std::is_base_of<Eigen::EigenBase<T>, T>::value>::type>
auto sym::empty_sum (const T &) -> STATOR_AUTORETURN_BYVALUE(T::Zero())
 Returns the empty sum of a type. More...
 
template<class T >
sym::empty_sum (const std::complex< T > &)
 
template<class T >
constexpr std::enable_if< detail::IsConstant< T >::value, bool >::type sym::is_constant (const T &)
 
template<class T >
constexpr std::enable_if<!detail::IsConstant< T >::value, bool >::type sym::is_constant (const T &)
 
template<class F , class Real , typename = typename std::enable_if<detail::IsConstant<F>::value>::type>
double sym::precision (const F &f, const Real)
 Estimate the error in evaluating a function at a given time. More...
 
template<class F , class Real , typename = typename std::enable_if<detail::IsConstant<F>::value>::type>
sym::shift_function (const F &f, const Real t)
 Shift a function forward. It returns $g(x)=f(x+a)$. More...
 
StackVector< double, 0 > sym::solve_real_roots (Null f)
 
template<class T , class Var , class Arg , typename = typename std::enable_if<detail::IsConstant<T>::value>::type>
auto sym::sub (const T &f, const Relation< Var, Arg > &) -> STATOR_AUTORETURN_BYVALUE(f)
 Default implementation of substitution of a symbolic expression at a given point. More...
 
template<typename ... Args1, typename ... Args2, class Arg , typename = typename enable_if_var_in<Var<Args1...>, Var<Args2...> >::type>
auto sym::sub (const Var< Args1... > &f, const Relation< Var< Args2... >, Arg > &x) -> STATOR_AUTORETURN_BYVALUE(x._val)
 Evaluates a symbolic Var at a given point. More...
 
template<class ... Args1, class Arg , class Var2 , typename = typename enable_if_var_not_in<Var<Args1...>, Var2>::type>
Var< Args1... > sym::sub (const Var< Args1... > &f, const Relation< Var2, Arg > &x)
 Evaluates a symbolic Var at a given point. More...