summary refs log tree commit diff
path: root/sysdeps/ieee754/dbl-64
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/dbl-64')
-rw-r--r--sysdeps/ieee754/dbl-64/e_exp.c1
-rw-r--r--sysdeps/ieee754/dbl-64/mpa.h31
-rw-r--r--sysdeps/ieee754/dbl-64/mpexp.c163
-rw-r--r--sysdeps/ieee754/dbl-64/mplog.c65
4 files changed, 0 insertions, 260 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c
index 1bcb382c77..62035a890b 100644
--- a/sysdeps/ieee754/dbl-64/e_exp.c
+++ b/sysdeps/ieee754/dbl-64/e_exp.c
@@ -23,7 +23,6 @@
 /*           exp1                                                          */
 /*                                                                         */
 /* FILES NEEDED:dla.h endian.h mpa.h mydefs.h uexp.h                       */
-/*              mpa.c mpexp.x                                              */
 /*                                                                         */
 /* An ultimate exp routine. Given an IEEE double machine number x          */
 /* it computes an almost correctly rounded (to nearest) value of e^x       */
diff --git a/sysdeps/ieee754/dbl-64/mpa.h b/sysdeps/ieee754/dbl-64/mpa.h
index f21b66d0f3..1e188de4d1 100644
--- a/sysdeps/ieee754/dbl-64/mpa.h
+++ b/sysdeps/ieee754/dbl-64/mpa.h
@@ -119,36 +119,5 @@ void __dvd (const mp_no *, const mp_no *, mp_no *, int);
 extern void __mpatan (mp_no *, mp_no *, int);
 extern void __mpatan2 (mp_no *, mp_no *, mp_no *, int);
 extern void __mpsqrt (mp_no *, mp_no *, int);
-extern void __mpexp (mp_no *, mp_no *, int);
 extern void __c32 (mp_no *, mp_no *, mp_no *, int);
 extern int __mpranred (double, mp_no *, int);
-
-/* Given a power POW, build a multiprecision number 2^POW.  */
-static inline void
-__pow_mp (int pow, mp_no *y, int p)
-{
-  int i, rem;
-
-  /* The exponent is E such that E is a factor of 2^24.  The remainder (of the
-     form 2^x) goes entirely into the first digit of the mantissa as it is
-     always less than 2^24.  */
-  EY = pow / 24;
-  rem = pow - EY * 24;
-  EY++;
-
-  /* If the remainder is negative, it means that POW was negative since
-     |EY * 24| <= |pow|.  Adjust so that REM is positive and still less than
-     24 because of which, the mantissa digit is less than 2^24.  */
-  if (rem < 0)
-    {
-      EY--;
-      rem += 24;
-    }
-  /* The sign of any 2^x is always positive.  */
-  Y[0] = 1;
-  Y[1] = 1 << rem;
-
-  /* Everything else is 0.  */
-  for (i = 2; i <= p; i++)
-    Y[i] = 0;
-}
diff --git a/sysdeps/ieee754/dbl-64/mpexp.c b/sysdeps/ieee754/dbl-64/mpexp.c
deleted file mode 100644
index e5228e55b3..0000000000
--- a/sysdeps/ieee754/dbl-64/mpexp.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * IBM Accurate Mathematical Library
- * written by International Business Machines Corp.
- * Copyright (C) 2001-2018 Free Software Foundation, Inc.
- *
- * This program 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.
- *
- * This program 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 this program; if not, see <http://www.gnu.org/licenses/>.
- */
-/*************************************************************************/
-/*   MODULE_NAME:mpexp.c                                                 */
-/*                                                                       */
-/*   FUNCTIONS: mpexp                                                    */
-/*                                                                       */
-/*   FILES NEEDED: mpa.h endian.h mpexp.h                                */
-/*                 mpa.c                                                 */
-/*                                                                       */
-/* Multi-Precision exponential function subroutine                       */
-/*   (  for p >= 4, 2**(-55) <= abs(x) <= 1024     ).                    */
-/*************************************************************************/
-
-#include "endian.h"
-#include "mpa.h"
-#include <assert.h>
-
-#ifndef SECTION
-# define SECTION
-#endif
-
-/* Multi-Precision exponential function subroutine (for p >= 4,
-   2**(-55) <= abs(x) <= 1024).  */
-void
-SECTION
-__mpexp (mp_no *x, mp_no *y, int p)
-{
-  int i, j, k, m, m1, m2, n;
-  mantissa_t b;
-  static const int np[33] =
-    {
-      0, 0, 0, 0, 3, 3, 4, 4, 5, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6,
-      6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8
-    };
-
-  static const int m1p[33] =
-    {
-      0, 0, 0, 0,
-      17, 23, 23, 28,
-      27, 38, 42, 39,
-      43, 47, 43, 47,
-      50, 54, 57, 60,
-      64, 67, 71, 74,
-      68, 71, 74, 77,
-      70, 73, 76, 78,
-      81
-    };
-  static const int m1np[7][18] =
-    {
-      {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-      {0, 0, 0, 0, 36, 48, 60, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-      {0, 0, 0, 0, 24, 32, 40, 48, 56, 64, 72, 0, 0, 0, 0, 0, 0, 0},
-      {0, 0, 0, 0, 17, 23, 29, 35, 41, 47, 53, 59, 65, 0, 0, 0, 0, 0},
-      {0, 0, 0, 0, 0, 0, 23, 28, 33, 38, 42, 47, 52, 57, 62, 66, 0, 0},
-      {0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 39, 43, 47, 51, 55, 59, 63},
-      {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 50, 54}
-    };
-  mp_no mps, mpk, mpt1, mpt2;
-
-  /* Choose m,n and compute a=2**(-m).  */
-  n = np[p];
-  m1 = m1p[p];
-  b = X[1];
-  m2 = 24 * EX;
-  for (; b < HALFRAD; m2--)
-    b *= 2;
-  if (b == HALFRAD)
-    {
-      for (i = 2; i <= p; i++)
-	{
-	  if (X[i] != 0)
-	    break;
-	}
-      if (i == p + 1)
-	m2--;
-    }
-
-  m = m1 + m2;
-  if (__glibc_unlikely (m <= 0))
-    {
-      /* The m1np array which is used to determine if we can reduce the
-	 polynomial expansion iterations, has only 18 elements.  Besides,
-	 numbers smaller than those required by p >= 18 should not come here
-	 at all since the fast phase of exp returns 1.0 for anything less
-	 than 2^-55.  */
-      assert (p < 18);
-      m = 0;
-      for (i = n - 1; i > 0; i--, n--)
-	if (m1np[i][p] + m2 > 0)
-	  break;
-    }
-
-  /* Compute s=x*2**(-m). Put result in mps.  This is the range-reduced input
-     that we will use to compute e^s.  For the final result, simply raise it
-     to 2^m.  */
-  __pow_mp (-m, &mpt1, p);
-  __mul (x, &mpt1, &mps, p);
-
-  /* Compute the Taylor series for e^s:
-
-         1 + x/1! + x^2/2! + x^3/3! ...
-
-     for N iterations.  We compute this as:
-
-         e^x = 1 + (x * n!/1! + x^2 * n!/2! + x^3 * n!/3!) / n!
-             = 1 + (x * (n!/1! + x * (n!/2! + x * (n!/3! + x ...)))) / n!
-
-     k! is computed on the fly as KF and at the end of the polynomial loop, KF
-     is n!, which can be used directly.  */
-  __cpy (&mps, &mpt2, p);
-
-  double kf = 1.0;
-
-  /* Evaluate the rest.  The result will be in mpt2.  */
-  for (k = n - 1; k > 0; k--)
-    {
-      /* n! / k! = n * (n - 1) ... * (n - k + 1) */
-      kf *= k + 1;
-
-      __dbl_mp (kf, &mpk, p);
-      __add (&mpt2, &mpk, &mpt1, p);
-      __mul (&mps, &mpt1, &mpt2, p);
-    }
-  __dbl_mp (kf, &mpk, p);
-  __dvd (&mpt2, &mpk, &mpt1, p);
-  __add (&__mpone, &mpt1, &mpt2, p);
-
-  /* Raise polynomial value to the power of 2**m. Put result in y.  */
-  for (k = 0, j = 0; k < m;)
-    {
-      __sqr (&mpt2, &mpt1, p);
-      k++;
-      if (k == m)
-	{
-	  j = 1;
-	  break;
-	}
-      __sqr (&mpt1, &mpt2, p);
-      k++;
-    }
-  if (j)
-    __cpy (&mpt1, y, p);
-  else
-    __cpy (&mpt2, y, p);
-  return;
-}
diff --git a/sysdeps/ieee754/dbl-64/mplog.c b/sysdeps/ieee754/dbl-64/mplog.c
deleted file mode 100644
index f6cd5f4aa1..0000000000
--- a/sysdeps/ieee754/dbl-64/mplog.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * IBM Accurate Mathematical Library
- * written by International Business Machines Corp.
- * Copyright (C) 2001-2018 Free Software Foundation, Inc.
- *
- * This program 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.
- *
- * This program 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 this program; if not, see <http://www.gnu.org/licenses/>.
- */
-/************************************************************************/
-/*                                                                      */
-/*     MODULE_NAME:mplog.c                                              */
-/*                                                                      */
-/*     FUNCTIONS:  mplog                                                */
-/*                                                                      */
-/*     FILES NEEDED: endian.h mpa.h  mplog.h                            */
-/*                    mpexp.c                                           */
-/*                                                                      */
-/* Multi-Precision logarithm function subroutine (for precision p >= 4, */
-/* 2**(-1024) < x < 2**1024) and x is outside of the interval           */
-/* [1-2**(-54),1+2**(-54)]. Upon entry, x should be set to the          */
-/* multi-precision value of the input and y should be set into a multi- */
-/* precision value of an approximation of log(x) with relative error    */
-/* bound of at most 2**(-52). The routine improves the accuracy of y.   */
-/*                                                                      */
-/************************************************************************/
-#include "endian.h"
-#include "mpa.h"
-
-void
-__mplog (mp_no *x, mp_no *y, int p)
-{
-  int i, m;
-  static const int mp[33] =
-    {
-      0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
-      4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
-    };
-  mp_no mpt1, mpt2;
-
-  /* Choose m.  */
-  m = mp[p];
-
-  /* Perform m newton iterations to solve for y: exp(y) - x = 0.  The
-     iterations formula is:  y(n + 1) = y(n) + (x * exp(-y(n)) - 1).   */
-  __cpy (y, &mpt1, p);
-  for (i = 0; i < m; i++)
-    {
-      mpt1.d[0] = -mpt1.d[0];
-      __mpexp (&mpt1, &mpt2, p);
-      __mul (x, &mpt2, &mpt1, p);
-      __sub (&mpt1, &__mpone, &mpt2, p);
-      __add (y, &mpt2, &mpt1, p);
-      __cpy (&mpt1, y, p);
-    }
-}