From 4ff522b05323d710bbbed360c4d3f2b6d0916468 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Mon, 10 Nov 2014 16:56:39 +0000 Subject: [PATCH] If gradient2 or gradient1 are zero, then BOOST_REQUIRE_CLOSE will fail, so use BOOST_REQUIRE_SMALL in those situations. --- src/mlpack/tests/regularized_svd_test.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mlpack/tests/regularized_svd_test.cpp b/src/mlpack/tests/regularized_svd_test.cpp index 3d35c76259..7b03466de9 100644 --- a/src/mlpack/tests/regularized_svd_test.cpp +++ b/src/mlpack/tests/regularized_svd_test.cpp @@ -176,8 +176,15 @@ BOOST_AUTO_TEST_CASE(RegularizedSVDFunctionGradient) parameters(i, j) += epsilon; // Compare numerical and backpropagation gradient values. - BOOST_REQUIRE_CLOSE(numGradient1, gradient1(i, j), 1e-2); - BOOST_REQUIRE_CLOSE(numGradient2, gradient2(i, j), 1e-2); + if (gradient1(i, j) == 0.0) + BOOST_REQUIRE_SMALL(numGradient1, 1e-5); + else + BOOST_REQUIRE_CLOSE(numGradient1, gradient1(i, j), 1e-2); + + if (graident2(i, j) == 0.0) + BOOST_REQUIRE_SMALL(numGradient2, 1e-5); + else + BOOST_REQUIRE_CLOSE(numGradient2, gradient2(i, j), 1e-2); } } }