mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-31 17:22:07 +08:00
Rename Symbolic namespace to symbolic to be consistent with numext namespace
This commit is contained in:
parent
400512bfad
commit
82772e8d9d
@ -29,17 +29,17 @@ template<int N> struct aseq_negate<FixedInt<N> > {
|
|||||||
template<> struct aseq_negate<FixedInt<DynamicIndex> > {};
|
template<> struct aseq_negate<FixedInt<DynamicIndex> > {};
|
||||||
|
|
||||||
template<typename FirstType,typename SizeType,typename IncrType,
|
template<typename FirstType,typename SizeType,typename IncrType,
|
||||||
bool FirstIsSymbolic=Symbolic::is_symbolic<FirstType>::value,
|
bool FirstIsSymbolic=symbolic::is_symbolic<FirstType>::value,
|
||||||
bool SizeIsSymbolic =Symbolic::is_symbolic<SizeType>::value>
|
bool SizeIsSymbolic =symbolic::is_symbolic<SizeType>::value>
|
||||||
struct aseq_reverse_first_type {
|
struct aseq_reverse_first_type {
|
||||||
typedef Index type;
|
typedef Index type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename FirstType,typename SizeType,typename IncrType>
|
template<typename FirstType,typename SizeType,typename IncrType>
|
||||||
struct aseq_reverse_first_type<FirstType,SizeType,IncrType,true,true> {
|
struct aseq_reverse_first_type<FirstType,SizeType,IncrType,true,true> {
|
||||||
typedef Symbolic::AddExpr<FirstType,
|
typedef symbolic::AddExpr<FirstType,
|
||||||
Symbolic::ProductExpr<Symbolic::AddExpr<SizeType,Symbolic::ValueExpr<FixedInt<-1> > >,
|
symbolic::ProductExpr<symbolic::AddExpr<SizeType,symbolic::ValueExpr<FixedInt<-1> > >,
|
||||||
Symbolic::ValueExpr<IncrType> >
|
symbolic::ValueExpr<IncrType> >
|
||||||
> type;
|
> type;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -56,14 +56,14 @@ struct aseq_reverse_first_type_aux<SizeType,IncrType,typename internal::enable_i
|
|||||||
template<typename FirstType,typename SizeType,typename IncrType>
|
template<typename FirstType,typename SizeType,typename IncrType>
|
||||||
struct aseq_reverse_first_type<FirstType,SizeType,IncrType,true,false> {
|
struct aseq_reverse_first_type<FirstType,SizeType,IncrType,true,false> {
|
||||||
typedef typename aseq_reverse_first_type_aux<SizeType,IncrType>::type Aux;
|
typedef typename aseq_reverse_first_type_aux<SizeType,IncrType>::type Aux;
|
||||||
typedef Symbolic::AddExpr<FirstType,Symbolic::ValueExpr<Aux> > type;
|
typedef symbolic::AddExpr<FirstType,symbolic::ValueExpr<Aux> > type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename FirstType,typename SizeType,typename IncrType>
|
template<typename FirstType,typename SizeType,typename IncrType>
|
||||||
struct aseq_reverse_first_type<FirstType,SizeType,IncrType,false,true> {
|
struct aseq_reverse_first_type<FirstType,SizeType,IncrType,false,true> {
|
||||||
typedef Symbolic::AddExpr<Symbolic::ProductExpr<Symbolic::AddExpr<SizeType,Symbolic::ValueExpr<FixedInt<-1> > >,
|
typedef symbolic::AddExpr<symbolic::ProductExpr<symbolic::AddExpr<SizeType,symbolic::ValueExpr<FixedInt<-1> > >,
|
||||||
Symbolic::ValueExpr<IncrType> >,
|
symbolic::ValueExpr<IncrType> >,
|
||||||
Symbolic::ValueExpr<> > type;
|
symbolic::ValueExpr<> > type;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ auto seq(FirstType f, LastType l, IncrType incr)
|
|||||||
#else // EIGEN_HAS_CXX11
|
#else // EIGEN_HAS_CXX11
|
||||||
|
|
||||||
template<typename FirstType,typename LastType>
|
template<typename FirstType,typename LastType>
|
||||||
typename internal::enable_if<!(Symbolic::is_symbolic<FirstType>::value || Symbolic::is_symbolic<LastType>::value),
|
typename internal::enable_if<!(symbolic::is_symbolic<FirstType>::value || symbolic::is_symbolic<LastType>::value),
|
||||||
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,Index> >::type
|
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,Index> >::type
|
||||||
seq(FirstType f, LastType l)
|
seq(FirstType f, LastType l)
|
||||||
{
|
{
|
||||||
@ -238,35 +238,35 @@ seq(FirstType f, LastType l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename FirstTypeDerived,typename LastType>
|
template<typename FirstTypeDerived,typename LastType>
|
||||||
typename internal::enable_if<!Symbolic::is_symbolic<LastType>::value,
|
typename internal::enable_if<!symbolic::is_symbolic<LastType>::value,
|
||||||
ArithmeticSequence<FirstTypeDerived, Symbolic::AddExpr<Symbolic::AddExpr<Symbolic::NegateExpr<FirstTypeDerived>,Symbolic::ValueExpr<> >,
|
ArithmeticSequence<FirstTypeDerived, symbolic::AddExpr<symbolic::AddExpr<symbolic::NegateExpr<FirstTypeDerived>,symbolic::ValueExpr<> >,
|
||||||
Symbolic::ValueExpr<internal::FixedInt<1> > > > >::type
|
symbolic::ValueExpr<internal::FixedInt<1> > > > >::type
|
||||||
seq(const Symbolic::BaseExpr<FirstTypeDerived> &f, LastType l)
|
seq(const symbolic::BaseExpr<FirstTypeDerived> &f, LastType l)
|
||||||
{
|
{
|
||||||
return seqN(f.derived(),(typename internal::cleanup_index_type<LastType>::type(l)-f.derived()+fix<1>()));
|
return seqN(f.derived(),(typename internal::cleanup_index_type<LastType>::type(l)-f.derived()+fix<1>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FirstType,typename LastTypeDerived>
|
template<typename FirstType,typename LastTypeDerived>
|
||||||
typename internal::enable_if<!Symbolic::is_symbolic<FirstType>::value,
|
typename internal::enable_if<!symbolic::is_symbolic<FirstType>::value,
|
||||||
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,
|
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,
|
||||||
Symbolic::AddExpr<Symbolic::AddExpr<LastTypeDerived,Symbolic::ValueExpr<> >,
|
symbolic::AddExpr<symbolic::AddExpr<LastTypeDerived,symbolic::ValueExpr<> >,
|
||||||
Symbolic::ValueExpr<internal::FixedInt<1> > > > >::type
|
symbolic::ValueExpr<internal::FixedInt<1> > > > >::type
|
||||||
seq(FirstType f, const Symbolic::BaseExpr<LastTypeDerived> &l)
|
seq(FirstType f, const symbolic::BaseExpr<LastTypeDerived> &l)
|
||||||
{
|
{
|
||||||
return seqN(typename internal::cleanup_index_type<FirstType>::type(f),(l.derived()-typename internal::cleanup_index_type<FirstType>::type(f)+fix<1>()));
|
return seqN(typename internal::cleanup_index_type<FirstType>::type(f),(l.derived()-typename internal::cleanup_index_type<FirstType>::type(f)+fix<1>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FirstTypeDerived,typename LastTypeDerived>
|
template<typename FirstTypeDerived,typename LastTypeDerived>
|
||||||
ArithmeticSequence<FirstTypeDerived,
|
ArithmeticSequence<FirstTypeDerived,
|
||||||
Symbolic::AddExpr<Symbolic::AddExpr<LastTypeDerived,Symbolic::NegateExpr<FirstTypeDerived> >,Symbolic::ValueExpr<internal::FixedInt<1> > > >
|
symbolic::AddExpr<symbolic::AddExpr<LastTypeDerived,symbolic::NegateExpr<FirstTypeDerived> >,symbolic::ValueExpr<internal::FixedInt<1> > > >
|
||||||
seq(const Symbolic::BaseExpr<FirstTypeDerived> &f, const Symbolic::BaseExpr<LastTypeDerived> &l)
|
seq(const symbolic::BaseExpr<FirstTypeDerived> &f, const symbolic::BaseExpr<LastTypeDerived> &l)
|
||||||
{
|
{
|
||||||
return seqN(f.derived(),(l.derived()-f.derived()+fix<1>()));
|
return seqN(f.derived(),(l.derived()-f.derived()+fix<1>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FirstType,typename LastType, typename IncrType>
|
template<typename FirstType,typename LastType, typename IncrType>
|
||||||
typename internal::enable_if<!(Symbolic::is_symbolic<FirstType>::value || Symbolic::is_symbolic<LastType>::value),
|
typename internal::enable_if<!(symbolic::is_symbolic<FirstType>::value || symbolic::is_symbolic<LastType>::value),
|
||||||
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,Index,typename internal::cleanup_seq_incr<IncrType>::type> >::type
|
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,Index,typename internal::cleanup_seq_incr<IncrType>::type> >::type
|
||||||
seq(FirstType f, LastType l, IncrType incr)
|
seq(FirstType f, LastType l, IncrType incr)
|
||||||
{
|
{
|
||||||
@ -276,27 +276,27 @@ seq(FirstType f, LastType l, IncrType incr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename FirstTypeDerived,typename LastType, typename IncrType>
|
template<typename FirstTypeDerived,typename LastType, typename IncrType>
|
||||||
typename internal::enable_if<!Symbolic::is_symbolic<LastType>::value,
|
typename internal::enable_if<!symbolic::is_symbolic<LastType>::value,
|
||||||
ArithmeticSequence<FirstTypeDerived,
|
ArithmeticSequence<FirstTypeDerived,
|
||||||
Symbolic::QuotientExpr<Symbolic::AddExpr<Symbolic::AddExpr<Symbolic::NegateExpr<FirstTypeDerived>,
|
symbolic::QuotientExpr<symbolic::AddExpr<symbolic::AddExpr<symbolic::NegateExpr<FirstTypeDerived>,
|
||||||
Symbolic::ValueExpr<> >,
|
symbolic::ValueExpr<> >,
|
||||||
Symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
||||||
Symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
||||||
typename internal::cleanup_seq_incr<IncrType>::type> >::type
|
typename internal::cleanup_seq_incr<IncrType>::type> >::type
|
||||||
seq(const Symbolic::BaseExpr<FirstTypeDerived> &f, LastType l, IncrType incr)
|
seq(const symbolic::BaseExpr<FirstTypeDerived> &f, LastType l, IncrType incr)
|
||||||
{
|
{
|
||||||
typedef typename internal::cleanup_seq_incr<IncrType>::type CleanedIncrType;
|
typedef typename internal::cleanup_seq_incr<IncrType>::type CleanedIncrType;
|
||||||
return seqN(f.derived(),(typename internal::cleanup_index_type<LastType>::type(l)-f.derived()+CleanedIncrType(incr))/CleanedIncrType(incr), incr);
|
return seqN(f.derived(),(typename internal::cleanup_index_type<LastType>::type(l)-f.derived()+CleanedIncrType(incr))/CleanedIncrType(incr), incr);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FirstType,typename LastTypeDerived, typename IncrType>
|
template<typename FirstType,typename LastTypeDerived, typename IncrType>
|
||||||
typename internal::enable_if<!Symbolic::is_symbolic<FirstType>::value,
|
typename internal::enable_if<!symbolic::is_symbolic<FirstType>::value,
|
||||||
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,
|
ArithmeticSequence<typename internal::cleanup_index_type<FirstType>::type,
|
||||||
Symbolic::QuotientExpr<Symbolic::AddExpr<Symbolic::AddExpr<LastTypeDerived,Symbolic::ValueExpr<> >,
|
symbolic::QuotientExpr<symbolic::AddExpr<symbolic::AddExpr<LastTypeDerived,symbolic::ValueExpr<> >,
|
||||||
Symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
||||||
Symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
||||||
typename internal::cleanup_seq_incr<IncrType>::type> >::type
|
typename internal::cleanup_seq_incr<IncrType>::type> >::type
|
||||||
seq(FirstType f, const Symbolic::BaseExpr<LastTypeDerived> &l, IncrType incr)
|
seq(FirstType f, const symbolic::BaseExpr<LastTypeDerived> &l, IncrType incr)
|
||||||
{
|
{
|
||||||
typedef typename internal::cleanup_seq_incr<IncrType>::type CleanedIncrType;
|
typedef typename internal::cleanup_seq_incr<IncrType>::type CleanedIncrType;
|
||||||
return seqN(typename internal::cleanup_index_type<FirstType>::type(f),
|
return seqN(typename internal::cleanup_index_type<FirstType>::type(f),
|
||||||
@ -305,12 +305,12 @@ seq(FirstType f, const Symbolic::BaseExpr<LastTypeDerived> &l, IncrType incr)
|
|||||||
|
|
||||||
template<typename FirstTypeDerived,typename LastTypeDerived, typename IncrType>
|
template<typename FirstTypeDerived,typename LastTypeDerived, typename IncrType>
|
||||||
ArithmeticSequence<FirstTypeDerived,
|
ArithmeticSequence<FirstTypeDerived,
|
||||||
Symbolic::QuotientExpr<Symbolic::AddExpr<Symbolic::AddExpr<LastTypeDerived,
|
symbolic::QuotientExpr<symbolic::AddExpr<symbolic::AddExpr<LastTypeDerived,
|
||||||
Symbolic::NegateExpr<FirstTypeDerived> >,
|
symbolic::NegateExpr<FirstTypeDerived> >,
|
||||||
Symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
||||||
Symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
symbolic::ValueExpr<typename internal::cleanup_seq_incr<IncrType>::type> >,
|
||||||
typename internal::cleanup_seq_incr<IncrType>::type>
|
typename internal::cleanup_seq_incr<IncrType>::type>
|
||||||
seq(const Symbolic::BaseExpr<FirstTypeDerived> &f, const Symbolic::BaseExpr<LastTypeDerived> &l, IncrType incr)
|
seq(const symbolic::BaseExpr<FirstTypeDerived> &f, const symbolic::BaseExpr<LastTypeDerived> &l, IncrType incr)
|
||||||
{
|
{
|
||||||
typedef typename internal::cleanup_seq_incr<IncrType>::type CleanedIncrType;
|
typedef typename internal::cleanup_seq_incr<IncrType>::type CleanedIncrType;
|
||||||
return seqN(f.derived(),(l.derived()-f.derived()+CleanedIncrType(incr))/CleanedIncrType(incr), incr);
|
return seqN(f.derived(),(l.derived()-f.derived()+CleanedIncrType(incr))/CleanedIncrType(incr), incr);
|
||||||
@ -353,7 +353,7 @@ namespace internal {
|
|||||||
// Convert a symbolic span into a usable one (i.e., remove last/end "keywords")
|
// Convert a symbolic span into a usable one (i.e., remove last/end "keywords")
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct make_size_type {
|
struct make_size_type {
|
||||||
typedef typename internal::conditional<Symbolic::is_symbolic<T>::value, Index, T>::type type;
|
typedef typename internal::conditional<symbolic::is_symbolic<T>::value, Index, T>::type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename FirstType,typename SizeType,typename IncrType,int XprSize>
|
template<typename FirstType,typename SizeType,typename IncrType,int XprSize>
|
||||||
|
@ -42,7 +42,7 @@ struct symbolic_last_tag {};
|
|||||||
*
|
*
|
||||||
* \sa end
|
* \sa end
|
||||||
*/
|
*/
|
||||||
static const Symbolic::SymbolExpr<internal::symbolic_last_tag> last;
|
static const symbolic::SymbolExpr<internal::symbolic_last_tag> last;
|
||||||
|
|
||||||
/** \var end
|
/** \var end
|
||||||
* \ingroup Core_Module
|
* \ingroup Core_Module
|
||||||
@ -60,7 +60,7 @@ static const auto end = last+1;
|
|||||||
#else
|
#else
|
||||||
// Using a FixedExpr<1> expression is important here to make sure the compiler
|
// Using a FixedExpr<1> expression is important here to make sure the compiler
|
||||||
// can fully optimize the computation starting indices with zero overhead.
|
// can fully optimize the computation starting indices with zero overhead.
|
||||||
static const Symbolic::AddExpr<Symbolic::SymbolExpr<internal::symbolic_last_tag>,Symbolic::ValueExpr<Eigen::internal::FixedInt<1> > > end(last+fix<1>());
|
static const symbolic::AddExpr<symbolic::SymbolExpr<internal::symbolic_last_tag>,symbolic::ValueExpr<Eigen::internal::FixedInt<1> > > end(last+fix<1>());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // end namespace placeholders
|
} // end namespace placeholders
|
||||||
@ -74,7 +74,7 @@ template<int N>
|
|||||||
FixedInt<N> eval_expr_given_size(FixedInt<N> x, Index /*size*/) { return x; }
|
FixedInt<N> eval_expr_given_size(FixedInt<N> x, Index /*size*/) { return x; }
|
||||||
|
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
Index eval_expr_given_size(const Symbolic::BaseExpr<Derived> &x, Index size)
|
Index eval_expr_given_size(const symbolic::BaseExpr<Derived> &x, Index size)
|
||||||
{
|
{
|
||||||
return x.derived().eval(placeholders::last=size-1);
|
return x.derived().eval(placeholders::last=size-1);
|
||||||
}
|
}
|
||||||
@ -127,13 +127,13 @@ struct IndexedViewCompatibleType<T,XprSize,typename internal::enable_if<internal
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, int XprSize>
|
template<typename T, int XprSize>
|
||||||
struct IndexedViewCompatibleType<T, XprSize, typename enable_if<Symbolic::is_symbolic<T>::value>::type> {
|
struct IndexedViewCompatibleType<T, XprSize, typename enable_if<symbolic::is_symbolic<T>::value>::type> {
|
||||||
typedef SingleRange type;
|
typedef SingleRange type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
typename enable_if<Symbolic::is_symbolic<T>::value,SingleRange>::type
|
typename enable_if<symbolic::is_symbolic<T>::value,SingleRange>::type
|
||||||
makeIndexedViewCompatible(const T& id, Index size, SpecializedType) {
|
makeIndexedViewCompatible(const T& id, Index size, SpecializedType) {
|
||||||
return eval_expr_given_size(id,size);
|
return eval_expr_given_size(id,size);
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
namespace Eigen {
|
namespace Eigen {
|
||||||
|
|
||||||
/** \namespace Eigen::Symbolic
|
/** \namespace Eigen::symbolic
|
||||||
* \ingroup Core_Module
|
* \ingroup Core_Module
|
||||||
*
|
*
|
||||||
* This namespace defines a set of classes and functions to build and evaluate symbolic expressions of scalar type Index.
|
* This namespace defines a set of classes and functions to build and evaluate symbolic expressions of scalar type Index.
|
||||||
@ -20,9 +20,9 @@ namespace Eigen {
|
|||||||
*
|
*
|
||||||
* \code
|
* \code
|
||||||
* // First step, defines symbols:
|
* // First step, defines symbols:
|
||||||
* struct x_tag {}; static const Symbolic::SymbolExpr<x_tag> x;
|
* struct x_tag {}; static const symbolic::SymbolExpr<x_tag> x;
|
||||||
* struct y_tag {}; static const Symbolic::SymbolExpr<y_tag> y;
|
* struct y_tag {}; static const symbolic::SymbolExpr<y_tag> y;
|
||||||
* struct z_tag {}; static const Symbolic::SymbolExpr<z_tag> z;
|
* struct z_tag {}; static const symbolic::SymbolExpr<z_tag> z;
|
||||||
*
|
*
|
||||||
* // Defines an expression:
|
* // Defines an expression:
|
||||||
* auto expr = (x+3)/y+z;
|
* auto expr = (x+3)/y+z;
|
||||||
@ -38,7 +38,7 @@ namespace Eigen {
|
|||||||
* It is currently only used internally to define and manipulate the placeholders::last and placeholders::end symbols in Eigen::seq and Eigen::seqN.
|
* It is currently only used internally to define and manipulate the placeholders::last and placeholders::end symbols in Eigen::seq and Eigen::seqN.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace Symbolic {
|
namespace symbolic {
|
||||||
|
|
||||||
template<typename Tag> class Symbol;
|
template<typename Tag> class Symbol;
|
||||||
template<typename Arg0> class NegateExpr;
|
template<typename Arg0> class NegateExpr;
|
||||||
@ -286,7 +286,7 @@ protected:
|
|||||||
Arg1 m_arg1;
|
Arg1 m_arg1;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace Symbolic
|
} // end namespace symbolic
|
||||||
|
|
||||||
} // end namespace Eigen
|
} // end namespace Eigen
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ operator()(const Indices& indices) EIGEN_INDEXED_VIEW_METHOD_CONST
|
|||||||
|
|
||||||
template<typename Indices>
|
template<typename Indices>
|
||||||
typename internal::enable_if<
|
typename internal::enable_if<
|
||||||
(internal::get_compile_time_incr<typename IvcType<Indices>::type>::value==1) && (!internal::is_valid_index_type<Indices>::value) && (!Symbolic::is_symbolic<Indices>::value),
|
(internal::get_compile_time_incr<typename IvcType<Indices>::type>::value==1) && (!internal::is_valid_index_type<Indices>::value) && (!symbolic::is_symbolic<Indices>::value),
|
||||||
VectorBlock<EIGEN_INDEXED_VIEW_METHOD_CONST Derived,internal::array_size<Indices>::value> >::type
|
VectorBlock<EIGEN_INDEXED_VIEW_METHOD_CONST Derived,internal::array_size<Indices>::value> >::type
|
||||||
operator()(const Indices& indices) EIGEN_INDEXED_VIEW_METHOD_CONST
|
operator()(const Indices& indices) EIGEN_INDEXED_VIEW_METHOD_CONST
|
||||||
{
|
{
|
||||||
@ -172,7 +172,7 @@ operator()(const Indices& indices) EIGEN_INDEXED_VIEW_METHOD_CONST
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename IndexType>
|
template<typename IndexType>
|
||||||
typename internal::enable_if<Symbolic::is_symbolic<IndexType>::value, CoeffReturnType >::type
|
typename internal::enable_if<symbolic::is_symbolic<IndexType>::value, CoeffReturnType >::type
|
||||||
operator()(const IndexType& id) EIGEN_INDEXED_VIEW_METHOD_CONST
|
operator()(const IndexType& id) EIGEN_INDEXED_VIEW_METHOD_CONST
|
||||||
{
|
{
|
||||||
return Base::operator()(internal::eval_expr_given_size(id,size()));
|
return Base::operator()(internal::eval_expr_given_size(id,size()));
|
||||||
|
@ -60,12 +60,12 @@ bool is_same_symb(const T1& a, const T2& b, Index size)
|
|||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void check_is_symbolic(const T&) {
|
void check_is_symbolic(const T&) {
|
||||||
STATIC_CHECK(( Symbolic::is_symbolic<T>::value ))
|
STATIC_CHECK(( symbolic::is_symbolic<T>::value ))
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void check_isnot_symbolic(const T&) {
|
void check_isnot_symbolic(const T&) {
|
||||||
STATIC_CHECK(( !Symbolic::is_symbolic<T>::value ))
|
STATIC_CHECK(( !symbolic::is_symbolic<T>::value ))
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VERIFY_EQ_INT(A,B) VERIFY_IS_APPROX(int(A),int(B))
|
#define VERIFY_EQ_INT(A,B) VERIFY_IS_APPROX(int(A),int(B))
|
||||||
@ -104,9 +104,9 @@ void check_symbolic_index()
|
|||||||
|
|
||||||
#if EIGEN_HAS_CXX14
|
#if EIGEN_HAS_CXX14
|
||||||
{
|
{
|
||||||
struct x_tag {}; static const Symbolic::SymbolExpr<x_tag> x;
|
struct x_tag {}; static const symbolic::SymbolExpr<x_tag> x;
|
||||||
struct y_tag {}; static const Symbolic::SymbolExpr<y_tag> y;
|
struct y_tag {}; static const symbolic::SymbolExpr<y_tag> y;
|
||||||
struct z_tag {}; static const Symbolic::SymbolExpr<z_tag> z;
|
struct z_tag {}; static const symbolic::SymbolExpr<z_tag> z;
|
||||||
|
|
||||||
VERIFY_IS_APPROX( int(((x+3)/y+z).eval(x=6,y=3,z=-13)), (6+3)/3+(-13) );
|
VERIFY_IS_APPROX( int(((x+3)/y+z).eval(x=6,y=3,z=-13)), (6+3)/3+(-13) );
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user