summaryrefslogtreecommitdiff
path: root/tests/cxx
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2013-02-17 22:23:22 +0100
committerMarc Glisse <marc.glisse@inria.fr>2013-02-17 22:23:22 +0100
commite656ea90ad71f15b929ee264008afedd531e71b1 (patch)
tree0e2f9509b0bac0332faa9c640138f5d8074d91df /tests/cxx
parente349462e3319df9b2ad1e54fdac803a7cfcac587 (diff)
downloadgmp-e656ea90ad71f15b929ee264008afedd531e71b1.tar.gz
Construct temporary mpq from double on the stack, as is already the case for mpz.
Diffstat (limited to 'tests/cxx')
-rw-r--r--tests/cxx/t-ops2.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/cxx/t-ops2.cc b/tests/cxx/t-ops2.cc
index 3fc472b6f..11a8d5a85 100644
--- a/tests/cxx/t-ops2.cc
+++ b/tests/cxx/t-ops2.cc
@@ -129,6 +129,9 @@ void checkz (){
ASSERT_ALWAYS(sgn(mpz_class(0))==0);
ASSERT_ALWAYS(sgn(mpz_class(9))==1);
ASSERT_ALWAYS(sgn(mpz_class(-17))==-1);
+ ASSERT_ALWAYS(mpz_class(1)+DBL_MAX>2);
+ ASSERT_ALWAYS(mpz_class(1)+DBL_MIN<2);
+ ASSERT_ALWAYS(mpz_class(1)+std::numeric_limits<double>::denorm_min()<2);
}
template<class T>
@@ -175,6 +178,11 @@ void checkqf (){
ASSERT_ALWAYS(sgn(T(0))==0);
ASSERT_ALWAYS(sgn(T(9))==1);
ASSERT_ALWAYS(sgn(T(-17))==-1);
+ ASSERT_ALWAYS(T(1)+DBL_MAX>2);
+ ASSERT_ALWAYS(T(1)+DBL_MIN>1);
+ ASSERT_ALWAYS(T(1)+DBL_MIN<1.001);
+ ASSERT_ALWAYS(T(1)+std::numeric_limits<double>::denorm_min()>1);
+ ASSERT_ALWAYS(T(1)+std::numeric_limits<double>::denorm_min()<1.001);
}
void checkf (){
@@ -236,6 +244,8 @@ main (void)
{
tests_start();
+ // Enough precision for 1 + denorm_min
+ mpf_set_default_prec(DBL_MANT_DIG-DBL_MIN_EXP+42);
checkz();
checkqf<mpq_class>();
checkqf<mpf_class>();