10#ifndef EIGEN_SYMBOLIC_INDEX_H
11#define EIGEN_SYMBOLIC_INDEX_H
45template<
typename Arg1,
typename Arg2>
class AddExpr;
46template<
typename Arg1,
typename Arg2>
class ProductExpr;
51template<
typename IndexType=Index>
76template<
typename Derived>
80 const Derived&
derived()
const {
return *
static_cast<const Derived*
>(
this); }
92 template<
typename... Types>
93 Index eval(Types&&... values)
const {
return derived().eval_impl(std::make_tuple(values...)); }
142#if (!EIGEN_HAS_CXX14)
171 template<
typename OtherDerived>
175 template<
typename OtherDerived>
179 template<
typename OtherDerived>
183 template<
typename OtherDerived>
198template<
typename Tag>
212template<
typename tag>
233 template<
typename... Types>
234 Index eval_impl(
const std::tuple<Types...>& values)
const {
return std::get<SymbolValue<Tag> >(values).
value(); }
238template<
typename Arg0>
250template<
typename Arg0,
typename Arg1>
263template<
typename Arg0,
typename Arg1>
276template<
typename Arg0,
typename Arg1>
#define EIGEN_CONSTEXPR
Definition: Macros.h:797
Definition: IntegralConstant.h:52
Definition: SymbolicIndex.h:252
AddExpr(const Arg0 &arg0, const Arg1 &arg1)
Definition: SymbolicIndex.h:254
Arg0 m_arg0
Definition: SymbolicIndex.h:259
Index eval_impl(const T &values) const
Definition: SymbolicIndex.h:257
Arg1 m_arg1
Definition: SymbolicIndex.h:260
Common base class of any symbolic expressions.
Definition: SymbolicIndex.h:78
AddExpr< Derived, NegateExpr< OtherDerived > > operator-(const BaseExpr< OtherDerived > &b) const
Definition: SymbolicIndex.h:176
NegateExpr< Derived > operator-() const
Definition: SymbolicIndex.h:96
QuotientExpr< Derived, OtherDerived > operator/(const BaseExpr< OtherDerived > &b) const
Definition: SymbolicIndex.h:184
AddExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator+(internal::FixedInt< N >(*)()) const
Definition: SymbolicIndex.h:144
Index eval(const T &values) const
Evaluate the expression given the values of the symbols.
Definition: SymbolicIndex.h:89
QuotientExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator/(internal::FixedInt< N >) const
Definition: SymbolicIndex.h:126
AddExpr< Derived, ValueExpr< internal::FixedInt<-N > > > operator-(internal::FixedInt< N >) const
Definition: SymbolicIndex.h:120
QuotientExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator/(internal::FixedInt< N >(*)()) const
Definition: SymbolicIndex.h:153
AddExpr< Derived, ValueExpr< internal::FixedInt<-N > > > operator-(internal::FixedInt< N >(*)()) const
Definition: SymbolicIndex.h:147
friend AddExpr< NegateExpr< Derived >, ValueExpr< internal::FixedInt< N > > > operator-(internal::FixedInt< N >, const BaseExpr &b)
Definition: SymbolicIndex.h:133
ProductExpr< Derived, ValueExpr<> > operator*(Index a) const
Definition: SymbolicIndex.h:102
friend AddExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator+(internal::FixedInt< N >, const BaseExpr &b)
Definition: SymbolicIndex.h:130
friend ProductExpr< ValueExpr< internal::FixedInt< N > >, Derived > operator*(internal::FixedInt< N >, const BaseExpr &b)
Definition: SymbolicIndex.h:136
friend AddExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator+(internal::FixedInt< N >(*)(), const BaseExpr &b)
Definition: SymbolicIndex.h:157
const Derived & derived() const
Definition: SymbolicIndex.h:80
AddExpr< Derived, OtherDerived > operator+(const BaseExpr< OtherDerived > &b) const
Definition: SymbolicIndex.h:172
friend AddExpr< NegateExpr< Derived >, ValueExpr<> > operator-(Index a, const BaseExpr &b)
Definition: SymbolicIndex.h:109
friend QuotientExpr< ValueExpr<>, Derived > operator/(Index a, const BaseExpr &b)
Definition: SymbolicIndex.h:113
friend AddExpr< Derived, ValueExpr<> > operator+(Index a, const BaseExpr &b)
Definition: SymbolicIndex.h:107
ProductExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator*(internal::FixedInt< N >) const
Definition: SymbolicIndex.h:123
ProductExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator*(internal::FixedInt< N >(*)()) const
Definition: SymbolicIndex.h:150
QuotientExpr< Derived, ValueExpr<> > operator/(Index a) const
Definition: SymbolicIndex.h:104
friend AddExpr< NegateExpr< Derived >, ValueExpr< internal::FixedInt< N > > > operator-(internal::FixedInt< N >(*)(), const BaseExpr &b)
Definition: SymbolicIndex.h:160
ProductExpr< Derived, OtherDerived > operator*(const BaseExpr< OtherDerived > &b) const
Definition: SymbolicIndex.h:180
friend ProductExpr< ValueExpr< internal::FixedInt< N > >, Derived > operator*(internal::FixedInt< N >(*)(), const BaseExpr &b)
Definition: SymbolicIndex.h:163
AddExpr< Derived, ValueExpr<> > operator+(Index b) const
Definition: SymbolicIndex.h:98
friend QuotientExpr< ValueExpr< internal::FixedInt< N > >, Derived > operator/(internal::FixedInt< N >(*)(), const BaseExpr &b)
Definition: SymbolicIndex.h:166
AddExpr< Derived, ValueExpr< internal::FixedInt< N > > > operator+(internal::FixedInt< N >) const
Definition: SymbolicIndex.h:117
friend QuotientExpr< ValueExpr< internal::FixedInt< N > >, Derived > operator/(internal::FixedInt< N >, const BaseExpr &b)
Definition: SymbolicIndex.h:139
friend ProductExpr< ValueExpr<>, Derived > operator*(Index a, const BaseExpr &b)
Definition: SymbolicIndex.h:111
AddExpr< Derived, ValueExpr<> > operator-(Index a) const
Definition: SymbolicIndex.h:100
Definition: SymbolicIndex.h:240
NegateExpr(const Arg0 &arg0)
Definition: SymbolicIndex.h:242
Index eval_impl(const T &values) const
Definition: SymbolicIndex.h:245
Arg0 m_arg0
Definition: SymbolicIndex.h:247
Definition: SymbolicIndex.h:265
ProductExpr(const Arg0 &arg0, const Arg1 &arg1)
Definition: SymbolicIndex.h:267
Arg1 m_arg1
Definition: SymbolicIndex.h:273
Index eval_impl(const T &values) const
Definition: SymbolicIndex.h:270
Arg0 m_arg0
Definition: SymbolicIndex.h:272
Definition: SymbolicIndex.h:278
Index eval_impl(const T &values) const
Definition: SymbolicIndex.h:283
Arg1 m_arg1
Definition: SymbolicIndex.h:286
QuotientExpr(const Arg0 &arg0, const Arg1 &arg1)
Definition: SymbolicIndex.h:280
Arg0 m_arg0
Definition: SymbolicIndex.h:285
Expression of a symbol uniquely identified by the template parameter type tag.
Definition: SymbolicIndex.h:214
Index eval_impl(const SymbolValue< Tag > &values) const
Definition: SymbolicIndex.h:229
SymbolValue< Tag > operator=(Index val) const
Associate the value val to the given symbol *this, uniquely identified by its Tag.
Definition: SymbolicIndex.h:225
SymbolExpr()
Definition: SymbolicIndex.h:219
tag Tag
Alias to the template parameter tag.
Definition: SymbolicIndex.h:217
Definition: SymbolicIndex.h:43
Represents the actual value of a symbol identified by its tag.
Definition: SymbolicIndex.h:200
SymbolValue(Index val)
Default constructor from the value val.
Definition: SymbolicIndex.h:203
Index value() const
Definition: SymbolicIndex.h:206
Index m_value
Definition: SymbolicIndex.h:208
EIGEN_CONSTEXPR Index eval_impl(const T &) const
Definition: SymbolicIndex.h:68
ValueExpr()
Definition: SymbolicIndex.h:66
Definition: SymbolicIndex.h:52
IndexType m_value
Definition: SymbolicIndex.h:58
IndexType eval_impl(const T &) const
Definition: SymbolicIndex.h:56
ValueExpr(IndexType val)
Definition: SymbolicIndex.h:54
Namespace containing all symbols from the Eigen library.
Definition: Core:141
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Definition: Eigen_Colamd.h:50
Definition: SymbolicIndex.h:189