]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix typo in x86-64 powl
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 18 May 2011 23:50:48 +0000 (19:50 -0400)
committerUlrich Drepper <drepper@gmail.com>
Wed, 18 May 2011 23:50:48 +0000 (19:50 -0400)
ChangeLog
NEWS
math/Makefile
math/test-powl.c [new file with mode: 0644]
sysdeps/x86_64/fpu/e_powl.S

index c427a2f96af887fdb973dd2ce8ea1ced1d88d47a..c1bf490c1af28ee744d4f9fad006754698ef5cec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index 6fe707449707252f1d522d13c2c6a4cf55c95b10..a5d803498d7a57d9f36332b28b41b53df108bff2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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.
index 7e3a626c636c592bfbae55e69edbda7e80d150e7..45954e2e87bff08a9530cf8a08bb80e7771ca75c 100644 (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__ \
diff --git a/math/test-powl.c b/math/test-powl.c
new file mode 100644 (file)
index 0000000..960f216
--- /dev/null
@@ -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;
+}
index 4959bea7ac9f8a1e67ff081a9723ac2a427c1c51..a0b1b1df1e2484d79cea76c2cedb61e3841a7ae1 100644 (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