aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/fpu
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
committerUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
commita334319f6530564d22e775935d9c91663623a1b4 (patch)
treeb5877475619e4c938e98757d518bb1e9cbead751 /sysdeps/powerpc/fpu
parent0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (diff)
downloadglibc-a334319f6530564d22e775935d9c91663623a1b4.tar
glibc-a334319f6530564d22e775935d9c91663623a1b4.tar.gz
glibc-a334319f6530564d22e775935d9c91663623a1b4.tar.bz2
glibc-a334319f6530564d22e775935d9c91663623a1b4.zip
(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
Diffstat (limited to 'sysdeps/powerpc/fpu')
-rw-r--r--sysdeps/powerpc/fpu/Dist4
-rw-r--r--sysdeps/powerpc/fpu/bits/fenvinline.h8
-rw-r--r--sysdeps/powerpc/fpu/bits/mathdef.h69
-rw-r--r--sysdeps/powerpc/fpu/bits/mathinline.h20
-rw-r--r--sysdeps/powerpc/fpu/e_sqrt.c5
-rw-r--r--sysdeps/powerpc/fpu/e_sqrtf.c5
-rw-r--r--sysdeps/powerpc/fpu/fegetround.c4
-rw-r--r--sysdeps/powerpc/fpu/feholdexcpt.c3
-rw-r--r--sysdeps/powerpc/fpu/fenv_libc.h37
-rw-r--r--sysdeps/powerpc/fpu/fesetround.c19
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps549
-rw-r--r--sysdeps/powerpc/fpu/math_ldbl.h189
-rw-r--r--sysdeps/powerpc/fpu/s_fabs.S8
-rw-r--r--sysdeps/powerpc/fpu/s_fmax.S8
-rw-r--r--sysdeps/powerpc/fpu/s_fmin.S8
-rw-r--r--sysdeps/powerpc/fpu/s_isnan.c3
-rw-r--r--sysdeps/powerpc/fpu/w_sqrtf.c1
17 files changed, 163 insertions, 777 deletions
diff --git a/sysdeps/powerpc/fpu/Dist b/sysdeps/powerpc/fpu/Dist
new file mode 100644
index 0000000000..948b04a2b3
--- /dev/null
+++ b/sysdeps/powerpc/fpu/Dist
@@ -0,0 +1,4 @@
+fe_nomask.c
+fenv_const.c
+fenv_libc.h
+t_sqrt.c
diff --git a/sysdeps/powerpc/fpu/bits/fenvinline.h b/sysdeps/powerpc/fpu/bits/fenvinline.h
index f7700a49e7..552c8c9db7 100644
--- a/sysdeps/powerpc/fpu/bits/fenvinline.h
+++ b/sysdeps/powerpc/fpu/bits/fenvinline.h
@@ -1,6 +1,5 @@
/* Inline floating-point environment handling functions for powerpc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999 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
@@ -23,9 +22,8 @@
/* Inline definition for fegetround. */
# define fegetround() \
(__extension__ ({ int __fegetround_result; \
- __asm__ __volatile__ \
- ("mcrfs 7,7 ; mfcr %0" \
- : "=r"(__fegetround_result) : : "cr7"); \
+ __asm__ ("mcrfs 7,7 ; mfcr %0" \
+ : "=r"(__fegetround_result) : : "cr7"); \
__fegetround_result & 3; }))
/* The weird 'i#*X' constraints on the following suppress a gcc
diff --git a/sysdeps/powerpc/fpu/bits/mathdef.h b/sysdeps/powerpc/fpu/bits/mathdef.h
new file mode 100644
index 0000000000..3a9d538ee4
--- /dev/null
+++ b/sysdeps/powerpc/fpu/bits/mathdef.h
@@ -0,0 +1,69 @@
+/* Copyright (C) 1997,1998,1999,2000,2003,2004 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. */
+
+#if !defined _MATH_H && !defined _COMPLEX_H
+# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
+#endif
+
+
+/* FIXME! This file describes properties of the compiler, not the machine;
+ it should not be part of libc!
+
+ FIXME! This file does not deal with the -fshort-double option of
+ gcc! */
+
+#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
+# define _MATH_H_MATHDEF 1
+
+# ifdef __GNUC__
+# if __STDC__ == 1
+
+/* In GNU or ANSI mode, gcc leaves `float' expressions as-is. */
+typedef float float_t; /* `float' expressions are evaluated as
+ `float'. */
+typedef double double_t; /* `double' expressions are evaluated as
+ `double'. */
+
+# else
+
+/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
+typedef double float_t; /* `float' expressions are evaluated as
+ `double'. */
+typedef double double_t; /* `double' expressions are evaluated as
+ `double'. */
+
+# endif
+# else
+
+/* Wild guess at types for float_t and double_t. */
+typedef double float_t;
+typedef double double_t;
+
+# endif
+
+/* The values returned by `ilogb' for 0 and NaN respectively. */
+# define FP_ILOGB0 (-2147483647)
+# define FP_ILOGBNAN (2147483647)
+
+#endif /* ISO C99 */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+/* Signal that we do not really have a `long double'. The disables the
+ declaration of all the `long double' function variants. */
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
diff --git a/sysdeps/powerpc/fpu/bits/mathinline.h b/sysdeps/powerpc/fpu/bits/mathinline.h
index aed899e882..44f7dbec52 100644
--- a/sysdeps/powerpc/fpu/bits/mathinline.h
+++ b/sysdeps/powerpc/fpu/bits/mathinline.h
@@ -1,5 +1,5 @@
/* Inline math functions for powerpc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -123,26 +123,20 @@ __NTH (fdimf (float __x, float __y))
#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
/* This code is used internally in the GNU libc. */
-#ifdef __LIBC_INTERNAL_MATH_INLINES
+# ifdef __LIBC_INTERNAL_MATH_INLINES
#include <sysdep.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-# if __WORDSIZE == 64 || defined _ARCH_PWR4
-# define __CPU_HAS_FSQRT 1
-# else
-# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
-# endif
-
extern double __slow_ieee754_sqrt (double);
__MATH_INLINE double
__NTH (__ieee754_sqrt (double __x))
{
double __z;
- /* If the CPU is 64-bit we can use the optional FP instructions. */
- if (__CPU_HAS_FSQRT)
+ /* If the CPU is 64-bit we can use the optional FP instructions we. */
+ if ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
{
/* Volatile is required to prevent the compiler from moving the
fsqrt instruction above the branch. */
@@ -163,8 +157,8 @@ __NTH (__ieee754_sqrtf (float __x))
{
float __z;
- /* If the CPU is 64-bit we can use the optional FP instructions. */
- if (__CPU_HAS_FSQRT)
+ /* If the CPU is 64-bit we can use the optional FP instructions we. */
+ if ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
{
/* Volatile is required to prevent the compiler from moving the
fsqrts instruction above the branch. */
@@ -178,5 +172,5 @@ __NTH (__ieee754_sqrtf (float __x))
return __z;
}
-#endif /* __LIBC_INTERNAL_MATH_INLINES */
+# endif /* __LIBC_INTERNAL_MATH_INLINES */
#endif /* __GNUC__ && !_SOFT_FLOAT */
diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
index 540b924656..eb9984d0a1 100644
--- a/sysdeps/powerpc/fpu/e_sqrt.c
+++ b/sysdeps/powerpc/fpu/e_sqrt.c
@@ -24,6 +24,7 @@
#include <sysdep.h>
#include <ldsodefs.h>
+#include <dl-procinfo.h>
static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
@@ -169,8 +170,8 @@ __ieee754_sqrt (x)
{
double z;
- /* If the CPU is 64-bit we can use the optional FP instructions. */
- if (__CPU_HAS_FSQRT)
+ /* If the CPU is 64-bit we can use the optional FP instructions we. */
+ if ((GLRO (dl_hwcap) & PPC_FEATURE_64) != 0)
{
/* Volatile is required to prevent the compiler from moving the
fsqrt instruction above the branch. */
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
index b63d31472b..9b701012af 100644
--- a/sysdeps/powerpc/fpu/e_sqrtf.c
+++ b/sysdeps/powerpc/fpu/e_sqrtf.c
@@ -24,6 +24,7 @@
#include <sysdep.h>
#include <ldsodefs.h>
+#include <dl-procinfo.h>
static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
@@ -146,8 +147,8 @@ __ieee754_sqrtf (x)
{
double z;
- /* If the CPU is 64-bit we can use the optional FP instructions. */
- if (__CPU_HAS_FSQRT)
+ /* If the CPU is 64-bit we can use the optional FP instructions we. */
+ if ((GLRO (dl_hwcap) & PPC_FEATURE_64) != 0)
{
/* Volatile is required to prevent the compiler from moving the
fsqrt instruction above the branch. */
diff --git a/sysdeps/powerpc/fpu/fegetround.c b/sysdeps/powerpc/fpu/fegetround.c
index 93663ad546..ae521fdf10 100644
--- a/sysdeps/powerpc/fpu/fegetround.c
+++ b/sysdeps/powerpc/fpu/fegetround.c
@@ -23,5 +23,7 @@
int
fegetround (void)
{
- return __fegetround();
+ int result;
+ asm ("mcrfs 7,7 ; mfcr %0" : "=r"(result) : : "cr7"); \
+ return result & 3;
}
diff --git a/sysdeps/powerpc/fpu/feholdexcpt.c b/sysdeps/powerpc/fpu/feholdexcpt.c
index 150becd678..8ac875cc72 100644
--- a/sysdeps/powerpc/fpu/feholdexcpt.c
+++ b/sysdeps/powerpc/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment and clear exceptions.
- Copyright (C) 1997, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1997 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
@@ -36,4 +36,3 @@ feholdexcept (fenv_t *envp)
return 0;
}
-libm_hidden_def (feholdexcept)
diff --git a/sysdeps/powerpc/fpu/fenv_libc.h b/sysdeps/powerpc/fpu/fenv_libc.h
index fd5fc0c767..7ae12a7d2b 100644
--- a/sysdeps/powerpc/fpu/fenv_libc.h
+++ b/sysdeps/powerpc/fpu/fenv_libc.h
@@ -1,5 +1,5 @@
/* Internal libc stuff for floating point environment routines.
- Copyright (C) 1997, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997 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
@@ -54,41 +54,6 @@ typedef union
unsigned int l[2];
} fenv_union_t;
-
-static inline int
-__fegetround (void)
-{
- int result;
- asm volatile ("mcrfs 7,7\n\t"
- "mfcr %0" : "=r"(result) : : "cr7");
- return result & 3;
-}
-#define fegetround() __fegetround()
-
-static inline int
-__fesetround (int round)
-{
- if ((unsigned int) round < 2)
- {
- asm volatile ("mtfsb0 30");
- if ((unsigned int) round == 0)
- asm volatile ("mtfsb0 31");
- else
- asm volatile ("mtfsb1 31");
- }
- else
- {
- asm volatile ("mtfsb1 30");
- if ((unsigned int) round == 2)
- asm volatile ("mtfsb0 31");
- else
- asm volatile ("mtfsb1 31");
- }
-
- return 0;
-}
-#define fesetround(mode) __fesetround(mode)
-
/* Definitions of all the FPSCR bit numbers */
enum {
FPSCR_FX = 0, /* exception summary */
diff --git a/sysdeps/powerpc/fpu/fesetround.c b/sysdeps/powerpc/fpu/fesetround.c
index a7efa3bbb0..f7cd6af135 100644
--- a/sysdeps/powerpc/fpu/fesetround.c
+++ b/sysdeps/powerpc/fpu/fesetround.c
@@ -1,5 +1,5 @@
/* Set current rounding direction.
- Copyright (C) 1997, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -20,13 +20,22 @@
#include <fenv_libc.h>
-#undef fesetround
int
fesetround (int round)
{
+ fenv_union_t u;
+
if ((unsigned int) round > 3)
return 1;
- else
- return __fesetround(round);
+
+ /* Get the current state. */
+ u.fenv = fegetenv_register ();
+
+ /* Set the relevant bits. */
+ u.l[1] = (u.l[1] & ~3) | (round & 3);
+
+ /* Put the new state in effect. */
+ fesetenv_register (u.fenv);
+
+ return 0;
}
-libm_hidden_def (fesetround)
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index 8516e915e7..6dd3940d22 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -1,57 +1,37 @@
# Begin of automatic generation
-# acos
-Test "acos (2e-17) == 1.57079632679489659923132169163975144":
-ildouble: 1
-ldouble: 1
-
-# asin
-Test "asin (0.75) == 0.848062078981481008052944338998418080":
-ildouble: 2
-ldouble: 2
-
# atan2
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
-ildouble: 1
-ldouble: 1
Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-float: 1
-ifloat: 1
+float: 3
+ifloat: 3
Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-float: 1
-ifloat: 1
+float: 3
+ifloat: 3
Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
+float: 6
+ifloat: 6
# atanh
Test "atanh (0.75) == 0.972955074527656652552676371721589865":
float: 1
ifloat: 1
-# cabs
-Test "cabs (0.75 + 1.25 i) == 1.45773797371132511771853821938639577":
-ildouble: 1
-ldouble: 1
-
# cacosh
-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
double: 1
float: 7
idouble: 1
ifloat: 7
-Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+Test "Imaginary part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
double: 1
float: 3
idouble: 1
ifloat: 3
# casin
-Test "Real part of: casin (-2 - 3 i) == -0.57065278432109940071028387968566963 - 1.9833870299165354323470769028940395 i":
-ildouble: 1
-ldouble: 1
Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
double: 1
float: 1
@@ -64,15 +44,11 @@ double: 5
float: 1
idouble: 5
ifloat: 1
-ildouble: 4
-ldouble: 4
Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
double: 3
float: 6
idouble: 3
ifloat: 6
-ildouble: 1
-ldouble: 1
Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
float: 1
ifloat: 1
@@ -86,8 +62,6 @@ ifloat: 1
Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
float: 3
ifloat: 3
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
double: 1
float: 1
@@ -144,13 +118,9 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
float: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
# cexp
Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
@@ -159,141 +129,66 @@ ifloat: 1
Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
float: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
-ildouble: 1
-ldouble: 1
# clog
Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
float: 3
ifloat: 3
-ildouble: 1
-ldouble: 1
Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
float: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
-ildouble: 1
-ldouble: 1
# clog10
Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
double: 1
float: 5
idouble: 1
ifloat: 5
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i":
-double: 1
-idouble: 1
Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
float: 1
ifloat: 1
-ildouble: 3
-ldouble: 3
Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
-double: 1
float: 1
-idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
# cos
Test "cos (M_PI_6l * 2.0) == 0.5":
@@ -311,71 +206,48 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-Test "cos (16.0) == -0.9576594803233846418996372326511034717803"
-ildouble: 2
-ldouble: 2
# cpow
Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
double: 1
float: 4
idouble: 1
ifloat: 4
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-ildouble: 2
-ldouble: 2
Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
double: 2
float: 3
idouble: 2
ifloat: 3
-Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
-ildouble: 1
-ldouble: 1
Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
double: 1
-float: 5
+float: 4
idouble: 1
-ifloat: 5
+ifloat: 4
Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
float: 2
ifloat: 2
-ildouble: 2
-ldouble: 2
Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
double: 2
float: 2
idouble: 2
ifloat: 2
-ildouble: 2
-ldouble: 2
# csinh
Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
# csqrt
Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
@@ -389,9 +261,6 @@ ifloat: 1
Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
double: 1
idouble: 1
-Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-ildouble: 1
-ldouble: 1
Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
double: 1
idouble: 1
@@ -408,8 +277,6 @@ ifloat: 1
Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
# erf
Test "erf (1.25) == 0.922900128256458230136523481197281140":
@@ -427,50 +294,29 @@ Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
double: 1
idouble: 1
-# exp
-Test "exp (0.75) == 2.11700001661267466854536981983709561":
-ildouble: 1
-ldouble: 1
-Test "exp (50.0) == 5184705528587072464087.45332293348538":
-ildouble: 1
-ldouble: 1
-
# exp10
Test "exp10 (-1) == 0.1":
double: 2
float: 1
idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "exp10 (3) == 1000":
double: 6
float: 2
idouble: 6
ifloat: 2
-ildouble: 8
-ldouble: 8
-
-# exp2
-Test "exp2 (10) == 1024":
-ildouble: 2
-ldouble: 2
# expm1
Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
double: 1
idouble: 1
Test "expm1 (1) == M_El - 1.0":
-double: 1
float: 1
-idouble: 1
ifloat: 1
# hypot
@@ -492,9 +338,6 @@ ifloat: 1
Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
float: 1
ifloat: 1
-Test "hypot (0.75, 1.25) == 1.45773797371132511771853821938639577":
-ildouble: 1
-ldouble: 1
Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
float: 1
ifloat: 1
@@ -505,121 +348,78 @@ ifloat: 1
# j0
Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
-float: 2
+float: 1
idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
+ifloat: 1
Test "j0 (10.0) == -0.245935764451348335197760862485328754":
-double: 3
+double: 2
float: 1
-idouble: 3
+idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "j0 (2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
-float: 2
+float: 1
idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
+ifloat: 1
Test "j0 (8.0) == 0.171650807137553906090869407851972001":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
# j1
Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
float: 2
ifloat: 2
-ildouble: 1
-ldouble: 1
Test "j1 (2.0) == 0.576724807756873387202448242269137087":
double: 1
idouble: 1
Test "j1 (8.0) == 0.234636346853914624381276651590454612":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
# jn
Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
-float: 2
+float: 1
idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
+ifloat: 1
Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
-double: 3
+double: 2
float: 1
-idouble: 3
+idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
-float: 2
+float: 1
idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
+ifloat: 1
Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
float: 2
ifloat: 2
-ildouble: 1
-ldouble: 1
Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
double: 1
idouble: 1
Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
-ildouble: 1
-ldouble: 1
Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
-ildouble: 1
-ldouble: 1
Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
float: 1
ifloat: 1
-ildouble: 4
-ldouble: 4
Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
-float: 4
-ifloat: 4
-Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083":
-ildouble: 1
-ldouble: 1
+float: 3
+ifloat: 3
Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
double: 1
float: 1
@@ -628,23 +428,16 @@ ifloat: 1
Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
double: 1
idouble: 1
-Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083":
-ildouble: 1
-ldouble: 1
Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
double: 3
-float: 2
+float: 1
idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
+ifloat: 1
Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
double: 1
-float: 2
+float: 1
idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
+ifloat: 1
# lgamma
Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
@@ -657,8 +450,6 @@ double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 3
-ldouble: 3
# log10
Test "log10 (0.75) == -0.124938736608299953132449886193870744":
@@ -675,16 +466,6 @@ Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
float: 1
ifloat: 1
-# log2
-Test "log2 (e) == M_LOG2El":
-ildouble: 1
-ldouble: 1
-
-# sin
-Test "sin (16.0) == -0.2879033166650652947844562482186175296207"
-ildouble: 2
-ldouble: 2
-
# sincos
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
double: 1
@@ -705,25 +486,10 @@ Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646763723170752936
float: 1
ifloat: 1
-# sinh
-Test "sinh (0.75) == 0.822316731935829980703661634446913849":
-ildouble: 1
-ldouble: 1
-
# tan
Test "tan (pi/4) == 1":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-
-# tanh
-Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
-ildouble: 1
-ldouble: 1
-Test "tanh (0.75) == 0.635148952387287319214434357312496495":
-ildouble: 1
-ldouble: 1
# tgamma
Test "tgamma (-0.5) == -2 sqrt (pi)":
@@ -741,19 +507,11 @@ idouble: 1
ifloat: 1
# y0
-Test "y0 (0.125) == -1.38968062514384052915582277745018693":
-ildouble: 1
-ldouble: 1
-Test "y0 (0.75) == -0.137172769385772397522814379396581855":
-ildouble: 1
-ldouble: 1
Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
double: 2
float: 1
idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "y0 (1.5) == 0.382448923797758843955068554978089862":
double: 2
float: 1
@@ -764,8 +522,6 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Test "y0 (2.0) == 0.510375672649745119596606592727157873":
double: 1
idouble: 1
@@ -774,50 +530,30 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
# y1
-Test "y1 (0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "y1 (1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
Test "y1 (10.0) == 0.249015424206953883923283474663222803":
double: 3
float: 1
idouble: 3
ifloat: 1
-ildouble: 2
-ldouble: 2
Test "y1 (2.0) == -0.107032431540937546888370772277476637":
double: 1
float: 1
-idouble: 2
-ifloat: 2
+idouble: 1
+ifloat: 1
Test "y1 (8.0) == -0.158060461731247494255555266187483550":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 2
-ldouble: 2
# yn
-Test "yn (0, 0.125) == -1.38968062514384052915582277745018693":
-ildouble: 1
-ldouble: 1
-Test "yn (0, 0.75) == -0.137172769385772397522814379396581855":
-ildouble: 1
-ldouble: 1
Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
double: 2
float: 1
idouble: 2
ifloat: 1
-ildouble: 2
-ldouble: 2
Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
double: 2
float: 1
@@ -828,8 +564,6 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
Test "yn (0, 2.0) == 0.510375672649745119596606592727157873":
double: 1
idouble: 1
@@ -838,21 +572,11 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
-float: 2
-ifloat: 2
Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
double: 3
float: 1
idouble: 3
ifloat: 1
-ildouble: 2
-ldouble: 2
Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
double: 1
float: 1
@@ -863,14 +587,6 @@ double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-double: 1
-idouble: 1
-Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
-double: 1
-idouble: 1
Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
double: 1
float: 2
@@ -881,21 +597,12 @@ float: 2
ifloat: 2
Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
double: 2
-float: 2
idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
double: 3
float: 1
idouble: 3
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-double: 1
-idouble: 1
Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
float: 1
ifloat: 1
@@ -904,58 +611,24 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
double: 1
idouble: 1
# Maximal error of functions:
-Function: "acos":
-ildouble: 1
-ldouble: 1
-
-Function: "acosh":
-ildouble: 1
-ldouble: 1
-
-Function: "asin":
-ildouble: 2
-ldouble: 2
-
-Function: "asinh":
-ildouble: 1
-ldouble: 1
-
Function: "atan2":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+float: 6
+ifloat: 6
Function: "atanh":
float: 1
ifloat: 1
-Function: "cabs":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cacos":
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cacos":
-ildouble: 1
-ldouble: 1
-
Function: Real part of "cacosh":
double: 1
float: 7
idouble: 1
ifloat: 7
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "cacosh":
double: 1
@@ -968,42 +641,28 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "casin":
-ildouble: 1
-ldouble: 1
Function: Real part of "casinh":
double: 5
float: 1
idouble: 5
ifloat: 1
-ildouble: 4
-ldouble: 4
Function: Imaginary part of "casinh":
double: 3
float: 6
idouble: 3
ifloat: 6
-ildouble: 1
-ldouble: 1
Function: Real part of "catan":
float: 4
ifloat: 4
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "catan":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Real part of "catanh":
double: 4
@@ -1016,190 +675,118 @@ ifloat: 6
Function: "cbrt":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
Function: Real part of "ccos":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "ccos":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Real part of "ccosh":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "ccosh":
float: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
Function: Real part of "cexp":
float: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
Function: Imaginary part of "cexp":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Real part of "clog":
float: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
Function: Imaginary part of "clog":
float: 3
ifloat: 3
-ildouble: 1
-ldouble: 1
Function: Real part of "clog10":
float: 1
ifloat: 1
-ildouble: 3
-ldouble: 3
Function: Imaginary part of "clog10":
double: 1
float: 5
idouble: 1
ifloat: 5
-ildouble: 1
-ldouble: 1
Function: "cos":
double: 2
float: 1
idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cosh":
-ildouble: 1
-ldouble: 1
Function: Real part of "cpow":
double: 2
-float: 5
+float: 4
idouble: 2
-ifloat: 5
-ildouble: 2
-ldouble: 2
+ifloat: 4
Function: Imaginary part of "cpow":
double: 2
float: 2
idouble: 2
ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "cproj":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csin":
-ildouble: 1
-ldouble: 1
Function: Real part of "csinh":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "csinh":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: Real part of "csqrt":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csqrt":
-ildouble: 1
-ldouble: 1
Function: Real part of "ctan":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "ctan":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
Function: Real part of "ctanh":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 1
-ldouble: 1
Function: Imaginary part of "ctanh":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: "erf":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
Function: "erfc":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp":
-ildouble: 1
-ldouble: 1
Function: "exp10":
double: 6
float: 2
idouble: 6
ifloat: 2
-ildouble: 8
-ldouble: 8
-
-Function: "exp2":
-ildouble: 2
-ldouble: 2
Function: "expm1":
double: 1
@@ -1207,130 +794,76 @@ float: 1
idouble: 1
ifloat: 1
-Function: "gamma":
-ildouble: 1
-ldouble: 1
-
Function: "hypot":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: "j0":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 1
-ldouble: 1
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
Function: "j1":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 1
-ldouble: 1
Function: "jn":
double: 3
-float: 4
+float: 3
idouble: 3
-ifloat: 4
-ildouble: 4
-ldouble: 4
+ifloat: 3
Function: "lgamma":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "log":
-ildouble: 1
-ldouble: 1
Function: "log10":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 1
-ldouble: 1
Function: "log1p":
float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log2":
-ildouble: 1
-ldouble: 1
-
-Function: "pow":
-ildouble: 1
-ldouble: 1
-
-Function: "sin":
-ildouble: 1
-ldouble: 1
Function: "sincos":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sinh":
-ildouble: 1
-ldouble: 1
Function: "tan":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "tanh":
-ildouble: 1
-ldouble: 1
Function: "tgamma":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: "y0":
double: 2
float: 1
idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
Function: "y1":
double: 3
float: 2
idouble: 3
ifloat: 2
-ildouble: 2
-ldouble: 2
Function: "yn":
double: 3
float: 2
idouble: 3
ifloat: 2
-ildouble: 2
-ldouble: 2
# end of automatic generation
diff --git a/sysdeps/powerpc/fpu/math_ldbl.h b/sysdeps/powerpc/fpu/math_ldbl.h
deleted file mode 100644
index 6cd6d0bdfe..0000000000
--- a/sysdeps/powerpc/fpu/math_ldbl.h
+++ /dev/null
@@ -1,189 +0,0 @@
-#ifndef _MATH_PRIVATE_H_
-#error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
-#endif
-
-#include <sysdeps/ieee754/ldbl-128/math_ldbl.h>
-#include <ieee754.h>
-
-static inline void
-ldbl_extract_mantissa (int64_t *hi64, u_int64_t *lo64, int *exp, long double x)
-{
- /* We have 105 bits of mantissa plus one implicit digit. Since
- 106 bits are representable we use the first implicit digit for
- the number before the decimal point and the second implicit bit
- as bit 53 of the mantissa. */
- unsigned long long hi, lo;
- int ediff;
- union ibm_extended_long_double eldbl;
- eldbl.d = x;
- *exp = eldbl.ieee.exponent - IBM_EXTENDED_LONG_DOUBLE_BIAS;
-
- lo = ((long long)eldbl.ieee.mantissa2 << 32) | eldbl.ieee.mantissa3;
- hi = ((long long)eldbl.ieee.mantissa0 << 32) | eldbl.ieee.mantissa1;
- /* If the lower double is not a denomal or zero then set the hidden
- 53rd bit. */
- if (eldbl.ieee.exponent2 > 0x001)
- {
- lo |= (1ULL << 52);
- lo = lo << 7; /* pre-shift lo to match ieee854. */
- /* The lower double is normalized separately from the upper. We
- may need to adjust the lower manitissa to reflect this. */
- ediff = eldbl.ieee.exponent - eldbl.ieee.exponent2;
- if (ediff > 53)
- lo = lo >> (ediff-53);
- }
- hi |= (1ULL << 52);
-
- if ((eldbl.ieee.negative != eldbl.ieee.negative2)
- && ((eldbl.ieee.exponent2 != 0) && (lo != 0LL)))
- {
- hi--;
- lo = (1ULL << 60) - lo;
- if (hi < (1ULL << 52))
- {
- /* we have a borrow from the hidden bit, so shift left 1. */
- hi = (hi << 1) | (lo >> 59);
- lo = 0xfffffffffffffffLL & (lo << 1);
- *exp = *exp - 1;
- }
- }
- *lo64 = (hi << 60) | lo;
- *hi64 = hi >> 4;
-}
-
-static inline long double
-ldbl_insert_mantissa (int sign, int exp, int64_t hi64, u_int64_t lo64)
-{
- union ibm_extended_long_double u;
- unsigned long hidden2, lzcount;
- unsigned long long hi, lo;
-
- u.ieee.negative = sign;
- u.ieee.negative2 = sign;
- u.ieee.exponent = exp + IBM_EXTENDED_LONG_DOUBLE_BIAS;
- u.ieee.exponent2 = exp-53 + IBM_EXTENDED_LONG_DOUBLE_BIAS;
- /* Expect 113 bits (112 bits + hidden) right justified in two longs.
- The low order 53 bits (52 + hidden) go into the lower double */
- lo = (lo64 >> 7)& ((1ULL << 53) - 1);
- hidden2 = (lo64 >> 59) & 1ULL;
- /* The high order 53 bits (52 + hidden) go into the upper double */
- hi = (lo64 >> 60) & ((1ULL << 11) - 1);
- hi |= (hi64 << 4);
-
- if (lo != 0LL)
- {
- /* hidden2 bit of low double controls rounding of the high double.
- If hidden2 is '1' then round up hi and adjust lo (2nd mantissa)
- plus change the sign of the low double to compensate. */
- if (hidden2)
- {
- hi++;
- u.ieee.negative2 = !sign;
- lo = (1ULL << 53) - lo;
- }
- /* The hidden bit of the lo mantissa is zero so we need to
- normalize the it for the low double. Shift it left until the
- hidden bit is '1' then adjust the 2nd exponent accordingly. */
-
- if (sizeof (lo) == sizeof (long))
- lzcount = __builtin_clzl (lo);
- else if ((lo >> 32) != 0)
- lzcount = __builtin_clzl ((long) (lo >> 32));
- else
- lzcount = __builtin_clzl ((long) lo) + 32;
- lzcount = lzcount - 11;
- if (lzcount > 0)
- {
- int expnt2 = u.ieee.exponent2 - lzcount;
- if (expnt2 >= 1)
- {
- /* Not denormal. Normalize and set low exponent. */
- lo = lo << lzcount;
- u.ieee.exponent2 = expnt2;
- }
- else
- {
- /* Is denormal. */
- lo = lo << (lzcount + expnt2);
- u.ieee.exponent2 = 0;
- }
- }
- }
- else
- {
- u.ieee.negative2 = 0;
- u.ieee.exponent2 = 0;
- }
-
- u.ieee.mantissa3 = lo & ((1ULL << 32) - 1);
- u.ieee.mantissa2 = (lo >> 32) & ((1ULL << 20) - 1);
- u.ieee.mantissa1 = hi & ((1ULL << 32) - 1);
- u.ieee.mantissa0 = (hi >> 32) & ((1ULL << 20) - 1);
- return u.d;
-}
-
-/* gcc generates disgusting code to pack and unpack long doubles.
- This tells gcc that pack/unpack is really a nop. We use fr1/fr2
- because those are the regs used to pass/return a single
- long double arg. */
-static inline long double
-ldbl_pack (double a, double aa)
-{
- register long double x __asm__ ("fr1");
- register double xh __asm__ ("fr1");
- register double xl __asm__ ("fr2");
- xh = a;
- xl = aa;
- __asm__ ("" : "=f" (x) : "f" (xh), "f" (xl));
- return x;
-}
-
-static inline void
-ldbl_unpack (long double l, double *a, double *aa)
-{
- register long double x __asm__ ("fr1");
- register double xh __asm__ ("fr1");
- register double xl __asm__ ("fr2");
- x = l;
- __asm__ ("" : "=f" (xh), "=f" (xl) : "f" (x));
- *a = xh;
- *aa = xl;
-}
-
-
-/* Convert a finite long double to canonical form.
- Does not handle +/-Inf properly. */
-static inline void
-ldbl_canonicalize (double *a, double *aa)
-{
- double xh, xl;
-
- xh = *a + *aa;
- xl = (*a - xh) + *aa;
- *a = xh;
- *aa = xl;
-}
-
-/* Simple inline nearbyint (double) function .
- Only works in the default rounding mode
- but is useful in long double rounding functions. */
-static inline double
-ldbl_nearbyint (double a)
-{
- double two52 = 0x10000000000000LL;
-
- if (__builtin_expect ((__builtin_fabs (a) < two52), 1))
- {
- if (__builtin_expect ((a > 0.0), 1))
- {
- a += two52;
- a -= two52;
- }
- else if (__builtin_expect ((a < 0.0), 1))
- {
- a = two52 - a;
- a = -(a - two52);
- }
- }
- return a;
-}
diff --git a/sysdeps/powerpc/fpu/s_fabs.S b/sysdeps/powerpc/fpu/s_fabs.S
index ab9a3a99bb..157ef09507 100644
--- a/sysdeps/powerpc/fpu/s_fabs.S
+++ b/sysdeps/powerpc/fpu/s_fabs.S
@@ -25,13 +25,13 @@ ENTRY(__fabs)
blr
END(__fabs)
-weak_alias (__fabs,fabs)
+weak_alias(__fabs,fabs)
/* It turns out that it's safe to use this code even for single-precision. */
strong_alias(__fabs,__fabsf)
-weak_alias (__fabs,fabsf)
+weak_alias(__fabs,fabsf)
#ifdef NO_LONG_DOUBLE
-weak_alias (__fabs,__fabsl)
-weak_alias (__fabs,fabsl)
+weak_alias(__fabs,__fabsl)
+weak_alias(__fabs,fabsl)
#endif
diff --git a/sysdeps/powerpc/fpu/s_fmax.S b/sysdeps/powerpc/fpu/s_fmax.S
index 8502c863b2..5666cdd079 100644
--- a/sysdeps/powerpc/fpu/s_fmax.S
+++ b/sysdeps/powerpc/fpu/s_fmax.S
@@ -31,13 +31,13 @@ ENTRY(__fmax)
blr
END(__fmax)
-weak_alias (__fmax,fmax)
+weak_alias(__fmax,fmax)
/* It turns out that it's safe to use this code even for single-precision. */
strong_alias(__fmax,__fmaxf)
-weak_alias (__fmax,fmaxf)
+weak_alias(__fmax,fmaxf)
#ifdef NO_LONG_DOUBLE
-weak_alias (__fmax,__fmaxl)
-weak_alias (__fmax,fmaxl)
+weak_alias(__fmax,__fmaxl)
+weak_alias(__fmax,fmaxl)
#endif
diff --git a/sysdeps/powerpc/fpu/s_fmin.S b/sysdeps/powerpc/fpu/s_fmin.S
index 5f788d06f3..96387d9ae1 100644
--- a/sysdeps/powerpc/fpu/s_fmin.S
+++ b/sysdeps/powerpc/fpu/s_fmin.S
@@ -31,13 +31,13 @@ ENTRY(__fmin)
blr
END(__fmin)
-weak_alias (__fmin,fmin)
+weak_alias(__fmin,fmin)
/* It turns out that it's safe to use this code even for single-precision. */
strong_alias(__fmin,__fminf)
-weak_alias (__fmin,fminf)
+weak_alias(__fmin,fminf)
#ifdef NO_LONG_DOUBLE
-weak_alias (__fmin,__fminl)
-weak_alias (__fmin,fminl)
+weak_alias(__fmin,__fminl)
+weak_alias(__fmin,fminl)
#endif
diff --git a/sysdeps/powerpc/fpu/s_isnan.c b/sysdeps/powerpc/fpu/s_isnan.c
index f3313c7b08..38ec821cc3 100644
--- a/sysdeps/powerpc/fpu/s_isnan.c
+++ b/sysdeps/powerpc/fpu/s_isnan.c
@@ -1,5 +1,5 @@
/* Return 1 if argument is a NaN, else 0.
- Copyright (C) 1997, 2000, 2002, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2002 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
@@ -23,7 +23,6 @@
#define __GI___isnanf __GI___Xisnanf
#include "math.h"
-#include <math_ldbl_opt.h>
#include <fenv_libc.h>
#undef __isnanf
diff --git a/sysdeps/powerpc/fpu/w_sqrtf.c b/sysdeps/powerpc/fpu/w_sqrtf.c
index 54b4f3be7f..e3f3c995e8 100644
--- a/sysdeps/powerpc/fpu/w_sqrtf.c
+++ b/sysdeps/powerpc/fpu/w_sqrtf.c
@@ -23,6 +23,7 @@
#include <sysdep.h>
#include <ldsodefs.h>
+#include <dl-procinfo.h>
#ifdef __STDC__
float