aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-04-28 22:42:34 -0400
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-04-28 22:42:34 -0400
commit5d63d2cc4bf191b71d75c4ca4ed05956853b87eb (patch)
treef2ccc126121d4fb0e94ad43dca409abc570408dc /test
parente2775869588e1df2d19265eac5c167651168a414 (diff)
* kill the retval typedefs, instead introduce ei_xxx_retval which does the job automatically in 99% cases and can be specialized
* add real/imag/abs2 global functions for Array * document ei_global_math_functions_filtering_base * improve unit tests
Diffstat (limited to 'test')
-rw-r--r--test/array.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/array.cpp b/test/array.cpp
index 8fc6c6bd7..80065316a 100644
--- a/test/array.cpp
+++ b/test/array.cpp
@@ -154,6 +154,13 @@ template<typename ArrayType> void array_real(const ArrayType& m)
VERIFY_IS_APPROX(m1.abs().sqrt(), std::sqrt(std::abs(m1)));
VERIFY_IS_APPROX(m1.abs().sqrt(), ei_sqrt(ei_abs(m1)));
+ VERIFY_IS_APPROX(m1.abs(), ei_sqrt(ei_abs2(m1)));
+
+ VERIFY_IS_APPROX(ei_abs2(ei_real(m1)) + ei_abs2(ei_imag(m1)), ei_abs2(m1));
+ VERIFY_IS_APPROX(ei_abs2(std::real(m1)) + ei_abs2(std::imag(m1)), ei_abs2(m1));
+ if(!NumTraits<Scalar>::IsComplex)
+ VERIFY_IS_APPROX(ei_real(m1), m1);
+
VERIFY_IS_APPROX(m1.abs().log(), std::log(std::abs(m1)));
VERIFY_IS_APPROX(m1.abs().log(), ei_log(ei_abs(m1)));
@@ -186,4 +193,12 @@ void test_array()
CALL_SUBTEST_3( array_real(Array44d()) );
CALL_SUBTEST_5( array_real(ArrayXXf(8, 12)) );
}
+
+ VERIFY((ei_is_same_type< ei_global_math_functions_filtering_base<int>::type, int >::ret));
+ VERIFY((ei_is_same_type< ei_global_math_functions_filtering_base<float>::type, float >::ret));
+ VERIFY((ei_is_same_type< ei_global_math_functions_filtering_base<Array2i>::type, ArrayBase<Array2i> >::ret));
+ typedef CwiseUnaryOp<ei_scalar_sum_op<double>, ArrayXd > Xpr;
+ VERIFY((ei_is_same_type< ei_global_math_functions_filtering_base<Xpr>::type,
+ ArrayBase<Xpr>
+ >::ret));
}