From 263993a7b61959111dd39d5e1cbb5ed861263d46 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 12 Jul 2016 17:19:26 +0200 Subject: Fix test for nearly null input --- test/svd_common.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'test/svd_common.h') diff --git a/test/svd_common.h b/test/svd_common.h index 3588eefaa..605d5dfef 100644 --- a/test/svd_common.h +++ b/test/svd_common.h @@ -42,9 +42,14 @@ void svd_check_full(const MatrixType& m, const SvdType& svd) MatrixUType u = svd.matrixU(); MatrixVType v = svd.matrixV(); RealScalar scaling = m.cwiseAbs().maxCoeff(); - if(scaling<=(std::numeric_limits::min)()) - scaling = RealScalar(1); - VERIFY_IS_APPROX(m/scaling, u * (sigma/scaling) * v.adjoint()); + if(scaling<(std::numeric_limits::min)()) + { + VERIFY(sigma.cwiseAbs().maxCoeff() <= (std::numeric_limits::min)()); + } + else + { + VERIFY_IS_APPROX(m/scaling, u * (sigma/scaling) * v.adjoint()); + } VERIFY_IS_UNITARY(u); VERIFY_IS_UNITARY(v); } @@ -336,7 +341,7 @@ void svd_underoverflow() M << value_set(id(0)), value_set(id(1)), value_set(id(2)), value_set(id(3)); svd.compute(M,ComputeFullU|ComputeFullV); CALL_SUBTEST( svd_check_full(M,svd) ); - + id(k)++; if(id(k)>=value_set.size()) { @@ -344,7 +349,7 @@ void svd_underoverflow() id.head(k).setZero(); k=0; } - + } while((id