diff options
Diffstat (limited to 'REORG.TODO/stdlib/bug-strtod.c')
-rw-r--r-- | REORG.TODO/stdlib/bug-strtod.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/REORG.TODO/stdlib/bug-strtod.c b/REORG.TODO/stdlib/bug-strtod.c new file mode 100644 index 0000000000..b91f739104 --- /dev/null +++ b/REORG.TODO/stdlib/bug-strtod.c @@ -0,0 +1,67 @@ +/* Test to strtod etc for numbers like x000...0000.000e-nn. + This file is part of the GNU C Library. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "tst-strtod.h" + +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ +static int \ +test_strto ## FSUF (void) \ +{ \ + char buf[300]; \ + int cnt; \ + int result = 0; \ + \ + for (cnt = 0; cnt < 200; ++cnt) \ + { \ + ssize_t n; \ + FTYPE f; \ + \ + n = sprintf (buf, "%d", cnt); \ + memset (buf + n, '0', cnt); \ + sprintf (buf + n + cnt, ".000e-%d", cnt); \ + f = strto ## FSUF (buf, NULL); \ + \ + if (f != (FTYPE) cnt) \ + { \ + char fstr[FSTRLENMAX]; \ + char fcntstr[FSTRLENMAX]; \ + FTOSTR (fstr, sizeof (fstr), "%g", f); \ + FTOSTR (fcntstr, sizeof (fstr), "%g", (FTYPE) cnt); \ + printf ("strto" #FSUF "(\"%s\") " \ + "failed for cnt == %d (%s instead of %s)\n", \ + buf, cnt, fstr, fcntstr); \ + result = 1; \ + } \ + else \ + printf ( "strto" #FSUF "() fine for cnt == %d\n", cnt); \ + } \ + return result; \ +} + +GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) + +int +main (void) +{ + return STRTOD_TEST_FOREACH (test_strto); +} |