@@ -1142,6 +1142,15 @@ TEST_CASE("double.inf") {
1142
1142
// DBL_MAX + 0.0000000000000001e308
1143
1143
verify (" 1.7976931348623159e308" , std::numeric_limits<double >::infinity (),
1144
1144
std::errc::result_out_of_range);
1145
+
1146
+ // ( (2 - 0.5*2^(−52)) * 2^1023 ) smallest number that overflows to infinity
1147
+ verify (" 179769313486231580793728971405303415079934132710037826936173778980444"
1148
+ " 968292764750946649017977587207096330286416692887910946555547851940402"
1149
+ " 630657488671505820681908902000708383676273854845817711531764475730270"
1150
+ " 069855571366959622842914819860834936475292719074168444365510704342711"
1151
+ " 559699508093042880177904174497792" ,
1152
+ std::numeric_limits<double >::infinity (),
1153
+ std::errc::result_out_of_range);
1145
1154
}
1146
1155
1147
1156
TEST_CASE (" double.general" ) {
@@ -1333,6 +1342,15 @@ TEST_CASE("double.general") {
1333
1342
std::numeric_limits<double >::infinity (), std::errc::result_out_of_range);
1334
1343
verify (" -2240084132271013504.131248280843119943687942846658579428" ,
1335
1344
-0x1 .f1660a65b00bfp +60 );
1345
+
1346
+ // ( (2 - 0.5*2^(−52)) * 2^1023 - 1 ) largest 309 decimal digit number
1347
+ // that rounds to DBL_MAX
1348
+ verify (" 179769313486231580793728971405303415079934132710037826936173778980444"
1349
+ " 968292764750946649017977587207096330286416692887910946555547851940402"
1350
+ " 630657488671505820681908902000708383676273854845817711531764475730270"
1351
+ " 069855571366959622842914819860834936475292719074168444365510704342711"
1352
+ " 559699508093042880177904174497791" ,
1353
+ std::numeric_limits<double >::max ());
1336
1354
}
1337
1355
1338
1356
TEST_CASE (" double.decimal_point" ) {
@@ -1513,6 +1531,11 @@ TEST_CASE("float.inf") {
1513
1531
// FLT_MAX + 0.0000001e38
1514
1532
verify (" 3.4028236e38" , std::numeric_limits<float >::infinity (),
1515
1533
std::errc::result_out_of_range);
1534
+
1535
+ // ( (2 - 0.5*2^(-23)) * 2^127 ) smallest number that overflows to infinity
1536
+ verify (" 340282356779733661637539395458142568448" ,
1537
+ std::numeric_limits<float >::infinity (),
1538
+ std::errc::result_out_of_range);
1516
1539
}
1517
1540
1518
1541
TEST_CASE (" float.general" ) {
@@ -1526,6 +1549,11 @@ TEST_CASE("float.general") {
1526
1549
// -max
1527
1550
verify (" -340282346638528859811704183484516925440" , -0x1 .fffffep +127f );
1528
1551
1552
+ // ( (2 - 0.5*2^(-23)) * 2^127 - 1 ) largest 39 decimal digits number
1553
+ // that rounds to FLT_MAX
1554
+ verify (" 340282356779733661637539395458142568447" ,
1555
+ std::numeric_limits<float >::max ());
1556
+
1529
1557
verify (" -1e-999" , -0 .0f , std::errc::result_out_of_range);
1530
1558
verify (" 1."
1531
1559
" 175494140627517859246175898662808184331245864732796240031385942718174"
0 commit comments