diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | stdlib/tst-strtod.c | 17 | ||||
-rw-r--r-- | sysdeps/libm-i387/e_scalb.S | 4 | ||||
-rw-r--r-- | sysdeps/libm-i387/e_scalbf.S | 4 | ||||
-rw-r--r-- | sysdeps/libm-i387/e_scalbl.S | 4 |
5 files changed, 28 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog index db3e8d7dee..42651f50cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +1998-06-18 12:29 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/libm-i387/e_scalb.S: Fix bug in FPU stack handling. + * sysdeps/libm-i387/e_scalbf.S: Likewise. + * sysdeps/libm-i387/e_scalbl.S: Likewise. + +1998-06-18 Ulrich Drepper <drepper@cygnus.com> + + * stdlib/tst-strtod.c (long_dbl): Provide receipe to regenerate + longestdbl. + 1998-06-18 10:26 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile (modules): Add MACINTOSH. diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c index e2c6734e56..b9158c11f9 100644 --- a/stdlib/tst-strtod.c +++ b/stdlib/tst-strtod.c @@ -114,12 +114,17 @@ expand (dst, c) static int long_dbl (void) { - const char longestdbl[] = - "179769313486231570814527423731704356798070567525844996598917476" - "803157260780028538760589558632766878171540458953514382464234321" - "326889464182768467546703537516986049910576551282076245490090389" - "328944075868508455133942304583236903222948165808559332123348274" - "797826204144723168738177180919299881250404026184124858368"; + /* Regenerate this string using + + echo '(2^53-1)*2^(1024-53)' | bc | sed 's/\([^\]*\)\\*$/ "\1"/' + + */ + static const char longestdbl[] = + "17976931348623157081452742373170435679807056752584499659891747680315" + "72607800285387605895586327668781715404589535143824642343213268894641" + "82768467546703537516986049910576551282076245490090389328944075868508" + "45513394230458323690322294816580855933212334827479782620414472316873" + "8177180919299881250404026184124858368"; double d = strtod (longestdbl, NULL); printf ("strtod (\"%s\", NULL) = %g\n", longestdbl, d); diff --git a/sysdeps/libm-i387/e_scalb.S b/sysdeps/libm-i387/e_scalb.S index b4c23ca595..7ff5541e2f 100644 --- a/sysdeps/libm-i387/e_scalb.S +++ b/sysdeps/libm-i387/e_scalb.S @@ -71,10 +71,10 @@ ENTRY(__ieee754_scalb) fnstsw movl 8(%esp), %edx shrl $5, %eax - fstp %st(1) + fstp %st + fstp %st andl $0x80000000, %edx andl $8, %eax - fstp %st(1) shrl $27, %edx addl %edx, %eax fldl MOX(zero_nan, %eax, 1) diff --git a/sysdeps/libm-i387/e_scalbf.S b/sysdeps/libm-i387/e_scalbf.S index c869da9b38..4222eecc97 100644 --- a/sysdeps/libm-i387/e_scalbf.S +++ b/sysdeps/libm-i387/e_scalbf.S @@ -73,10 +73,10 @@ ENTRY(__ieee754_scalbf) fnstsw movl 4(%esp), %edx shrl $5, %eax - fstp %st(1) + fstp %st + fstp %st andl $0x80000000, %edx andl $8, %eax - fstp %st(1) shrl $27, %edx addl %edx, %eax fldl MOX(zero_nan, %eax, 1) diff --git a/sysdeps/libm-i387/e_scalbl.S b/sysdeps/libm-i387/e_scalbl.S index 33eb7323dc..56cc833a56 100644 --- a/sysdeps/libm-i387/e_scalbl.S +++ b/sysdeps/libm-i387/e_scalbl.S @@ -73,10 +73,10 @@ ENTRY(__ieee754_scalbl) fnstsw movl 12(%esp), %edx shrl $5, %eax - fstp %st(1) + fstp %st + fstp %st andl $0x8000, %edx andl $8, %eax - fstp %st(1) shrl $11, %edx addl %edx, %eax fldl MOX(zero_nan, %eax, 1) |