about summary refs log tree commit diff
path: root/sysdeps/ieee754/dbl-64/mpa.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/dbl-64/mpa.c')
-rw-r--r--sysdeps/ieee754/dbl-64/mpa.c61
1 files changed, 36 insertions, 25 deletions
diff --git a/sysdeps/ieee754/dbl-64/mpa.c b/sysdeps/ieee754/dbl-64/mpa.c
index ad5a639c4b..39c640882b 100644
--- a/sysdeps/ieee754/dbl-64/mpa.c
+++ b/sysdeps/ieee754/dbl-64/mpa.c
@@ -47,11 +47,18 @@
 #include "mpa.h"
 #include "mpa2.h"
 #include <sys/param.h>	/* For MIN() */
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+#ifndef NO___ACR
 /* mcr() compares the sizes of the mantissas of two multiple precision  */
 /* numbers. Mantissas are compared regardless of the signs of the       */
 /* numbers, even if x->d[0] or y->d[0] are zero. Exponents are also     */
 /* disregarded.                                                         */
-static int mcr(const mp_no *x, const mp_no *y, int p) {
+static int
+mcr(const mp_no *x, const mp_no *y, int p) {
   int i;
   for (i=1; i<=p; i++) {
     if      (X[i] == Y[i])  continue;
@@ -61,9 +68,9 @@ static int mcr(const mp_no *x, const mp_no *y, int p) {
 }
 
 
-
 /* acr() compares the absolute values of two multiple precision numbers */
-static int __acr(const mp_no *x, const mp_no *y, int p) {
+int
+__acr(const mp_no *x, const mp_no *y, int p) {
   int i;
 
   if      (X[0] == ZERO) {
@@ -79,10 +86,11 @@ static int __acr(const mp_no *x, const mp_no *y, int p) {
 
   return i;
 }
+#endif
 
 
 #if 0
-/* cr90 compares the values of two multiple precision numbers           */
+/* cr() compares the values of two multiple precision numbers           */
 static int  __cr(const mp_no *x, const mp_no *y, int p) {
   int i;
 
@@ -119,8 +127,6 @@ static void __cpymn(const mp_no *x, int m, mp_no *y, int n) {
   EY = EX;     k=MIN(m,n);
   for (i=0; i <= k; i++)    Y[i] = X[i];
   for (   ; i <= n; i++)    Y[i] = ZERO;
-
-  return;
 }
 #endif
 
@@ -177,7 +183,6 @@ static void norm(const mp_no *x, double *y, int p)
   for (i=1; i>EX; i--)   c *= RADIXI;
 
   *y = c;
-  return;
 #undef R
 }
 
@@ -225,8 +230,6 @@ static void denorm(const mp_no *x, double *y, int p)
   c = X[0]*((z[1] + R*(z[2] + R*z[3])) - TWO10);
 
   *y = c*TWOM1032;
-  return;
-
 #undef R
 }
 
@@ -252,7 +255,9 @@ void __mp_dbl(const mp_no *x, double *y, int p) {
 /* number *y. If the precision p is too small the result is truncated. x is */
 /* left unchanged.                                                          */
 
-void __dbl_mp(double x, mp_no *y, int p) {
+void
+SECTION
+__dbl_mp(double x, mp_no *y, int p) {
 
   int i,n;
   double u;
@@ -273,7 +278,6 @@ void __dbl_mp(double x, mp_no *y, int p) {
     if (u>x)   u -= ONE;
     Y[i] = u;     x -= u;    x *= RADIX; }
   for (   ; i<=p; i++)     Y[i] = ZERO;
-  return;
 }
 
 
@@ -283,7 +287,9 @@ void __dbl_mp(double x, mp_no *y, int p) {
 /* No guard digit is used. The result equals the exact sum, truncated.      */
 /* *x & *y are left unchanged.                                              */
 
-static void add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
+static void
+SECTION
+add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int i,j,k;
 
@@ -325,7 +331,9 @@ static void add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 /* or y&z. One guard digit is used. The error is less than one ulp.         */
 /* *x & *y are left unchanged.                                              */
 
-static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
+static void
+SECTION
+sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int i,j,k;
 
@@ -372,8 +380,6 @@ static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
     Z[k++] = Z[i++];
   for (; k <= p; )
     Z[k++] = ZERO;
-
-  return;
 }
 
 
@@ -381,7 +387,9 @@ static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 /* but not x&z or y&z. One guard digit is used. The error is less than    */
 /* one ulp. *x & *y are left unchanged.                                   */
 
-void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
+void
+SECTION
+__add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int n;
 
@@ -397,7 +405,6 @@ void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
     else if (n == -1)        {sub_magnitudes(y,x,z,p);  Z[0] = Y[0]; }
     else                      Z[0] = ZERO;
   }
-  return;
 }
 
 
@@ -405,7 +412,9 @@ void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 /* overlap but not x&z or y&z. One guard digit is used. The error is      */
 /* less than one ulp. *x & *y are left unchanged.                         */
 
-void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
+void
+SECTION
+__sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int n;
 
@@ -421,7 +430,6 @@ void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
     else if (n == -1)        {sub_magnitudes(y,x,z,p);  Z[0] = -Y[0]; }
     else                      Z[0] = ZERO;
   }
-  return;
 }
 
 
@@ -430,7 +438,9 @@ void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 /* truncated to p digits. In case p>3 the error is bounded by 1.001 ulp.   */
 /* *x & *y are left unchanged.                                             */
 
-void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
+void
+SECTION
+__mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int i, i1, i2, j, k, k2;
   double u;
@@ -461,7 +471,6 @@ void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
     EZ = EX + EY;
 
   Z[0] = X[0] * Y[0];
-  return;
 }
 
 
@@ -470,7 +479,9 @@ void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 /* 2.001*r**(1-p) for p>3.                                                  */
 /* *x=0 is not permissible. *x is left unchanged.                           */
 
-static void __inv(const mp_no *x, mp_no *y, int p) {
+static
+SECTION
+void __inv(const mp_no *x, mp_no *y, int p) {
   int i;
 #if 0
   int l;
@@ -493,7 +504,6 @@ static void __inv(const mp_no *x, mp_no *y, int p) {
     __sub(&mptwo,y,&z,p);
     __mul(&w,&z,y,p);
   }
-  return;
 }
 
 
@@ -502,11 +512,12 @@ static void __inv(const mp_no *x, mp_no *y, int p) {
 /* Relative error bound = 2.001*r**(1-p) for p=2, 2.063*r**(1-p) for p=3     */
 /* and 3.001*r**(1-p) for p>3. *y=0 is not permissible.                      */
 
-void __dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) {
+void
+SECTION
+__dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   mp_no w;
 
   if (X[0] == ZERO)    Z[0] = ZERO;
   else                {__inv(y,&w,p);   __mul(x,&w,z,p);}
-  return;
 }