From 9310c284ae91f13247c9dd7ff58fc2683b9c523d Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 13 Nov 2013 12:59:54 +0000 Subject: Fix strtod rounding of half the least subnormal (bug 16151). --- stdlib/tst-strtod-round.c | 288 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) (limited to 'stdlib/tst-strtod-round.c') diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c index 9a440264d0..e7aaed17e8 100644 --- a/stdlib/tst-strtod-round.c +++ b/stdlib/tst-strtod-round.c @@ -7535,6 +7535,294 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L), + TEST ("0x1p-150", + false, + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + true, + 0x4p-152, + 0x4p-152, + 0x4p-152, + 0x4p-152, + true, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + true, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + true, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + true, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + true, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L, + 0x4p-152L), + TEST ("0x1p-1075", + false, + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + false, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + true, + 0x2p-1076L, + 0x2p-1076L, + 0x2p-1076L, + 0x2p-1076L, + true, + 0x2p-1076L, + 0x2p-1076L, + 0x2p-1076L, + 0x2p-1076L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + true, + 0x2p-1076L, + 0x2p-1076L, + 0x2p-1076L, + 0x2p-1076L), + TEST ("0x1p-16446", + false, + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + false, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x8p-16448L, + true, + 0x4p-16448L, + 0x4p-16448L, + 0x4p-16448L, + 0x4p-16448L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + true, + 0x4p-16448L, + 0x4p-16448L, + 0x4p-16448L, + 0x4p-16448L), + TEST ("0x1p-16495", + false, + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + false, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x8p-16448L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-16448L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-16496L), + TEST ("-0x1p-150", + false, + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + true, + -0x4p-152, + -0x4p-152, + -0x4p-152, + -0x4p-152, + true, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + true, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + true, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + true, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + true, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L, + -0x4p-152L), + TEST ("-0x1p-1075", + false, + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + false, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + true, + -0x2p-1076L, + -0x2p-1076L, + -0x2p-1076L, + -0x2p-1076L, + true, + -0x2p-1076L, + -0x2p-1076L, + -0x2p-1076L, + -0x2p-1076L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + true, + -0x2p-1076L, + -0x2p-1076L, + -0x2p-1076L, + -0x2p-1076L), + TEST ("-0x1p-16446", + false, + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + false, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + false, + -0x8p-16448L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + true, + -0x4p-16448L, + -0x4p-16448L, + -0x4p-16448L, + -0x4p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + true, + -0x4p-16448L, + -0x4p-16448L, + -0x4p-16448L, + -0x4p-16448L), + TEST ("-0x1p-16495", + false, + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + false, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + false, + -0x8p-16448L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + false, + -0x4p-16448L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + false, + -0x4p-16496L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L), }; static int -- cgit 1.4.1