comparison tests/TestMathUtilities.cpp @ 135:0fdbb93e92b7

Factorial: return double (int not big enough for many popular values)
author Chris Cannam
date Wed, 16 Oct 2013 16:44:14 +0100
parents 5351b5e9ad9f
children 26daede606a8
comparison
equal deleted inserted replaced
134:5f88f517b637 135:0fdbb93e92b7
123 BOOST_CHECK_EQUAL(MathUtilities::nearestPowerOfTwo(16), 16); 123 BOOST_CHECK_EQUAL(MathUtilities::nearestPowerOfTwo(16), 16);
124 } 124 }
125 125
126 BOOST_AUTO_TEST_CASE(factorial) 126 BOOST_AUTO_TEST_CASE(factorial)
127 { 127 {
128 BOOST_CHECK_EQUAL(MathUtilities::factorial(-10), 0); 128 BOOST_CHECK_EQUAL(MathUtilities::factorial(-10), 0.0);
129 BOOST_CHECK_EQUAL(MathUtilities::factorial(0), 1); 129 BOOST_CHECK_EQUAL(MathUtilities::factorial(0), 1.0);
130 BOOST_CHECK_EQUAL(MathUtilities::factorial(1), 1); 130 BOOST_CHECK_EQUAL(MathUtilities::factorial(1), 1.0);
131 BOOST_CHECK_EQUAL(MathUtilities::factorial(2), 2); 131 BOOST_CHECK_EQUAL(MathUtilities::factorial(2), 2.0);
132 BOOST_CHECK_EQUAL(MathUtilities::factorial(3), 6); 132 BOOST_CHECK_EQUAL(MathUtilities::factorial(3), 6.0);
133 BOOST_CHECK_EQUAL(MathUtilities::factorial(4), 24); 133 BOOST_CHECK_EQUAL(MathUtilities::factorial(4), 24.0);
134
135 // Too big for an int, hence double return value from factorial
136 BOOST_CHECK_EQUAL(MathUtilities::factorial(20), 2432902008176640000.0);
134 } 137 }
135 138
136 BOOST_AUTO_TEST_CASE(gcd) 139 BOOST_AUTO_TEST_CASE(gcd)
137 { 140 {
138 BOOST_CHECK_EQUAL(MathUtilities::gcd(1, 1), 1); 141 BOOST_CHECK_EQUAL(MathUtilities::gcd(1, 1), 1);