diff options
author | Jitse Niesen <jitse@maths.leeds.ac.uk> | 2011-04-28 15:52:15 +0100 |
---|---|---|
committer | Jitse Niesen <jitse@maths.leeds.ac.uk> | 2011-04-28 15:52:15 +0100 |
commit | 3b60d2dbc4688fa3216a0df56ecca699a9ff9ea2 (patch) | |
tree | 78ea29e63f5e72307c31f6208742b97b9bb043b6 /test/evaluators.cpp | |
parent | 2d11041e244685340c523351f841fe0b4f3b2a62 (diff) |
Implement swap using evaluators.
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r-- | test/evaluators.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp index ea957cb1e..6e81ad5ef 100644 --- a/test/evaluators.cpp +++ b/test/evaluators.cpp @@ -214,5 +214,27 @@ void test_evaluators() copy_using_evaluator(mat1.diagonal<-1>(), mat1.diagonal(1)); mat2.diagonal<-1>() = mat2.diagonal(1); - VERIFY_IS_APPROX(mat1, mat2); + VERIFY_IS_APPROX(mat1, mat2); + + { + // test swapping + MatrixXd mat1, mat2, mat1ref, mat2ref; + mat1ref = mat1 = MatrixXd::Random(6, 6); + mat2ref = mat2 = 2 * mat1 + MatrixXd::Identity(6, 6); + swap_using_evaluator(mat1, mat2); + mat1ref.swap(mat2ref); + VERIFY_IS_APPROX(mat1, mat1ref); + VERIFY_IS_APPROX(mat2, mat2ref); + + swap_using_evaluator(mat1.block(0, 0, 3, 3), mat2.block(3, 3, 3, 3)); + mat1ref.block(0, 0, 3, 3).swap(mat2ref.block(3, 3, 3, 3)); + VERIFY_IS_APPROX(mat1, mat1ref); + VERIFY_IS_APPROX(mat2, mat2ref); + + swap_using_evaluator(mat1.row(2), mat2.col(3).transpose()); + mat1.row(2).swap(mat2.col(3).transpose()); + VERIFY_IS_APPROX(mat1, mat1ref); + VERIFY_IS_APPROX(mat2, mat2ref); + } + } |