diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | stdlib/tst-strtod.c | 25 |
2 files changed, 25 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 8c553808fc..4ab2f59c83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * stdlib/strtod.c (INTERNAL): Up the safety margin for cutting of decimal input digits. + * stdlib/tst-strtod.c (main): Add test for strtof bug. 2003-02-18 Ulrich Drepper <drepper@redhat.com> diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c index afd522b9cc..9496c3d776 100644 --- a/stdlib/tst-strtod.c +++ b/stdlib/tst-strtod.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,96,97,98,99,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1991,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -125,6 +125,29 @@ main (int argc, char ** argv) status = 1; } + const char input[] = "3752432815e-39"; + + float f1 = strtold (input, NULL); + float f2; + float f3 = strtof (input, NULL); + sscanf (input, "%g", &f2); + + if (f1 != f2) + { + printf ("f1 = %a != f2 = %a\n", f1, f2); + status = 1; + } + if (f1 != f3) + { + printf ("f1 = %a != f3 = %a\n", f1, f3); + status = 1; + } + if (f2 != f3) + { + printf ("f2 = %a != f3 = %a\n", f2, f3); + status = 1; + } + status |= long_dbl (); status |= locale_test (); |