diff options
author | Jitse Niesen <jitse@maths.leeds.ac.uk> | 2011-03-31 13:50:52 +0100 |
---|---|---|
committer | Jitse Niesen <jitse@maths.leeds.ac.uk> | 2011-03-31 13:50:52 +0100 |
commit | d90a8ee8bd0a20b76c5a04e95c79b59ce42963ec (patch) | |
tree | e662b6b7a6ed5061df8a54577df517c8b05c8f35 /test/evaluators.cpp | |
parent | b471161f28e13b41fdc847f441de04ab3aadbfe8 (diff) |
Evaluators: add Block evaluator as dumb wrapper, add slice vectorization.
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r-- | test/evaluators.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp index b804171a7..e3fe53215 100644 --- a/test/evaluators.cpp +++ b/test/evaluators.cpp @@ -98,6 +98,7 @@ void test_evaluators() VERIFY_IS_APPROX_EVALUATOR(m3.transpose(), Matrix3f::Identity().transpose()); // transpose VERIFY_IS_APPROX_EVALUATOR(m3, 2 * Matrix3f::Identity()); // unary VERIFY_IS_APPROX_EVALUATOR(m3, Matrix3f::Identity() + m3); // binary + VERIFY_IS_APPROX_EVALUATOR(m3.block(0,0,2,2), Matrix3f::Identity().block(1,1,2,2)); // block // test linear traversal VERIFY_IS_APPROX_EVALUATOR(m3, Matrix3f::Zero()); // matrix, nullary @@ -118,11 +119,27 @@ void test_evaluators() // test linear vectorization MatrixXf mX(6,6), mXsrc = MatrixXf::Random(6,6); - ArrayXXf aX(6,6), aXsrc = MatrixXf::Random(6,6); + ArrayXXf aX(6,6), aXsrc = ArrayXXf::Random(6,6); VERIFY_IS_APPROX_EVALUATOR(mX, mXsrc); // matrix VERIFY_IS_APPROX_EVALUATOR(aX, aXsrc); // array VERIFY_IS_APPROX_EVALUATOR(mX.transpose(), mXsrc.transpose()); // transpose VERIFY_IS_APPROX_EVALUATOR(mX, MatrixXf::Zero(6,6)); // nullary VERIFY_IS_APPROX_EVALUATOR(mX, 2 * mXsrc); // unary VERIFY_IS_APPROX_EVALUATOR(mX, mXsrc + mXsrc); // binary + + // test blocks and slice vectorization + VERIFY_IS_APPROX_EVALUATOR(m4, (mXsrc.block<4,4>(1,0))); + VERIFY_IS_APPROX_EVALUATOR(aX, ArrayXXf::Constant(10, 10, 3.0).block(2, 3, 6, 6)); + + Matrix4f m4ref = m4; + copy_using_evaluator(m4.block(1, 1, 2, 3), m3.bottomRows(2)); + m4ref.block(1, 1, 2, 3) = m3.bottomRows(2); + VERIFY_IS_APPROX(m4, m4ref); + + mX.setIdentity(20,20); + MatrixXf mXref = MatrixXf::Identity(20,20); + mXsrc = MatrixXf::Random(9,12); + copy_using_evaluator(mX.block(4, 4, 9, 12), mXsrc); + mXref.block(4, 4, 9, 12) = mXsrc; + VERIFY_IS_APPROX(mX, mXref); } |