diff options
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_log.c | 4 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_logl.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c index 05d318b786..4ecd3722f5 100644 --- a/sysdeps/ieee754/dbl-64/e_log.c +++ b/sysdeps/ieee754/dbl-64/e_log.c @@ -96,6 +96,10 @@ __ieee754_log (double x) if (__glibc_likely (ABS (w) > U03)) goto case_03; + /* log (1) is +0 in all rounding modes. */ + if (w == 0.0) + return 0.0; + /*--- Stage I, the case abs(x-1) < 0.03 */ t8 = MHALF * w; diff --git a/sysdeps/ieee754/ldbl-128/e_logl.c b/sysdeps/ieee754/ldbl-128/e_logl.c index 3d1034dd61..cb43816793 100644 --- a/sysdeps/ieee754/ldbl-128/e_logl.c +++ b/sysdeps/ieee754/ldbl-128/e_logl.c @@ -240,6 +240,8 @@ __ieee754_logl(long double x) /* On this interval the table is not used due to cancellation error. */ if ((x <= 1.0078125L) && (x >= 0.9921875L)) { + if (x == 1.0L) + return 0.0L; z = x - 1.0L; k = 64; t.value = 1.0L; |