[3/3] alpha: Remove trunc() and truncf() implementations.
Commit Message
They returned incorrect results for odd values greater than 2**52 and
2**23 respectively; and also raised incorrect inexact exceptions.
2016-05-24 Matt Turner <mattst88@gmail.com>
* sysdeps/alpha/fpu/s_trunc.c: Remove file.
* sysdeps/alpha/fpu/s_truncf.c: Likewise.
---
sysdeps/alpha/fpu/s_trunc.c | 52 --------------------------------------------
sysdeps/alpha/fpu/s_truncf.c | 44 -------------------------------------
2 files changed, 96 deletions(-)
delete mode 100644 sysdeps/alpha/fpu/s_trunc.c
delete mode 100644 sysdeps/alpha/fpu/s_truncf.c
Comments
On Tue, 24 May 2016, Matt Turner wrote:
> They returned incorrect results for odd values greater than 2**52 and
> 2**23 respectively; and also raised incorrect inexact exceptions.
Incorrect results means a bug that's not currently filed in Bugzilla, and
as a bug user-visible in releases it should be filed there before fixing
(and then [BZ #N] included in the ChangeLog entry and the bug resolved as
FIXED with milestone set accordingly when the fix goes in, so that the bug
appears in the list of fixed bugs generated for NEWS).
deleted file mode 100644
@@ -1,52 +0,0 @@
-/* Copyright (C) 2007-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, see
- <http://www.gnu.org/licenses/>. */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-
-/* Use the chopped rounding mode conversion instructions to implement trunc. */
-
-double
-__trunc (double x)
-{
- double two52 = copysign (0x1.0p52, x);
- double r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "addt/suic %2, %3, %1\n\tsubt/suic %1, %3, %0"
-#else
- "addt/suc %2, %3, %1\n\tsubt/suc %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(x), "f"(two52));
-
- /* trunc(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysign (r, x);
-}
-
-weak_alias (__trunc, trunc)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__trunc, __truncl)
-weak_alias (__trunc, truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
-#endif
deleted file mode 100644
@@ -1,44 +0,0 @@
-/* Copyright (C) 2007-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, see
- <http://www.gnu.org/licenses/>. */
-
-#include <math.h>
-
-
-/* Use the chopped rounding mode conversion instructions to implement trunc. */
-
-float
-__truncf (float x)
-{
- float two23 = copysignf (0x1.0p23, x);
- float r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "adds/suic %2, %3, %1\n\tsubs/suic %1, %3, %0"
-#else
- "adds/suc %2, %3, %1\n\tsubs/suc %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(x), "f"(two23));
-
- /* trunc(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysignf (r, x);
-}
-
-weak_alias (__truncf, truncf)