From 0c956331a04ffd02f9444703349225b579960c7a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 9 May 2017 19:52:20 +0100 Subject: [PATCH] Fix gmp test failures --- test/Jamfile.v2 | 2 +- test/common_factor_test.cpp | 164 ++++++++++++++++++------------------ 2 files changed, 84 insertions(+), 82 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index c6b48c2..31dcd2a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -31,5 +31,5 @@ test-suite integer [ compile-fail fail_uint_fast.cpp ] [ compile-fail fail_uint_least.cpp ] [ compile-fail fail_uint_65.cpp ] - [ run common_factor_test.cpp : : : [ check-target-builds has_gmpxx "Checking for gmpxx.h" : BOOST_INTEGER_HAS_GMPXX_H=1 ] ] + [ run common_factor_test.cpp : : : [ check-target-builds has_gmpxx "Checking for gmpxx.h" : BOOST_INTEGER_HAS_GMPXX_H=1 -lgmp -lgmpxx ] ] ; diff --git a/test/common_factor_test.cpp b/test/common_factor_test.cpp index 0c36984..131c78c 100644 --- a/test/common_factor_test.cpp +++ b/test/common_factor_test.cpp @@ -280,22 +280,22 @@ template< class T > void gcd_int_test() // signed_test_types #endif // Originally from Boost.Rational tests - BOOST_TEST_EQ( gcd(static_cast(1), static_cast(-1)), static_cast( 1) ); - BOOST_TEST_EQ( gcd(static_cast(-1), static_cast(1)), static_cast( 1) ); - BOOST_TEST_EQ( gcd(static_cast(1), static_cast(1)), static_cast( 1) ); - BOOST_TEST_EQ( gcd(static_cast(-1), static_cast(-1)), static_cast( 1) ); - BOOST_TEST_EQ( gcd(static_cast(0), static_cast(0)), static_cast( 0) ); - BOOST_TEST_EQ( gcd(static_cast(7), static_cast(0)), static_cast( 7) ); - BOOST_TEST_EQ( gcd(static_cast(0), static_cast(9)), static_cast( 9) ); - BOOST_TEST_EQ( gcd(static_cast(-7), static_cast(0)), static_cast( 7) ); - BOOST_TEST_EQ( gcd(static_cast(0), static_cast(-9)), static_cast( 9) ); - BOOST_TEST_EQ( gcd(static_cast(42), static_cast(30)), static_cast( 6) ); - BOOST_TEST_EQ( gcd(static_cast(6), static_cast(-9)), static_cast( 3) ); - BOOST_TEST_EQ( gcd(static_cast(-10), static_cast(-10)), static_cast(10) ); - BOOST_TEST_EQ( gcd(static_cast(-25), static_cast(-10)), static_cast( 5) ); - BOOST_TEST_EQ( gcd(static_cast(3), static_cast(7)), static_cast( 1) ); - BOOST_TEST_EQ( gcd(static_cast(8), static_cast(9)), static_cast( 1) ); - BOOST_TEST_EQ( gcd(static_cast(7), static_cast(49)), static_cast( 7) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(1), static_cast(-1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(-1), static_cast(1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(1), static_cast(1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(-1), static_cast(-1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(0), static_cast(0)), static_cast( 0) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(7), static_cast(0)), static_cast( 7) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(0), static_cast(9)), static_cast( 9) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(-7), static_cast(0)), static_cast( 7) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(0), static_cast(-9)), static_cast( 9) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(42), static_cast(30)), static_cast( 6) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(6), static_cast(-9)), static_cast( 3) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(-10), static_cast(-10)), static_cast(10) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(-25), static_cast(-10)), static_cast( 5) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(3), static_cast(7)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(8), static_cast(9)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(7), static_cast(49)), static_cast( 7) ); // Again with function object: BOOST_TEST_EQ(gcd_evaluator()(1, -1), static_cast(1)); BOOST_TEST_EQ(gcd_evaluator()(-1, 1), static_cast(1)); @@ -328,22 +328,22 @@ void gcd_unmarked_int_test() // then does an absolute-value on the result. Signed types that are not // marked as such (due to no std::numeric_limits specialization) may be off // by a sign. - BOOST_TEST_EQ( abs(gcd(static_cast(1), static_cast(-1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(gcd(static_cast(-1), static_cast(1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(gcd(static_cast(1), static_cast(1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(gcd(static_cast(-1), static_cast(-1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(gcd(static_cast(0), static_cast(0) )), MyInt2( 0) ); - BOOST_TEST_EQ( abs(gcd(static_cast(7), static_cast(0) )), MyInt2( 7) ); - BOOST_TEST_EQ( abs(gcd(static_cast(0), static_cast(9) )), MyInt2( 9) ); - BOOST_TEST_EQ( abs(gcd(static_cast(-7), static_cast(0) )), MyInt2( 7) ); - BOOST_TEST_EQ( abs(gcd(static_cast(0), static_cast(-9) )), MyInt2( 9) ); - BOOST_TEST_EQ( abs(gcd(static_cast(42), static_cast(30))), MyInt2( 6) ); - BOOST_TEST_EQ( abs(gcd(static_cast(6), static_cast(-9) )), MyInt2( 3) ); - BOOST_TEST_EQ( abs(gcd(static_cast(-10), static_cast(-10) )), MyInt2(10) ); - BOOST_TEST_EQ( abs(gcd(static_cast(-25), static_cast(-10) )), MyInt2( 5) ); - BOOST_TEST_EQ( abs(gcd(static_cast(3), static_cast(7) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(gcd(static_cast(8), static_cast(9) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(gcd(static_cast(7), static_cast(49) )), MyInt2( 7) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(1), static_cast(-1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(-1), static_cast(1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(1), static_cast(1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(-1), static_cast(-1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(0), static_cast(0) )), MyInt2( 0) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(7), static_cast(0) )), MyInt2( 7) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(0), static_cast(9) )), MyInt2( 9) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(-7), static_cast(0) )), MyInt2( 7) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(0), static_cast(-9) )), MyInt2( 9) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(42), static_cast(30))), MyInt2( 6) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(6), static_cast(-9) )), MyInt2( 3) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(-10), static_cast(-10) )), MyInt2(10) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(-25), static_cast(-10) )), MyInt2( 5) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(3), static_cast(7) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(8), static_cast(9) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::gcd(static_cast(7), static_cast(49) )), MyInt2( 7) ); } // GCD on unsigned integer types @@ -357,14 +357,14 @@ template< class T > void gcd_unsigned_test() // unsigned_test_types // Note that unmarked types (i.e. have no std::numeric_limits // specialization) are treated like non/unsigned types - BOOST_TEST_EQ( gcd(static_cast(1u), static_cast(1u)), static_cast( 1u) ); - BOOST_TEST_EQ( gcd(static_cast(0u), static_cast(0u)), static_cast( 0u) ); - BOOST_TEST_EQ( gcd(static_cast(7u), static_cast(0u)), static_cast( 7u) ); - BOOST_TEST_EQ( gcd(static_cast(0u), static_cast(9u)), static_cast( 9u) ); - BOOST_TEST_EQ( gcd(static_cast(42u), static_cast(30u)), static_cast( 6u) ); - BOOST_TEST_EQ( gcd(static_cast(3u), static_cast(7u)), static_cast( 1u) ); - BOOST_TEST_EQ( gcd(static_cast(8u), static_cast(9u)), static_cast( 1u) ); - BOOST_TEST_EQ( gcd(static_cast(7u), static_cast(49u)), static_cast( 7u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(1u), static_cast(1u)), static_cast( 1u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(0u), static_cast(0u)), static_cast( 0u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(7u), static_cast(0u)), static_cast( 7u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(0u), static_cast(9u)), static_cast( 9u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(42u), static_cast(30u)), static_cast( 6u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(3u), static_cast(7u)), static_cast( 1u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(8u), static_cast(9u)), static_cast( 1u) ); + BOOST_TEST_EQ( boost::integer::gcd(static_cast(7u), static_cast(49u)), static_cast( 7u) ); } // GCD at compile-time @@ -419,22 +419,22 @@ template< class T > void lcm_int_test() // signed_test_types #endif // Originally from Boost.Rational tests - BOOST_TEST_EQ( lcm(static_cast(1), static_cast(-1)), static_cast( 1) ); - BOOST_TEST_EQ( lcm(static_cast(-1), static_cast(1)), static_cast( 1) ); - BOOST_TEST_EQ( lcm(static_cast(1), static_cast(1)), static_cast( 1) ); - BOOST_TEST_EQ( lcm(static_cast(-1), static_cast(-1)), static_cast( 1) ); - BOOST_TEST_EQ( lcm(static_cast(0), static_cast(0)), static_cast( 0) ); - BOOST_TEST_EQ( lcm(static_cast(6), static_cast(0)), static_cast( 0) ); - BOOST_TEST_EQ( lcm(static_cast(0), static_cast(7)), static_cast( 0) ); - BOOST_TEST_EQ( lcm(static_cast(-5), static_cast(0)), static_cast( 0) ); - BOOST_TEST_EQ( lcm(static_cast(0), static_cast(-4)), static_cast( 0) ); - BOOST_TEST_EQ( lcm(static_cast(18), static_cast(30)), static_cast(90) ); - BOOST_TEST_EQ( lcm(static_cast(-6), static_cast(9)), static_cast(18) ); - BOOST_TEST_EQ( lcm(static_cast(-10), static_cast(-10)), static_cast(10) ); - BOOST_TEST_EQ( lcm(static_cast(25), static_cast(-10)), static_cast(50) ); - BOOST_TEST_EQ( lcm(static_cast(3), static_cast(7)), static_cast(21) ); - BOOST_TEST_EQ( lcm(static_cast(8), static_cast(9)), static_cast(72) ); - BOOST_TEST_EQ( lcm(static_cast(7), static_cast(49)), static_cast(49) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(1), static_cast(-1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(-1), static_cast(1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(1), static_cast(1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(-1), static_cast(-1)), static_cast( 1) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(0), static_cast(0)), static_cast( 0) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(6), static_cast(0)), static_cast( 0) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(0), static_cast(7)), static_cast( 0) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(-5), static_cast(0)), static_cast( 0) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(0), static_cast(-4)), static_cast( 0) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(18), static_cast(30)), static_cast(90) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(-6), static_cast(9)), static_cast(18) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(-10), static_cast(-10)), static_cast(10) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(25), static_cast(-10)), static_cast(50) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(3), static_cast(7)), static_cast(21) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(8), static_cast(9)), static_cast(72) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(7), static_cast(49)), static_cast(49) ); // Again with function object: BOOST_TEST_EQ(lcm_evaluator()(1, -1), static_cast(1)); BOOST_TEST_EQ(lcm_evaluator()(-1, 1), static_cast(1)); @@ -467,22 +467,22 @@ void lcm_unmarked_int_test() // then does an absolute-value on the result. Signed types that are not // marked as such (due to no std::numeric_limits specialization) may be off // by a sign. - BOOST_TEST_EQ( abs(lcm( static_cast(1), static_cast(-1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(lcm(static_cast(-1), static_cast(1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(lcm(static_cast(1), static_cast(1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(lcm(static_cast(-1), static_cast(-1) )), MyInt2( 1) ); - BOOST_TEST_EQ( abs(lcm(static_cast(0), static_cast(0) )), MyInt2( 0) ); - BOOST_TEST_EQ( abs(lcm(static_cast(6), static_cast(0) )), MyInt2( 0) ); - BOOST_TEST_EQ( abs(lcm(static_cast(0), static_cast(7) )), MyInt2( 0) ); - BOOST_TEST_EQ( abs(lcm(static_cast(-5), static_cast(0) )), MyInt2( 0) ); - BOOST_TEST_EQ( abs(lcm(static_cast(0), static_cast(-4) )), MyInt2( 0) ); - BOOST_TEST_EQ( abs(lcm(static_cast(18), static_cast(30) )), MyInt2(90) ); - BOOST_TEST_EQ( abs(lcm(static_cast(-6), static_cast(9) )), MyInt2(18) ); - BOOST_TEST_EQ( abs(lcm(static_cast(-10), static_cast(-10) )), MyInt2(10) ); - BOOST_TEST_EQ( abs(lcm(static_cast(25), static_cast(-10) )), MyInt2(50) ); - BOOST_TEST_EQ( abs(lcm(static_cast(3), static_cast(7) )), MyInt2(21) ); - BOOST_TEST_EQ( abs(lcm(static_cast(8), static_cast(9) )), MyInt2(72) ); - BOOST_TEST_EQ( abs(lcm(static_cast(7), static_cast(49) )), MyInt2(49) ); + BOOST_TEST_EQ( abs(boost::integer::lcm( static_cast(1), static_cast(-1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(-1), static_cast(1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(1), static_cast(1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(-1), static_cast(-1) )), MyInt2( 1) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(0), static_cast(0) )), MyInt2( 0) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(6), static_cast(0) )), MyInt2( 0) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(0), static_cast(7) )), MyInt2( 0) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(-5), static_cast(0) )), MyInt2( 0) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(0), static_cast(-4) )), MyInt2( 0) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(18), static_cast(30) )), MyInt2(90) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(-6), static_cast(9) )), MyInt2(18) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(-10), static_cast(-10) )), MyInt2(10) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(25), static_cast(-10) )), MyInt2(50) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(3), static_cast(7) )), MyInt2(21) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(8), static_cast(9) )), MyInt2(72) ); + BOOST_TEST_EQ( abs(boost::integer::lcm(static_cast(7), static_cast(49) )), MyInt2(49) ); } // LCM on unsigned integer types @@ -496,14 +496,14 @@ template< class T > void lcm_unsigned_test() // unsigned_test_types // Note that unmarked types (i.e. have no std::numeric_limits // specialization) are treated like non/unsigned types - BOOST_TEST_EQ( lcm(static_cast(1u), static_cast(1u)), static_cast( 1u) ); - BOOST_TEST_EQ( lcm(static_cast(0u), static_cast(0u)), static_cast( 0u) ); - BOOST_TEST_EQ( lcm(static_cast(6u), static_cast(0u)), static_cast( 0u) ); - BOOST_TEST_EQ( lcm(static_cast(0u), static_cast(7u)), static_cast( 0u) ); - BOOST_TEST_EQ( lcm(static_cast(18u), static_cast(30u)), static_cast(90u) ); - BOOST_TEST_EQ( lcm(static_cast(3u), static_cast(7u)), static_cast(21u) ); - BOOST_TEST_EQ( lcm(static_cast(8u), static_cast(9u)), static_cast(72u) ); - BOOST_TEST_EQ( lcm(static_cast(7u), static_cast(49u)), static_cast(49u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(1u), static_cast(1u)), static_cast( 1u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(0u), static_cast(0u)), static_cast( 0u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(6u), static_cast(0u)), static_cast( 0u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(0u), static_cast(7u)), static_cast( 0u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(18u), static_cast(30u)), static_cast(90u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(3u), static_cast(7u)), static_cast(21u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(8u), static_cast(9u)), static_cast(72u) ); + BOOST_TEST_EQ( boost::integer::lcm(static_cast(7u), static_cast(49u)), static_cast(49u) ); } // LCM at compile-time @@ -592,8 +592,10 @@ template void gcd_and_lcm_on_rationals() # define TEST_SIGNED(test)\ TEST_SIGNED__(test)\ test(); +# define TEST_SIGNED_NO_GMP(test) TEST_SIGNED__(test) #else # define TEST_SIGNED(test) TEST_SIGNED__(test) +# define TEST_SIGNED_NO_GMP(test) TEST_SIGNED__(test) #endif int main() @@ -609,7 +611,7 @@ int main() TEST_UNSIGNED(lcm_unsigned_test) lcm_static_test(); variadics(); - TEST_SIGNED(gcd_and_lcm_on_rationals) + TEST_SIGNED_NO_GMP(gcd_and_lcm_on_rationals) return boost::report_errors(); }