Mercurial > hg > qm-dsp
comparison 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 |
comparison
equal
deleted
inserted
replaced
359:0ea56b09577e | 360:a694700f71d8 |
---|---|
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); |