* Added .all() and .any() members to PartialRedux

* Bug fixes in euler angle snippet, Assign and MapBase
* Started a "quick start guide" (draft state)
This commit is contained in:
Gael Guennebaud
2008-08-20 00:58:25 +00:00
parent c6674ab076
commit 7aba51ce53
8 changed files with 158 additions and 12 deletions

View File

@@ -114,6 +114,8 @@ EIGEN_MEMBER_FUNCTOR(norm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumT
EIGEN_MEMBER_FUNCTOR(sum, (Size-1)*NumTraits<Scalar>::AddCost);
EIGEN_MEMBER_FUNCTOR(minCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
EIGEN_MEMBER_FUNCTOR(maxCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
EIGEN_MEMBER_FUNCTOR(all, (Size-1)*NumTraits<Scalar>::AddCost);
EIGEN_MEMBER_FUNCTOR(any, (Size-1)*NumTraits<Scalar>::AddCost);
/** \internal */
template <typename BinaryOp, typename Scalar>
@@ -216,7 +218,7 @@ template<typename ExpressionType, int Direction> class PartialRedux
*
* Example: \include PartialRedux_norm.cpp
* Output: \verbinclude PartialRedux_norm.out
*
*
* \sa MatrixBase::norm() */
const typename ReturnType<ei_member_norm>::Type norm() const
{ return _expression(); }
@@ -226,11 +228,25 @@ template<typename ExpressionType, int Direction> class PartialRedux
*
* Example: \include PartialRedux_sum.cpp
* Output: \verbinclude PartialRedux_sum.out
*
*
* \sa MatrixBase::sum() */
const typename ReturnType<ei_member_sum>::Type sum() const
{ return _expression(); }
/** \returns a row (or column) vector expression representing
* whether \b all coefficients of each respective column (or row) are \c true.
*
* \sa MatrixBase::all() */
const typename ReturnType<ei_member_all>::Type all() const
{ return _expression(); }
/** \returns a row (or column) vector expression representing
* whether \b at \b least one coefficient of each respective column (or row) is \c true.
*
* \sa MatrixBase::any() */
const typename ReturnType<ei_member_any>::Type any() const
{ return _expression(); }
protected:
ExpressionTypeNested m_matrix;
};

View File

@@ -385,7 +385,7 @@ struct ei_assign_impl<Derived1, Derived2, SliceVectorization, NoUnrolling>
dst.copyCoeff(index, i, src);
}
alignedStart = (alignedStart+alignedStep)%packetSize;
alignedStart = std::min<int>((alignedStart+alignedStep)%packetSize, innerSize);
}
}
};

View File

@@ -53,10 +53,10 @@ struct MatrixBase<Derived>::CommaInitializer
m_col = 0;
m_currentBlockRows = 1;
ei_assert(m_row<m_matrix.rows()
&& "Too many rows passed to MatrixBase::operator<<");
&& "Too many rows passed to comma initializer (operator<<)");
}
ei_assert(m_col<m_matrix.cols()
&& "Too many coefficients passed to MatrixBase::operator<<");
&& "Too many coefficients passed to comma initializer (operator<<)");
ei_assert(m_currentBlockRows==1);
m_matrix.coeffRef(m_row, m_col++) = s;
return *this;
@@ -71,10 +71,10 @@ struct MatrixBase<Derived>::CommaInitializer
m_col = 0;
m_currentBlockRows = other.rows();
ei_assert(m_row+m_currentBlockRows<=m_matrix.rows()
&& "Too many rows passed to MatrixBase::operator<<");
&& "Too many rows passed to comma initializer (operator<<)");
}
ei_assert(m_col<m_matrix.cols()
&& "Too many coefficients passed to MatrixBase::operator<<");
&& "Too many coefficients passed to comma initializer (operator<<)");
ei_assert(m_currentBlockRows==other.rows());
if (OtherDerived::SizeAtCompileTime != Dynamic)
m_matrix.block<OtherDerived::RowsAtCompileTime != Dynamic ? OtherDerived::RowsAtCompileTime : 1,
@@ -90,7 +90,7 @@ struct MatrixBase<Derived>::CommaInitializer
{
ei_assert((m_row+m_currentBlockRows) == m_matrix.rows()
&& m_col == m_matrix.cols()
&& "Too few coefficients passed to Matrix::operator<<");
&& "Too few coefficients passed to comma initializer (operator<<)");
}
/** \returns the built matrix once all its coefficients have been set.

View File

@@ -47,7 +47,7 @@ template<typename Derived> class MapBase
typedef MatrixBase<Derived> Base;
enum {
IsRowMajor = int(ei_traits<Derived>::Flags) & RowMajorBit ? 1 : 0,
IsRowMajor = (int(ei_traits<Derived>::Flags) & RowMajorBit) ? 1 : 0,
PacketAccess = ei_traits<Derived>::PacketAccess,
RowsAtCompileTime = ei_traits<Derived>::RowsAtCompileTime,
ColsAtCompileTime = ei_traits<Derived>::ColsAtCompileTime,