aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--stdlib/strtod.c15
-rw-r--r--sysdeps/libm-ieee754/w_powl.c2
3 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d10e5c..34100b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1998-02-11 08:30 H.J. Lu <hjl@gnu.org>
+
+ * sysdeps/libm-ieee754/w_powl.c (__powl): Use __finitel instead
+ of __finite.
+
1998-02-11 19:16 Richard Henderson <rth@cygnus.com>
* stdlib/strtod.c (STRTOF): Don't call lshift with zero count.
diff --git a/stdlib/strtod.c b/stdlib/strtod.c
index e93ec9a..061cedc 100644
--- a/stdlib/strtod.c
+++ b/stdlib/strtod.c
@@ -1,6 +1,6 @@
/* Read decimal floating point numbers.
This file is part of the GNU C Library.
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
The GNU C Library is free software; you can redistribute it and/or
@@ -1091,10 +1091,15 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
count_leading_zeros (cnt, den[densize - 1]);
- (void) __mpn_lshift (den, den, densize, cnt);
- cy = __mpn_lshift (num, num, numsize, cnt);
- if (cy != 0)
- num[numsize++] = cy;
+ if (cnt > 0)
+ {
+ /* Don't call `mpn_shift' with a count of zero since the specification
+ does not allow this. */
+ (void) __mpn_lshift (den, den, densize, cnt);
+ cy = __mpn_lshift (num, num, numsize, cnt);
+ if (cy != 0)
+ num[numsize++] = cy;
+ }
/* Now we are ready for the division. But it is not necessary to
do a full multi-precision division because we only need a small
diff --git a/sysdeps/libm-ieee754/w_powl.c b/sysdeps/libm-ieee754/w_powl.c
index aea572d..3529b50 100644
--- a/sysdeps/libm-ieee754/w_powl.c
+++ b/sysdeps/libm-ieee754/w_powl.c
@@ -44,7 +44,7 @@
if(x==0.0){
if(y==0.0)
return __kernel_standard(x,y,220); /* pow(0.0,0.0) */
- if(__finite(y)&&y<0.0)
+ if(__finitel(y)&&y<0.0)
if (signbit (x) && signbit (z))
return __kernel_standard(x,y,223); /* pow(-0.0,negative) */
else