From 4989922be2708378b2438db5a843640ec468ce4c Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 16 Jan 2017 22:21:23 +0100 Subject: Add support for symbolic expressions as arguments of operator() --- Eigen/src/Core/ArithmeticSequence.h | 66 ++----------------------------------- 1 file changed, 2 insertions(+), 64 deletions(-) (limited to 'Eigen/src/Core/ArithmeticSequence.h') diff --git a/Eigen/src/Core/ArithmeticSequence.h b/Eigen/src/Core/ArithmeticSequence.h index 79e6bb74e..056ace1f2 100644 --- a/Eigen/src/Core/ArithmeticSequence.h +++ b/Eigen/src/Core/ArithmeticSequence.h @@ -12,56 +12,6 @@ namespace Eigen { -/** \namespace Eigen::placeholders - * \ingroup Core_Module - * - * Namespace containing symbolic placeholder and identifiers - */ -namespace placeholders { - -namespace internal { -struct symbolic_last_tag {}; -} - -/** \var last - * \ingroup Core_Module - * - * Can be used as a parameter to Eigen::seq and Eigen::seqN functions to symbolically reference the last element/row/columns - * of the underlying vector or matrix once passed to DenseBase::operator()(const RowIndices&, const ColIndices&). - * - * This symbolic placeholder support standard arithmetic operation. - * - * A typical usage example would be: - * \code - * using namespace Eigen; - * using Eigen::placeholders::last; - * VectorXd v(n); - * v(seq(2,last-2)).setOnes(); - * \endcode - * - * \sa end - */ -static const Symbolic::SymbolExpr last; - -/** \var end - * \ingroup Core_Module - * - * Can be used as a parameter to Eigen::seq and Eigen::seqN functions to symbolically reference the last+1 element/row/columns - * of the underlying vector or matrix once passed to DenseBase::operator()(const RowIndices&, const ColIndices&). - * - * This symbolic placeholder support standard arithmetic operation. - * It is essentially an alias to last+1 - * - * \sa last - */ -#ifdef EIGEN_PARSED_BY_DOXYGEN -static const auto end = last+1; -#else -static const Symbolic::AddExpr,Symbolic::ValueExpr> end(last+1); -#endif - -} // end namespace placeholders - //-------------------------------------------------------------------------------- // seq(first,last,incr) and seqN(first,size,incr) //-------------------------------------------------------------------------------- @@ -293,18 +243,6 @@ seq(const Symbolic::BaseExpr &f, const Symbolic::BaseExpr -fix_t eval_expr_given_size(fix_t x, Index /*size*/) { return x; } - -template -Index eval_expr_given_size(const Symbolic::BaseExpr &x, Index size) -{ - return x.derived().eval(placeholders::last=size-1); -} - // Convert a symbolic span into a usable one (i.e., remove last/end "keywords") template struct make_size_type { @@ -318,7 +256,7 @@ struct IndexedViewCompatibleType template ArithmeticSequence::type,IncrType> -makeIndexedViewCompatible(const ArithmeticSequence& ids, Index size) { +makeIndexedViewCompatible(const ArithmeticSequence& ids, Index size,SpecializedType) { return ArithmeticSequence::type,IncrType>( eval_expr_given_size(ids.firstObject(),size),eval_expr_given_size(ids.sizeObject(),size),ids.incrObject()); } @@ -436,7 +374,7 @@ struct IndexedViewCompatibleType legacy::ArithmeticSequenceProxyWithBounds -makeIndexedViewCompatible(const legacy::ArithmeticSequenceProxyWithBounds& ids, Index size) { +makeIndexedViewCompatible(const legacy::ArithmeticSequenceProxyWithBounds& ids, Index size,SpecializedType) { return legacy::ArithmeticSequenceProxyWithBounds( eval_expr_given_size(ids.firstObject(),size),eval_expr_given_size(ids.lastObject(),size),ids.incrObject()); } -- cgit v1.2.3