Mercurial > hg > qm-dsp
diff tests/TestMathUtilities.cpp @ 360:a694700f71d8
Factorial: return double (int not big enough for many popular values)
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 16 Oct 2013 16:44:14 +0100 |
parents | a067c2eeb13c |
children | 26daede606a8 |
line wrap: on
line diff
--- a/tests/TestMathUtilities.cpp Wed Oct 16 13:29:00 2013 +0100 +++ b/tests/TestMathUtilities.cpp Wed Oct 16 16:44:14 2013 +0100 @@ -125,12 +125,15 @@ BOOST_AUTO_TEST_CASE(factorial) { - BOOST_CHECK_EQUAL(MathUtilities::factorial(-10), 0); - BOOST_CHECK_EQUAL(MathUtilities::factorial(0), 1); - BOOST_CHECK_EQUAL(MathUtilities::factorial(1), 1); - BOOST_CHECK_EQUAL(MathUtilities::factorial(2), 2); - BOOST_CHECK_EQUAL(MathUtilities::factorial(3), 6); - BOOST_CHECK_EQUAL(MathUtilities::factorial(4), 24); + BOOST_CHECK_EQUAL(MathUtilities::factorial(-10), 0.0); + BOOST_CHECK_EQUAL(MathUtilities::factorial(0), 1.0); + BOOST_CHECK_EQUAL(MathUtilities::factorial(1), 1.0); + BOOST_CHECK_EQUAL(MathUtilities::factorial(2), 2.0); + BOOST_CHECK_EQUAL(MathUtilities::factorial(3), 6.0); + BOOST_CHECK_EQUAL(MathUtilities::factorial(4), 24.0); + + // Too big for an int, hence double return value from factorial + BOOST_CHECK_EQUAL(MathUtilities::factorial(20), 2432902008176640000.0); } BOOST_AUTO_TEST_CASE(gcd)