mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-16 22:59:39 +08:00
Extend unit tests for partial reductions
This commit is contained in:
parent
3f2c8b7ff0
commit
c0c3be26ed
@ -57,7 +57,14 @@ template<typename MatrixType> void array_for_matrix(const MatrixType& m)
|
||||
VERIFY_IS_APPROX(m3.rowwise() -= rv1, m1.rowwise() - rv1);
|
||||
|
||||
// empty objects
|
||||
VERIFY_IS_APPROX(m1.block(0,0,0,cols).colwise().sum(), RowVectorType::Zero(cols));
|
||||
VERIFY_IS_APPROX((m1.template block<0,Dynamic>(0,0,0,cols).colwise().sum()), RowVectorType::Zero(cols));
|
||||
VERIFY_IS_APPROX((m1.template block<Dynamic,0>(0,0,rows,0).rowwise().sum()), ColVectorType::Zero(rows));
|
||||
VERIFY_IS_APPROX((m1.template block<0,Dynamic>(0,0,0,cols).colwise().prod()), RowVectorType::Ones(cols));
|
||||
VERIFY_IS_APPROX((m1.template block<Dynamic,0>(0,0,rows,0).rowwise().prod()), ColVectorType::Ones(rows));
|
||||
|
||||
VERIFY_IS_APPROX(m1.block(0,0,0,cols).colwise().sum(), RowVectorType::Zero(cols));
|
||||
VERIFY_IS_APPROX(m1.block(0,0,rows,0).rowwise().sum(), ColVectorType::Zero(rows));
|
||||
VERIFY_IS_APPROX(m1.block(0,0,0,cols).colwise().prod(), RowVectorType::Ones(cols));
|
||||
VERIFY_IS_APPROX(m1.block(0,0,rows,0).rowwise().prod(), ColVectorType::Ones(rows));
|
||||
|
||||
// verify the const accessors exist
|
||||
|
@ -197,11 +197,24 @@ template<typename MatrixType> void vectorwiseop_matrix(const MatrixType& m)
|
||||
VERIFY_RAISES_ASSERT(m1.rowwise() - rowvec.transpose());
|
||||
}
|
||||
|
||||
// ------ partial reductions ------
|
||||
|
||||
// test norm
|
||||
rrres = m1.colwise().norm();
|
||||
VERIFY_IS_APPROX(rrres(c), m1.col(c).norm());
|
||||
rcres = m1.rowwise().norm();
|
||||
VERIFY_IS_APPROX(rcres(r), m1.row(r).norm());
|
||||
#define TEST_PARTIAL_REDUX_BASIC(FUNC,ROW,COL,PREPROCESS) { \
|
||||
ROW = m1 PREPROCESS .colwise().FUNC ; \
|
||||
for(Index k=0; k<cols; ++k) VERIFY_IS_APPROX(ROW(k), m1.col(k) PREPROCESS .FUNC ); \
|
||||
COL = m1 PREPROCESS .rowwise().FUNC ; \
|
||||
for(Index k=0; k<rows; ++k) VERIFY_IS_APPROX(COL(k), m1.row(k) PREPROCESS .FUNC ); \
|
||||
}
|
||||
|
||||
TEST_PARTIAL_REDUX_BASIC(sum(),rowvec,colvec,);
|
||||
TEST_PARTIAL_REDUX_BASIC(prod(),rowvec,colvec,);
|
||||
TEST_PARTIAL_REDUX_BASIC(mean(),rowvec,colvec,);
|
||||
TEST_PARTIAL_REDUX_BASIC(minCoeff(),rrres,rcres,.real());
|
||||
TEST_PARTIAL_REDUX_BASIC(maxCoeff(),rrres,rcres,.real());
|
||||
TEST_PARTIAL_REDUX_BASIC(norm(),rrres,rcres,);
|
||||
TEST_PARTIAL_REDUX_BASIC(squaredNorm(),rrres,rcres,);
|
||||
TEST_PARTIAL_REDUX_BASIC(redux(internal::scalar_sum_op<Scalar,Scalar>()),rowvec,colvec,);
|
||||
|
||||
VERIFY_IS_APPROX(m1.cwiseAbs().colwise().sum(), m1.colwise().template lpNorm<1>());
|
||||
VERIFY_IS_APPROX(m1.cwiseAbs().rowwise().sum(), m1.rowwise().template lpNorm<1>());
|
||||
|
Loading…
x
Reference in New Issue
Block a user