+2014-05-23 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #16977]
+ * sysdeps/i386/fpu/e_log10.S (__ieee754_log10): Take absolute
+ value when x - 1 is zero.
+ * sysdeps/i386/fpu/e_log10f.S (__ieee754_log10f): Likewise.
+ * sysdeps/i386/fpu/e_log10l.S (__ieee754_log10l): Likewise.
+ * sysdeps/ieee754/ldbl-128/e_log10l.c (__ieee754_log10l): Return
+ 0.0L for an argument of 1.0L.
+ * sysdeps/ieee754/ldbl-128ibm/e_log10l.c (__ieee754_log10l):
+ Likewise.
+ * sysdeps/x86_64/fpu/e_log10l.S (__ieee754_log10l): Take absolute
+ value when x - 1 is zero.
+ * math/libm-test.inc (log10_test): Use ALL_RM_TEST.
+ * sysdeps/i386/fpu/libm-test-ulps: Update.
+ * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
+
2014-05-23 Rasmus Villemoes <rv@rasmusvillemoes.dk>
* manual/filesys.texi (Scanning Directory Content): Fix prototype of
16760, 16770, 16786, 16789, 16791, 16799, 16800, 16815, 16823, 16824,
16831, 16838, 16849, 16854, 16876, 16877, 16885, 16888, 16890, 16912,
16915, 16916, 16917, 16922, 16927, 16928, 16932, 16943, 16958, 16966,
- 16967, 16965.
+ 16967, 16965, 16977.
* The minimum Linux kernel version that this version of the GNU C Library
can be used with is 2.6.32.
static void
log10_test (void)
{
- START (log10, 0);
- RUN_TEST_LOOP_f_f (log10, log10_test_data, );
- END;
+ ALL_RM_TEST (log10, 0, log10_test_data, RUN_TEST_LOOP_f_f, END);
}
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
ildouble: 1
ldouble: 1
+Function: "log10_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log10_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log10_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
Function: "log1p":
ildouble: 1
ldouble: 1
if (hx >= 0x7fff000000000000LL)
return (x + x);
+ if (x == 1.0L)
+ return 0.0L;
+
/* separate mantissa from exponent */
/* Note, frexp is used so that denormal numbers
if (hx >= 0x7ff0000000000000LL)
return (x + x);
+ if (x == 1.0L)
+ return 0.0L;
+
/* separate mantissa from exponent */
/* Note, frexp is used so that denormal numbers
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
ildouble: 1
ldouble: 1
+Function: "log10_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log10_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log10_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
Function: "log1p":
float: 1
ifloat: 1