Fix typo in x86-64 powl

This commit is contained in:
H.J. Lu 2011-05-18 19:50:48 -04:00 committed by Ulrich Drepper
parent 0a197a9dfe
commit 8db736347c
5 changed files with 66 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2011-05-17 H.J. Lu <hongjiu.lu@intel.com>
[BZ #12775]
* sysdeps/x86_64/fpu/e_powl.S: Fix a typo.
* math/Makefile (tests): Add test-powl.
(CFLAGS-test-powl.c): Define.
* math/test-powl.c: New file.
2011-05-16 H.J. Lu <hongjiu.lu@intel.com>
* fileops.c (_IO_new_file_fopen): Get fd from _IO_fileno.

4
NEWS
View File

@ -1,4 +1,4 @@
GNU C Library NEWS -- history of user-visible changes. 2011-5-17
GNU C Library NEWS -- history of user-visible changes. 2011-5-18
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.
@ -16,7 +16,7 @@ Version 2.14
12469, 12489, 12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551,
12582, 12583, 12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650,
12653, 12655, 12660, 12681, 12685, 12711, 12713, 12714, 12717, 12723,
12724, 12734, 12738, 12746, 12766
12724, 12734, 12738, 12746, 12766, 12775
* The RPC implementation in libc is obsoleted. Old programs keep working
but new programs cannot be linked with the routines in libc anymore.

View File

@ -90,7 +90,8 @@ distribute += $(filter-out $(generated),$(long-m-yes:=.c) $(long-c-yes:=.c))
# Rules for the test suite.
tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret \
bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int test-tgmath2
bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int \
test-tgmath2 test-powl
# We do the `long double' tests only if this data type is available and
# distinct from `double'.
test-longdouble-yes = test-ldouble test-ildoubl
@ -131,6 +132,7 @@ CFLAGS-test-ldouble.c = -fno-inline -ffloat-store -fno-builtin
CFLAGS-test-tgmath.c = -fno-builtin
CFLAGS-test-tgmath2.c = -fno-builtin
CFLAGS-test-tgmath-ret.c = -fno-builtin
CFLAGS-test-powl.c = -fno-builtin
CPPFLAGS-test-ifloat.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \
-DTEST_FAST_MATH -fno-builtin
CPPFLAGS-test-idouble.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \

51
math/test-powl.c Normal file
View File

@ -0,0 +1,51 @@
/* Test for powl
Copyright (C) 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
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, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio.h>
#include <math.h>
#include <float.h>
#include <ieee754.h>
int
main (void)
{
int result = 0;
#ifndef NO_LONG_DOUBLE
# if LDBL_MANT_DIG == 64
{
long double x = 1e-20;
union ieee854_long_double u;
u.ieee.mantissa0 = 1;
u.ieee.mantissa1 = 1;
u.ieee.exponent = 0;
u.ieee.negative = 0;
(void) powl (0.2, u.d);
x = powl (x, 1.5);
if (fabsl (x - 1e-30) > 1e-10)
{
printf ("powl (1e-20, 1.5): wrong result: %Lg\n", x);
result = 1;
}
}
# endif
#endif
return result;
}

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function.
Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2007
Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2007, 2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -154,7 +154,7 @@ ENTRY(__ieee754_powl)
fucompp // 1.0 : x : y
fnstsw
fxch // x : 1.0 : y
test $4500,%eax
test $0x4500,%eax
jz 7f
fsub %st(1) // x-1 : 1.0 : y
fyl2xp1 // log2(x) : y