diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/alpha/fpu/bits/fenv.h | 6 | ||||
-rw-r--r-- | sysdeps/generic/bits/fenv.h | 4 | ||||
-rw-r--r-- | sysdeps/i386/fpu/bits/fenv.h | 6 | ||||
-rw-r--r-- | sysdeps/i386/fpu/bits/mathinline.h | 24 | ||||
-rw-r--r-- | sysdeps/i386/fpu/fesetenv.c | 8 | ||||
-rw-r--r-- | sysdeps/libm-ieee754/s_log2.c | 7 | ||||
-rw-r--r-- | sysdeps/libm-ieee754/s_log2f.c | 7 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/bits/fenv.h | 6 | ||||
-rw-r--r-- | sysdeps/powerpc/bits/fenv.h | 6 | ||||
-rw-r--r-- | sysdeps/powerpc/test-arith.c | 4 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/fpu/bits/fenv.h | 6 | ||||
-rw-r--r-- | sysdeps/sparc/sparc64/fpu/bits/fenv.h | 6 |
12 files changed, 46 insertions, 44 deletions
diff --git a/sysdeps/alpha/fpu/bits/fenv.h b/sysdeps/alpha/fpu/bits/fenv.h index 4482f0a..2ccf149 100644 --- a/sysdeps/alpha/fpu/bits/fenv.h +++ b/sysdeps/alpha/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -68,8 +68,8 @@ enum enum { - FE_TOWARDSZERO = 0, -#define FE_TOWARDSZERO FE_TOWARDSZERO + FE_TOWARDZERO = 0, +#define FE_TOWARDZERO FE_TOWARDZERO FE_DOWNWARD = 1, #define FE_DOWNWARD FE_DOWNWARD diff --git a/sysdeps/generic/bits/fenv.h b/sysdeps/generic/bits/fenv.h index c42540f..7552677 100644 --- a/sysdeps/generic/bits/fenv.h +++ b/sysdeps/generic/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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,7 +36,7 @@ FE_TONEAREST FE_DOWNWARD FE_UPWARD - FE_TOWARDSZERO + FE_TOWARDZERO We define no macro which signals no rounding mode is selectable. */ diff --git a/sysdeps/i386/fpu/bits/fenv.h b/sysdeps/i386/fpu/bits/fenv.h index 4d06b01..cc2aa41 100644 --- a/sysdeps/i386/fpu/bits/fenv.h +++ b/sysdeps/i386/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -52,8 +52,8 @@ enum #define FE_DOWNWARD FE_DOWNWARD FE_UPWARD = 0x800, #define FE_UPWARD FE_UPWARD - FE_TOWARDSZERO = 0xc00 -#define FE_TOWARDSZERO FE_TOWARDSZERO + FE_TOWARDZERO = 0xc00 +#define FE_TOWARDZERO FE_TOWARDZERO }; diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h index 9917316..77b6cd5 100644 --- a/sysdeps/i386/fpu/bits/mathinline.h +++ b/sysdeps/i386/fpu/bits/mathinline.h @@ -39,36 +39,36 @@ better code. */ # define isgreater(x, y) \ ({ register char __result; \ - __asm__ ("fucomip; seta %%al" \ + __asm__ ("fucomip %%st(1), %%st; seta %%al" \ : "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \ __result; }) # define isgreaterequal(x, y) \ ({ register char __result; \ - __asm__ ("fucomip; setae %%al" \ + __asm__ ("fucomip %%st(1), %%st; setae %%al" \ : "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \ __result; }) # define isless(x, y) \ ({ register char __result; \ - __asm__ ("fucomip; setb %%al" \ - : "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \ + __asm__ ("fucomip %%st(1), %%st; seta %%al" \ + : "=a" (__result) : "u" (x), "t" (y) : "cc", "st"); \ __result; }) # define islessequal(x, y) \ ({ register char __result; \ - __asm__ ("fucomip; setbe %%al" \ - : "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \ + __asm__ ("fucomip %%st(1), %%st; setae %%al" \ + : "=a" (__result) : "u" (x), "t" (y) : "cc", "st"); \ __result; }) # define islessgreater(x, y) \ ({ register char __result; \ - __asm__ ("fucomip; setne %%al" \ + __asm__ ("fucomip %%st(1), %%st; setne %%al" \ : "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \ __result; }) # define isunordered(x, y) \ ({ register char __result; \ - __asm__ ("fucomip; setp %%al" \ + __asm__ ("fucomip %%st(1), %%st; setp %%al" \ : "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \ __result; }) # else @@ -87,14 +87,14 @@ # define isless(x, y) \ ({ register char __result; \ - __asm__ ("fucompp; fnstsw; sahf; setb %%al" \ - : "=a" (__result) : "u" (y), "t" (x) : "cc", "st", "st(1)"); \ + __asm__ ("fucompp; fnstsw; testb $0x45, %%ah; setz %%al" \ + : "=a" (__result) : "u" (x), "t" (y) : "cc", "st", "st(1)"); \ __result; }) # define islessequal(x, y) \ ({ register char __result; \ - __asm__ ("fucompp; fnstsw; sahf; setbe %%al" \ - : "=a" (__result) : "u" (y), "t" (x) : "cc", "st", "st(1)"); \ + __asm__ ("fucompp; fnstsw; testb $0x05, %%ah; setz %%al" \ + : "=a" (__result) : "u" (x), "t" (y) : "cc", "st", "st(1)"); \ __result; }) # define islessgreater(x, y) \ diff --git a/sysdeps/i386/fpu/fesetenv.c b/sysdeps/i386/fpu/fesetenv.c index e7300ea..3faf01a 100644 --- a/sysdeps/i386/fpu/fesetenv.c +++ b/sysdeps/i386/fpu/fesetenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -50,7 +50,7 @@ fesetenv (const fenv_t *envp) } else if (envp == FE_NOMASK_ENV) { - temp.control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDSZERO); + temp.control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDZERO); temp.status_word &= ~FE_ALL_EXCEPT; temp.eip = 0; temp.cs_selector = 0; @@ -60,9 +60,9 @@ fesetenv (const fenv_t *envp) } else { - temp.control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDSZERO); + temp.control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDZERO); temp.control_word |= (envp->control_word - & (FE_ALL_EXCEPT | FE_TOWARDSZERO)); + & (FE_ALL_EXCEPT | FE_TOWARDZERO)); temp.status_word &= ~FE_ALL_EXCEPT; temp.status_word |= envp->status_word & FE_ALL_EXCEPT; temp.eip = envp->eip; diff --git a/sysdeps/libm-ieee754/s_log2.c b/sysdeps/libm-ieee754/s_log2.c index 93c20b3..7379ce8 100644 --- a/sysdeps/libm-ieee754/s_log2.c +++ b/sysdeps/libm-ieee754/s_log2.c @@ -62,6 +62,7 @@ static const double #else static double #endif +ln2 = 0.69314718055994530942, two54 = 1.80143985094819840000e+16, /* 43500000 00000000 */ Lg1 = 6.666666666666735130e-01, /* 3FE55555 55555593 */ Lg2 = 3.999999999940941908e-01, /* 3FD99999 9997FA04 */ @@ -109,7 +110,7 @@ static double zero = 0.0; if((0x000fffff&(2+hx))<3) { /* |f| < 2**-20 */ if(f==zero) return dk; R = f*f*(0.5-0.33333333333333333*f); - return dk-(R-f); + return dk-(R-f)/ln2; } s = f/(2.0+f); z = s*s; @@ -122,9 +123,9 @@ static double zero = 0.0; R = t2+t1; if(i>0) { hfsq=0.5*f*f; - return dk-((hfsq-(s*(hfsq+R)))-f); + return dk-((hfsq-(s*(hfsq+R)))-f)/ln2; } else { - return dk-((s*(f-R))-f); + return dk-((s*(f-R))-f)/ln2; } } diff --git a/sysdeps/libm-ieee754/s_log2f.c b/sysdeps/libm-ieee754/s_log2f.c index da9dfb8..2377acd 100644 --- a/sysdeps/libm-ieee754/s_log2f.c +++ b/sysdeps/libm-ieee754/s_log2f.c @@ -23,6 +23,7 @@ static const float #else static float #endif +ln2 = 0.69314718055994530942, two25 = 3.355443200e+07, /* 0x4c000000 */ Lg1 = 6.6666668653e-01, /* 3F2AAAAB */ Lg2 = 4.0000000596e-01, /* 3ECCCCCD */ @@ -69,7 +70,7 @@ static float zero = 0.0; if((0x007fffff&(15+ix))<16) { /* |f| < 2**-20 */ if(f==zero) return dk; R = f*f*((float)0.5-(float)0.33333333333333333*f); - return dk-(R-f); + return dk-(R-f)/ln2; } s = f/((float)2.0+f); z = s*s; @@ -82,9 +83,9 @@ static float zero = 0.0; R = t2+t1; if(i>0) { hfsq=(float)0.5*f*f; - return dk-((hfsq-(s*(hfsq+R)))-f); + return dk-((hfsq-(s*(hfsq+R)))-f)/ln2; } else { - return dk-((s*(f-R))-f); + return dk-((s*(f-R))-f)/ln2; } } weak_alias (__log2f, log2f) diff --git a/sysdeps/m68k/fpu/bits/fenv.h b/sysdeps/m68k/fpu/bits/fenv.h index b1608b9..e1a278d 100644 --- a/sysdeps/m68k/fpu/bits/fenv.h +++ b/sysdeps/m68k/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -47,8 +47,8 @@ enum { FE_TONEAREST = 0, #define FE_TONEAREST FE_TONEAREST - FE_TOWARDSZERO = 1 << 4, -#define FE_TOWARDSZERO FE_TOWARDSZERO + FE_TOWARDZERO = 1 << 4, +#define FE_TOWARDZERO FE_TOWARDZERO FE_DOWNWARD = 2 << 4, #define FE_DOWNWARD FE_DOWNWARD FE_UPWARD = 3 << 4 diff --git a/sysdeps/powerpc/bits/fenv.h b/sysdeps/powerpc/bits/fenv.h index 14fbda8..4f394fd 100644 --- a/sysdeps/powerpc/bits/fenv.h +++ b/sysdeps/powerpc/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -106,8 +106,8 @@ enum { FE_TONEAREST = 0, #define FE_TONEAREST FE_TONEAREST - FE_TOWARDSZERO = 1, -#define FE_TOWARDSZERO FE_TOWARDSZERO + FE_TOWARDZERO = 1, +#define FE_TOWARDZERO FE_TOWARDZERO FE_UPWARD = 2, #define FE_UPWARD FE_UPWARD FE_DOWNWARD = 3, diff --git a/sysdeps/powerpc/test-arith.c b/sysdeps/powerpc/test-arith.c index 9e1be88..3cefc3b 100644 --- a/sysdeps/powerpc/test-arith.c +++ b/sysdeps/powerpc/test-arith.c @@ -1,5 +1,5 @@ /* Test floating-point arithmetic operations. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1998 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 @@ -574,7 +574,7 @@ int main(int argc, char **argv) fesetenv(FE_DFL_ENV); fesetround(FE_TONEAREST); fegetenv(rmodes+0); - fesetround(FE_TOWARDSZERO); + fesetround(FE_TOWARDZERO); fegetenv(rmodes+1); fesetround(FE_UPWARD); fegetenv(rmodes+2); diff --git a/sysdeps/sparc/sparc32/fpu/bits/fenv.h b/sysdeps/sparc/sparc32/fpu/bits/fenv.h index 9fb33ce..6858caa 100644 --- a/sysdeps/sparc/sparc32/fpu/bits/fenv.h +++ b/sysdeps/sparc/sparc32/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -47,8 +47,8 @@ enum { FE_TONEAREST = (0U << 30), #define FE_TONEAREST FE_TONEAREST - FE_TOWARDSZERO = (1U << 30), -#define FE_TOWARDSZERO FE_TOWARDSZERO + FE_TOWARDZERO = (1U << 30), +#define FE_TOWARDZERO FE_TOWARDZERO FE_UPWARD = (2U << 30), #define FE_UPWARD FE_UPWARD FE_DOWNWARD = (3U << 30) diff --git a/sysdeps/sparc/sparc64/fpu/bits/fenv.h b/sysdeps/sparc/sparc64/fpu/bits/fenv.h index 5728e2b..b864abd 100644 --- a/sysdeps/sparc/sparc64/fpu/bits/fenv.h +++ b/sysdeps/sparc/sparc64/fpu/bits/fenv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -47,8 +47,8 @@ enum { FE_TONEAREST = (0U << 30), #define FE_TONEAREST FE_TONEAREST - FE_TOWARDSZERO = (1U << 30), -#define FE_TOWARDSZERO FE_TOWARDSZERO + FE_TOWARDZERO = (1U << 30), +#define FE_TOWARDZERO FE_TOWARDZERO FE_UPWARD = (2U << 30), #define FE_UPWARD FE_UPWARD FE_DOWNWARD = (3U << 30) |