aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/array.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-08-23 15:14:20 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-08-23 15:14:20 +0000
commit2120fed849e1d00724694a2c8a041ec5561c750b (patch)
tree984bb801927df2aa12cf866fc76465466bd40eb6 /test/array.cpp
parent312013a08911816e287425d598e55e5d356e0ac5 (diff)
* bug fixes in: Dot, generalized eigen problem, singular matrix detetection in Cholesky
* fix all numerical instabilies in the unit tests, now all tests can be run 2000 times with almost zero failures.
Diffstat (limited to 'test/array.cpp')
-rw-r--r--test/array.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/test/array.cpp b/test/array.cpp
index eb78322c2..25387d0cd 100644
--- a/test/array.cpp
+++ b/test/array.cpp
@@ -32,17 +32,18 @@ template<typename MatrixType> void scalarAdd(const MatrixType& m)
*/
typedef typename MatrixType::Scalar Scalar;
+ typedef typename NumTraits<Scalar>::Real RealScalar;
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
int rows = m.rows();
int cols = m.cols();
- MatrixType m1 = MatrixType::Random(rows, cols),
- m2 = MatrixType::Random(rows, cols),
+ MatrixType m1 = test_random_matrix<MatrixType>(rows, cols),
+ m2 = test_random_matrix<MatrixType>(rows, cols),
m3(rows, cols);
- Scalar s1 = ei_random<Scalar>(),
- s2 = ei_random<Scalar>();
+ Scalar s1 = test_random<Scalar>(),
+ s2 = test_random<Scalar>();
VERIFY_IS_APPROX(m1.cwise() + s1, s1 + m1.cwise());
VERIFY_IS_APPROX(m1.cwise() + s1, MatrixType::Constant(rows,cols,s1) + m1);
@@ -56,7 +57,8 @@ template<typename MatrixType> void scalarAdd(const MatrixType& m)
VERIFY_IS_APPROX(m1.colwise().sum().sum(), m1.sum());
VERIFY_IS_APPROX(m1.rowwise().sum().sum(), m1.sum());
- VERIFY_IS_NOT_APPROX((m1.rowwise().sum()*2).sum(), m1.sum());
+ if (!ei_isApprox(m1.sum(), (m1+m2).sum()))
+ VERIFY_IS_NOT_APPROX(((m1+m2).rowwise().sum()).sum(), m1.sum());
VERIFY_IS_APPROX(m1.colwise().sum(), m1.colwise().redux(ei_scalar_sum_op<Scalar>()));
}