aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/evaluators.cpp
diff options
context:
space:
mode:
authorGravatar Jitse Niesen <jitse@maths.leeds.ac.uk>2011-04-28 16:57:35 +0100
committerGravatar Jitse Niesen <jitse@maths.leeds.ac.uk>2011-04-28 16:57:35 +0100
commit06fb7cf4706794a39750354cf0af6742633e980f (patch)
tree0b16bddf4e156a1259901c80f72cddebaf19beb9 /test/evaluators.cpp
parent3b60d2dbc4688fa3216a0df56ecca699a9ff9ea2 (diff)
Implement compound assignments using evaluator of SelfCwiseBinaryOp.
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r--test/evaluators.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp
index 6e81ad5ef..5c8e500bc 100644
--- a/test/evaluators.cpp
+++ b/test/evaluators.cpp
@@ -236,5 +236,29 @@ void test_evaluators()
VERIFY_IS_APPROX(mat1, mat1ref);
VERIFY_IS_APPROX(mat2, mat2ref);
}
-
+
+ {
+ // test compound assignment
+ const Matrix4d mat_const = Matrix4d::Random();
+ Matrix4d mat, mat_ref;
+ mat = mat_ref = Matrix4d::Identity();
+ add_assign_using_evaluator(mat, mat_const);
+ mat_ref += mat_const;
+ VERIFY_IS_APPROX(mat, mat_ref);
+
+ subtract_assign_using_evaluator(mat.row(1), 2*mat.row(2));
+ mat_ref.row(1) -= 2*mat_ref.row(2);
+ VERIFY_IS_APPROX(mat, mat_ref);
+
+ const ArrayXXf arr_const = ArrayXXf::Random(5,3);
+ ArrayXXf arr, arr_ref;
+ arr = arr_ref = ArrayXXf::Constant(5, 3, 0.5);
+ multiply_assign_using_evaluator(arr, arr_const);
+ arr_ref *= arr_const;
+ VERIFY_IS_APPROX(arr, arr_ref);
+
+ divide_assign_using_evaluator(arr.row(1), arr.row(2) + 1);
+ arr_ref.row(1) /= (arr_ref.row(2) + 1);
+ VERIFY_IS_APPROX(arr, arr_ref);
+ }
}