[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r22170 - in /fsf/trunk/libc: ./ sysdeps/ieee754/dbl-64/ sysdeps/powerpc/fpu/ sysdeps/powerpc/powerpc32/power4/fpu/ sysdeps/p...



Author: eglibc
Date: Thu Jan 10 00:01:42 2013
New Revision: 22170

Log:
Import glibc-mainline for 2013-01-10

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c
    fsf/trunk/libc/sysdeps/powerpc/fpu/libm-test-ulps
    fsf/trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c
    fsf/trunk/libc/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c
    fsf/trunk/libc/sysdeps/s390/fpu/libm-test-ulps

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu Jan 10 00:01:42 2013
@@ -1,3 +1,52 @@
+2013-01-09  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	* sysdeps/s390/fpu/libm-test-ulps: Update.
+
+	* sysdeps/powerpc/fpu/libm-test-ulps: Update.
+
+	* sysdeps/ieee754/dbl-64/mpa.c (mcr): Reword comment.
+	(__acr): Likewise.
+	(__cpy): Likewise.
+	(norm): Likewise.
+	(denorm): Likewise.
+	(__mp_dbl): Likewise.
+	(__dbl_mp): Likewise.
+	(add_magnitudes): Likewise.
+	(sub_magnitudes): Likewise.
+	(__add): Likewise.
+	(__sub): Likewise.
+	(__mul): Likewise.
+	(__inv): Likewise.
+	(__dvd): Likewise.
+	* sysdeps/powerpc/powerpc32/power4/fpu/mpa.c (mcr): Likewise.
+	(__acr): Likewise.
+	(__cpy): Likewise.
+	(norm): Likewise.
+	(denorm): Likewise.
+	(__mp_dbl): Likewise.
+	(__dbl_mp): Likewise.
+	(add_magnitudes): Likewise.
+	(sub_magnitudes): Likewise.
+	(__add): Likewise.
+	(__sub): Likewise.
+	(__mul): Likewise.
+	(__inv): Likewise.
+	(__dvd): Likewise.
+	* sysdeps/powerpc/powerpc64/power4/fpu/mpa.c (mcr): Likewise.
+	(__acr): Likewise.
+	(__cpy): Likewise.
+	(norm): Likewise.
+	(denorm): Likewise.
+	(__mp_dbl): Likewise.
+	(__dbl_mp): Likewise.
+	(add_magnitudes): Likewise.
+	(sub_magnitudes): Likewise.
+	(__add): Likewise.
+	(__sub): Likewise.
+	(__mul): Likewise.
+	(__inv): Likewise.
+	(__dvd): Likewise.
+
 2013-01-08  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* io/sys/stat.h [__GNUC__ && __GNUC__ >= 2 &&
@@ -1681,7 +1730,7 @@
 
 2012-11-08  Andreas Krebbel  <Andreas.Krebbel@xxxxxxxxxx>
 
-        * sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add "te".
+	* sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add "te".
 	* sysdeps/s390/dl-procinfo.h (HWCAP_S390_TE): Add enum value.
 	* sysdeps/unix/sysv/linux/s390/hwcap.h (HWCAP_S390_TE): Add macro
 	definition.
@@ -19485,7 +19534,7 @@
 	* sysdeps/unix/bsd/bsd4.4/bits/socket.h (__cmsg_nxthdr): Use NULL
 	instead of 0.
 	* sysdeps/unix/sysv/linux/bits/socket.h (__cmsg_nxthdr): Use (void*)0
-	instead of 0.                              .
+	instead of 0.
 	* sysdeps/unix/sysv/linux/sparc/bits/socket.h: Likewise.
 	Patch in part by Pavel Roskin <proski@xxxxxxx>.
 

Modified: fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c Thu Jan 10 00:01:42 2013
@@ -45,7 +45,7 @@
 #include "endian.h"
 #include "mpa.h"
 #include "mpa2.h"
-#include <sys/param.h>	/* For MIN() */
+#include <sys/param.h>
 
 #ifndef SECTION
 # define SECTION
@@ -57,10 +57,8 @@
 #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.                                                         */
+/* Compare mantissa of two multiple precision numbers regardless of the sign
+   and exponent of the numbers.  */
 static int
 mcr(const mp_no *x, const mp_no *y, int p) {
   int i;
@@ -71,8 +69,7 @@
   return 0;
 }
 
-
-/* acr() compares the absolute values of two multiple precision numbers */
+/* Compare the absolute values of two multiple precision numbers.  */
 int
 __acr(const mp_no *x, const mp_no *y, int p) {
   int i;
@@ -92,19 +89,18 @@
 }
 #endif
 
-
 #ifndef NO___CPY
-/* Copy a multiple precision number. Set *y=*x. x=y is permissible.      */
+/* Copy multiple precision number X into Y.  They could be the same
+   number.  */
 void __cpy(const mp_no *x, mp_no *y, int p) {
   EY = EX;
   for (int i=0; i <= p; i++)    Y[i] = X[i];
 }
 #endif
 
-
 #ifndef NO___MP_DBL
-/* Convert a multiple precision number *x into a double precision */
-/* number *y, normalized case  (|x| >= 2**(-1022))) */
+/* Convert a multiple precision number *X into a double precision
+   number *Y, normalized case  (|x| >= 2**(-1022))).  */
 static void norm(const mp_no *x, double *y, int p)
 {
   #define R  RADIXI
@@ -154,8 +150,8 @@
 #undef R
 }
 
-/* Convert a multiple precision number *x into a double precision */
-/* number *y, denormalized case  (|x| < 2**(-1022))) */
+/* Convert a multiple precision number *X into a double precision
+   number *Y, Denormal case  (|x| < 2**(-1022))).  */
 static void denorm(const mp_no *x, double *y, int p)
 {
   int i,k;
@@ -198,9 +194,8 @@
 #undef R
 }
 
-/* Convert a multiple precision number *x into a double precision number *y. */
-/* The result is correctly rounded to the nearest/even. *x is left unchanged */
-
+/* Convert multiple precision number *X into double precision number *Y.  The
+   result is correctly rounded to the nearest/even.  */
 void __mp_dbl(const mp_no *x, double *y, int p) {
 
   if (X[0] == ZERO)  {*y = ZERO;  return; }
@@ -212,11 +207,8 @@
 }
 #endif
 
-
-/* dbl_mp() converts a double precision number x into a multiple precision  */
-/* number *y. If the precision p is too small the result is truncated. x is */
-/* left unchanged.                                                          */
-
+/* Get the multiple precision equivalent of X into *Y.  If the precision is too
+   small, the result is truncated.  */
 void
 SECTION
 __dbl_mp(double x, mp_no *y, int p) {
@@ -224,16 +216,16 @@
   int i,n;
   double u;
 
-  /* Sign */
+  /* Sign.  */
   if      (x == ZERO)  {Y[0] = ZERO;  return; }
   else if (x >  ZERO)   Y[0] = ONE;
   else                 {Y[0] = MONE;  x=-x;   }
 
-  /* Exponent */
+  /* Exponent.  */
   for (EY=ONE; x >= RADIX; EY += ONE)   x *= RADIXI;
   for (      ; x <  ONE;   EY -= ONE)   x *= RADIX;
 
-  /* Digits */
+  /* Digits.  */
   n=MIN(p,4);
   for (i=1; i<=n; i++) {
     u = (x + TWO52) - TWO52;
@@ -242,13 +234,10 @@
   for (   ; i<=p; i++)     Y[i] = ZERO;
 }
 
-
-/*  add_magnitudes() adds the magnitudes of *x & *y assuming that           */
-/*  abs(*x) >= abs(*y) > 0.                                                 */
-/* The sign of the sum *z is undefined. x&y may overlap but not x&z or y&z. */
-/* No guard digit is used. The result equals the exact sum, truncated.      */
-/* *x & *y are left unchanged.                                              */
-
+/* Add magnitudes of *X and *Y assuming that abs (*X) >= abs (*Y) > 0.  The
+   sign of the sum *Z is not changed.  X and Y may overlap but not X and Z or
+   Y and Z.  No guard digit is used.  The result equals the exact sum,
+   truncated.  */
 static void
 SECTION
 add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
@@ -286,13 +275,10 @@
   else   EZ += ONE;
 }
 
-
-/*  sub_magnitudes() subtracts the magnitudes of *x & *y assuming that      */
-/*  abs(*x) > abs(*y) > 0.                                                  */
-/* The sign of the difference *z is undefined. x&y may 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.                                              */
-
+/* Subtract the magnitudes of *X and *Y assuming that abs (*x) > abs (*y) > 0.
+   The sign of the difference *Z is not changed.  X and Y may overlap but not X
+   and Z or Y and Z.  One guard digit is used.  The error is less than one
+   ULP.  */
 static void
 SECTION
 sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
@@ -344,11 +330,9 @@
     Z[k++] = ZERO;
 }
 
-
-/* Add two multiple precision numbers. Set *z = *x + *y. x&y may 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.                                   */
-
+/* Add *X and *Y and store the result in *Z.  X and Y may overlap, but not X
+   and Z or Y and Z.  One guard digit is used.  The error is less than one
+   ULP.  */
 void
 SECTION
 __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
@@ -369,11 +353,9 @@
   }
 }
 
-
-/* Subtract two multiple precision numbers. *z is set to *x - *y. x&y may */
-/* 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.                         */
-
+/* Subtract *Y from *X and return the result in *Z.  X and Y may overlap but
+   not X and Z or Y and Z.  One guard digit is used.  The error is less than
+   one ULP.  */
 void
 SECTION
 __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
@@ -394,12 +376,9 @@
   }
 }
 
-
-/* Multiply two multiple precision numbers. *z is set to *x * *y. x&y      */
-/* may overlap but not x&z or y&z. In case p=1,2,3 the exact result is     */
-/* truncated to p digits. In case p>3 the error is bounded by 1.001 ulp.   */
-/* *x & *y are left unchanged.                                             */
-
+/* Multiply *X and *Y and store result in *Z.  X and Y may overlap but not X
+   and Z or Y and Z.  For P in [1, 2, 3], the exact result is truncated to P
+   digits.  In case P > 3 the error is bounded by 1.001 ULP.  */
 void
 SECTION
 __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
@@ -414,7 +393,7 @@
       return;
     }
 
-  /* Multiply, add and carry */
+  /* Multiply, add and carry.  */
   k2 = (__glibc_unlikely (p < 3)) ? p + p : p + 3;
   Z[k2] = ZERO;
 
@@ -443,7 +422,7 @@
     }
 
   EZ = EX + EY;
-  /* Is there a carry beyond the most significant digit? */
+  /* Is there a carry beyond the most significant digit?  */
   if (__glibc_unlikely (Z[1] == ZERO))
     {
       for (i = 1; i <= p; i++)
@@ -454,12 +433,12 @@
   Z[0] = X[0] * Y[0];
 }
 
-
-/* Invert a multiple precision number. Set *y = 1 / *x.                     */
-/* Relative error bound = 1.001*r**(1-p) for p=2, 1.063*r**(1-p) for p=3,   */
-/* 2.001*r**(1-p) for p>3.                                                  */
-/* *x=0 is not permissible. *x is left unchanged.                           */
-
+/* Invert *X and store in *Y.  Relative error bound:
+   - For P = 2: 1.001 * R ^ (1 - P)
+   - For P = 3: 1.063 * R ^ (1 - P)
+   - For P > 3: 2.001 * R ^ (1 - P)
+
+   *X = 0 is not permissible.  */
 static
 SECTION
 void __inv(const mp_no *x, mp_no *y, int p) {
@@ -480,12 +459,13 @@
   }
 }
 
-
-/* Divide one multiple precision number by another.Set *z = *x / *y. *x & *y */
-/* are left unchanged. x&y may overlap but not x&z or y&z.                   */
-/* 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.                      */
-
+/* Divide *X by *Y and store result in *Z.  X and Y may overlap but not X and Z
+   or Y and Z.  Relative error bound:
+   - For P = 2: 2.001 * R ^ (1 - P)
+   - For P = 3: 2.063 * R ^ (1 - P)
+   - For P > 3: 3.001 * R ^ (1 - P)
+
+   *X = 0 is not permissible.  */
 void
 SECTION
 __dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) {

Modified: fsf/trunk/libc/sysdeps/powerpc/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/sysdeps/powerpc/fpu/libm-test-ulps Thu Jan 10 00:01:42 2013
@@ -448,6 +448,16 @@
 float: 1
 idouble: 1
 ifloat: 1
+Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 + 7.107906849659093345062145442726115449315e2 i":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 + 8.973081118419833726837456344608533993585e1 i":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: casin (1.5 + +0 i) == pi/2 + 0.9624236501192068949955178268487368462704 i":
 double: 1
 float: 1
@@ -555,6 +565,16 @@
 float: 1
 idouble: 1
 ifloat: 1
+Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i) == 8.973081118419833726837456344608533993585e1 + 7.853981633974483096156608458198757210493e-1 i":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (1.0 + +0 i) == 0.8813735870195430252326093249797923090282 + +0 i":
 double: 1
 float: 1
@@ -1304,8 +1324,8 @@
 Test "cos_downward (1) == 0.5403023058681397174009366074429766037323":
 float: 1
 ifloat: 1
-ildouble: 4
-ldouble: 4
+ildouble: 1
+ldouble: 1
 Test "cos_downward (10) == -0.8390715290764524522588639478240648345199":
 ildouble: 1
 ldouble: 1
@@ -1343,8 +1363,8 @@
 
 # cos_towardzero
 Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323":
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199":
 ildouble: 1
 ldouble: 1
@@ -1704,8 +1724,8 @@
 ildouble: 2
 ldouble: 2
 Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i":
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 
 # ctan_downward
 Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x1p-1074 i) == 1.633123935319536975596773704152891653086e16 + 1.317719414943508315995636961402669067843e-291 i":
@@ -1768,8 +1788,8 @@
 float: 1
 idouble: 2
 ifloat: 1
-ildouble: 6
-ldouble: 6
+ildouble: 3
+ldouble: 3
 Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i) == -2.287733242885645987394874673945769518150e7 + 7.334008549954377778731880988481078535821e-31 i":
 double: 1
 float: 2
@@ -1804,8 +1824,8 @@
 Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
 double: 1
 idouble: 1
-ildouble: 3
-ldouble: 3
+ildouble: 2
+ldouble: 2
 Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
 float: 1
 ifloat: 1
@@ -1831,8 +1851,8 @@
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i":
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 
 # ctanh_downward
 Test "Imaginary part of: ctanh_downward (0x1p-1074 + 0x1.921fb54442d18p+0 i) == 1.317719414943508315995636961402669067843e-291 + 1.633123935319536975596773704152891653086e16 i":
@@ -2833,8 +2853,8 @@
 float: 2
 idouble: 1
 ifloat: 2
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 
 # yn
 Test "yn (0, 0.125) == -1.38968062514384052915582277745018693":
@@ -2848,8 +2868,8 @@
 float: 1
 idouble: 2
 ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
 double: 2
 float: 1
@@ -2870,8 +2890,8 @@
 float: 1
 idouble: 1
 ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
 double: 1
 idouble: 1
@@ -2895,8 +2915,8 @@
 float: 2
 idouble: 1
 ifloat: 2
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
 double: 1
 idouble: 1
@@ -2920,8 +2940,8 @@
 float: 1
 idouble: 3
 ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
 double: 1
 idouble: 1
@@ -2933,8 +2953,8 @@
 float: 1
 idouble: 1
 ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
 double: 1
 idouble: 1
@@ -3035,8 +3055,8 @@
 float: 1
 idouble: 3
 ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "cacosh":
 double: 1
@@ -3067,16 +3087,16 @@
 float: 1
 idouble: 3
 ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "casinh":
 double: 5
 float: 1
 idouble: 5
 ifloat: 1
-ildouble: 4
-ldouble: 4
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "casinh":
 double: 3
@@ -3205,8 +3225,8 @@
 Function: "cos_downward":
 float: 1
 ifloat: 1
-ildouble: 4
-ldouble: 4
+ildouble: 2
+ldouble: 2
 
 Function: "cos_tonearest":
 float: 1
@@ -3223,8 +3243,8 @@
 Function: "cos_upward":
 float: 2
 ifloat: 2
-ildouble: 2
-ldouble: 2
+ildouble: 1
+ldouble: 1
 
 Function: "cosh":
 ildouble: 1
@@ -3387,8 +3407,8 @@
 float: 2
 idouble: 1
 ifloat: 2
-ildouble: 3
-ldouble: 3
+ildouble: 2
+ldouble: 2
 
 Function: Imaginary part of "ctanh":
 double: 1

Modified: fsf/trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c (original)
+++ fsf/trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c Thu Jan 10 00:01:42 2013
@@ -44,15 +44,13 @@
 #include "endian.h"
 #include "mpa.h"
 #include "mpa2.h"
-#include <sys/param.h>	/* For MIN() */
+#include <sys/param.h>
 
 const mp_no mpone = {1, {1.0, 1.0}};
 const mp_no mptwo = {1, {1.0, 2.0}};
 
-/* 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.                                                         */
+/* Compare mantissa of two multiple precision numbers regardless of the sign
+   and exponent of the numbers.  */
 static int mcr(const mp_no *x, const mp_no *y, int p) {
   long i;
   long p2 = p;
@@ -63,9 +61,7 @@
   return 0;
 }
 
-
-
-/* acr() compares the absolute values of two multiple precision numbers */
+/* Compare the absolute values of two multiple precision numbers.  */
 int __acr(const mp_no *x, const mp_no *y, int p) {
   long i;
 
@@ -83,8 +79,8 @@
   return i;
 }
 
-
-/* Copy a multiple precision number. Set *y=*x. x=y is permissible.      */
+/* Copy multiple precision number X into Y.  They could be the same
+   number.  */
 void __cpy(const mp_no *x, mp_no *y, int p) {
   long i;
 
@@ -94,9 +90,8 @@
   return;
 }
 
-
-/* Convert a multiple precision number *x into a double precision */
-/* number *y, normalized case  (|x| >= 2**(-1022))) */
+/* Convert a multiple precision number *X into a double precision
+   number *Y, normalized case  (|x| >= 2**(-1022))).  */
 static void norm(const mp_no *x, double *y, int p)
 {
   #define R  RADIXI
@@ -147,8 +142,8 @@
 #undef R
 }
 
-/* Convert a multiple precision number *x into a double precision */
-/* number *y, denormalized case  (|x| < 2**(-1022))) */
+/* Convert a multiple precision number *X into a double precision
+   number *Y, Denormal case  (|x| < 2**(-1022))).  */
 static void denorm(const mp_no *x, double *y, int p)
 {
   long i,k;
@@ -194,9 +189,8 @@
 #undef R
 }
 
-/* Convert a multiple precision number *x into a double precision number *y. */
-/* The result is correctly rounded to the nearest/even. *x is left unchanged */
-
+/* Convert multiple precision number *X into double precision number *Y.  The
+   result is correctly rounded to the nearest/even.  */
 void __mp_dbl(const mp_no *x, double *y, int p) {
 
   if (X[0] == ZERO)  {*y = ZERO;  return; }
@@ -206,27 +200,24 @@
   else                              denorm(x,y,p);
 }
 
-
-/* dbl_mp() converts a double precision number x into a multiple precision  */
-/* number *y. If the precision p is too small the result is truncated. x is */
-/* left unchanged.                                                          */
-
+/* Get the multiple precision equivalent of X into *Y.  If the precision is too
+   small, the result is truncated.  */
 void __dbl_mp(double x, mp_no *y, int p) {
 
   long i,n;
   long p2 = p;
   double u;
 
-  /* Sign */
+  /* Sign.  */
   if      (x == ZERO)  {Y[0] = ZERO;  return; }
   else if (x >  ZERO)   Y[0] = ONE;
   else                 {Y[0] = MONE;  x=-x;   }
 
-  /* Exponent */
+  /* Exponent.  */
   for (EY=ONE; x >= RADIX; EY += ONE)   x *= RADIXI;
   for (      ; x <  ONE;   EY -= ONE)   x *= RADIX;
 
-  /* Digits */
+  /* Digits.  */
   n=MIN(p2,4);
   for (i=1; i<=n; i++) {
     u = (x + TWO52) - TWO52;
@@ -236,13 +227,10 @@
   return;
 }
 
-
-/*  add_magnitudes() adds the magnitudes of *x & *y assuming that           */
-/*  abs(*x) >= abs(*y) > 0.                                                 */
-/* The sign of the sum *z is undefined. x&y may overlap but not x&z or y&z. */
-/* No guard digit is used. The result equals the exact sum, truncated.      */
-/* *x & *y are left unchanged.                                              */
-
+/* Add magnitudes of *X and *Y assuming that abs (*X) >= abs (*Y) > 0.  The
+   sign of the sum *Z is not changed.  X and Y may overlap but not X and Z or
+   Y and Z.  No guard digit is used.  The result equals the exact sum,
+   truncated.  */
 static void add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   long i,j,k;
@@ -279,13 +267,10 @@
   else   EZ += ONE;
 }
 
-
-/*  sub_magnitudes() subtracts the magnitudes of *x & *y assuming that      */
-/*  abs(*x) > abs(*y) > 0.                                                  */
-/* The sign of the difference *z is undefined. x&y may 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.                                              */
-
+/* Subtract the magnitudes of *X and *Y assuming that abs (*x) > abs (*y) > 0.
+   The sign of the difference *Z is not changed.  X and Y may overlap but not X
+   and Z or Y and Z.  One guard digit is used.  The error is less than one
+   ULP.  */
 static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   long i,j,k;
@@ -338,11 +323,9 @@
   return;
 }
 
-
-/* Add two multiple precision numbers. Set *z = *x + *y. x&y may 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.                                   */
-
+/* Add *X and *Y and store the result in *Z.  X and Y may overlap, but not X
+   and Z or Y and Z.  One guard digit is used.  The error is less than one
+   ULP.  */
 void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int n;
@@ -362,11 +345,9 @@
   return;
 }
 
-
-/* Subtract two multiple precision numbers. *z is set to *x - *y. x&y may */
-/* 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.                         */
-
+/* Subtract *Y from *X and return the result in *Z.  X and Y may overlap but
+   not X and Z or Y and Z.  One guard digit is used.  The error is less than
+   one ULP.  */
 void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int n;
@@ -386,12 +367,9 @@
   return;
 }
 
-
-/* Multiply two multiple precision numbers. *z is set to *x * *y. x&y      */
-/* may overlap but not x&z or y&z. In case p=1,2,3 the exact result is     */
-/* truncated to p digits. In case p>3 the error is bounded by 1.001 ulp.   */
-/* *x & *y are left unchanged.                                             */
-
+/* Multiply *X and *Y and store result in *Z.  X and Y may overlap but not X
+   and Z or Y and Z.  For P in [1, 2, 3], the exact result is truncated to P
+   digits.  In case P > 3 the error is bounded by 1.001 ULP.  */
 void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   long i, i1, i2, j, k, k2;
@@ -409,12 +387,12 @@
     if (k > p2)  {i1=k-p2; i2=p2+1; }
     else        {i1=1;   i2=k;   }
 #if 1
-    /* rearrange this inner loop to allow the fmadd instructions to be
+    /* Rearrange this inner loop to allow the fmadd instructions to be
        independent and execute in parallel on processors that have
        dual symmetrical FP pipelines.  */
     if (i1 < (i2-1))
     {
-	/* make sure we have at least 2 iterations */
+	/* Make sure we have at least 2 iterations.  */
 	if (((i2 - i1) & 1L) == 1L)
 	{
                 /* Handle the odd iterations case.  */
@@ -429,7 +407,7 @@
 		zk += x->d[i]*y->d[j];
 		zk2 += x->d[i+1]*y->d[j-1];
 	}
-	zk += zk2; /* final sum.  */
+	zk += zk2; /* Final sum.  */
     }
     else
     {
@@ -449,7 +427,7 @@
   }
   Z[k] = zk;
 
-                 /* Is there a carry beyond the most significant digit? */
+  /* Is there a carry beyond the most significant digit?  */
   if (Z[1] == ZERO) {
     for (i=1; i<=p2; i++)  Z[i]=Z[i+1];
     EZ = EX + EY - 1; }
@@ -460,12 +438,12 @@
   return;
 }
 
-
-/* Invert a multiple precision number. Set *y = 1 / *x.                     */
-/* Relative error bound = 1.001*r**(1-p) for p=2, 1.063*r**(1-p) for p=3,   */
-/* 2.001*r**(1-p) for p>3.                                                  */
-/* *x=0 is not permissible. *x is left unchanged.                           */
-
+/* Invert *X and store in *Y.  Relative error bound:
+   - For P = 2: 1.001 * R ^ (1 - P)
+   - For P = 3: 1.063 * R ^ (1 - P)
+   - For P > 3: 2.001 * R ^ (1 - P)
+
+   *X = 0 is not permissible.  */
 void __inv(const mp_no *x, mp_no *y, int p) {
   long i;
   double t;
@@ -489,12 +467,13 @@
   return;
 }
 
-
-/* Divide one multiple precision number by another.Set *z = *x / *y. *x & *y */
-/* are left unchanged. x&y may overlap but not x&z or y&z.                   */
-/* 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.                      */
-
+/* Divide *X by *Y and store result in *Z.  X and Y may overlap but not X and Z
+   or Y and Z.  Relative error bound:
+   - For P = 2: 2.001 * R ^ (1 - P)
+   - For P = 3: 2.063 * R ^ (1 - P)
+   - For P > 3: 3.001 * R ^ (1 - P)
+
+   *X = 0 is not permissible.  */
 void __dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   mp_no w;

Modified: fsf/trunk/libc/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c (original)
+++ fsf/trunk/libc/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c Thu Jan 10 00:01:42 2013
@@ -44,15 +44,13 @@
 #include "endian.h"
 #include "mpa.h"
 #include "mpa2.h"
-#include <sys/param.h>	/* For MIN() */
+#include <sys/param.h>
 
 const mp_no mpone = {1, {1.0, 1.0}};
 const mp_no mptwo = {1, {1.0, 2.0}};
 
-/* 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.                                                         */
+/* Compare mantissa of two multiple precision numbers regardless of the sign
+   and exponent of the numbers.  */
 static int mcr(const mp_no *x, const mp_no *y, int p) {
   long i;
   long p2 = p;
@@ -63,9 +61,7 @@
   return 0;
 }
 
-
-
-/* acr() compares the absolute values of two multiple precision numbers */
+/* Compare the absolute values of two multiple precision numbers.  */
 int __acr(const mp_no *x, const mp_no *y, int p) {
   long i;
 
@@ -83,8 +79,8 @@
   return i;
 }
 
-
-/* Copy a multiple precision number. Set *y=*x. x=y is permissible.      */
+/* Copy multiple precision number X into Y.  They could be the same
+   number.  */
 void __cpy(const mp_no *x, mp_no *y, int p) {
   long i;
 
@@ -94,9 +90,8 @@
   return;
 }
 
-
-/* Convert a multiple precision number *x into a double precision */
-/* number *y, normalized case  (|x| >= 2**(-1022))) */
+/* Convert a multiple precision number *X into a double precision
+   number *Y, normalized case  (|x| >= 2**(-1022))).  */
 static void norm(const mp_no *x, double *y, int p)
 {
   #define R  RADIXI
@@ -147,8 +142,8 @@
 #undef R
 }
 
-/* Convert a multiple precision number *x into a double precision */
-/* number *y, denormalized case  (|x| < 2**(-1022))) */
+/* Convert a multiple precision number *X into a double precision
+   number *Y, Denormal case  (|x| < 2**(-1022))).  */
 static void denorm(const mp_no *x, double *y, int p)
 {
   long i,k;
@@ -194,9 +189,8 @@
 #undef R
 }
 
-/* Convert a multiple precision number *x into a double precision number *y. */
-/* The result is correctly rounded to the nearest/even. *x is left unchanged */
-
+/* Convert multiple precision number *X into double precision number *Y.  The
+   result is correctly rounded to the nearest/even.  */
 void __mp_dbl(const mp_no *x, double *y, int p) {
 
   if (X[0] == ZERO)  {*y = ZERO;  return; }
@@ -206,27 +200,24 @@
   else                              denorm(x,y,p);
 }
 
-
-/* dbl_mp() converts a double precision number x into a multiple precision  */
-/* number *y. If the precision p is too small the result is truncated. x is */
-/* left unchanged.                                                          */
-
+/* Get the multiple precision equivalent of X into *Y.  If the precision is too
+   small, the result is truncated.  */
 void __dbl_mp(double x, mp_no *y, int p) {
 
   long i,n;
   long p2 = p;
   double u;
 
-  /* Sign */
+  /* Sign.  */
   if      (x == ZERO)  {Y[0] = ZERO;  return; }
   else if (x >  ZERO)   Y[0] = ONE;
   else                 {Y[0] = MONE;  x=-x;   }
 
-  /* Exponent */
+  /* Exponent.  */
   for (EY=ONE; x >= RADIX; EY += ONE)   x *= RADIXI;
   for (      ; x <  ONE;   EY -= ONE)   x *= RADIX;
 
-  /* Digits */
+  /* Digits.  */
   n=MIN(p2,4);
   for (i=1; i<=n; i++) {
     u = (x + TWO52) - TWO52;
@@ -236,13 +227,10 @@
   return;
 }
 
-
-/*  add_magnitudes() adds the magnitudes of *x & *y assuming that           */
-/*  abs(*x) >= abs(*y) > 0.                                                 */
-/* The sign of the sum *z is undefined. x&y may overlap but not x&z or y&z. */
-/* No guard digit is used. The result equals the exact sum, truncated.      */
-/* *x & *y are left unchanged.                                              */
-
+/* Add magnitudes of *X and *Y assuming that abs (*X) >= abs (*Y) > 0.  The
+   sign of the sum *Z is not changed.  X and Y may overlap but not X and Z or
+   Y and Z.  No guard digit is used.  The result equals the exact sum,
+   truncated.  */
 static void add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   long i,j,k;
@@ -279,13 +267,10 @@
   else   EZ += ONE;
 }
 
-
-/*  sub_magnitudes() subtracts the magnitudes of *x & *y assuming that      */
-/*  abs(*x) > abs(*y) > 0.                                                  */
-/* The sign of the difference *z is undefined. x&y may 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.                                              */
-
+/* Subtract the magnitudes of *X and *Y assuming that abs (*x) > abs (*y) > 0.
+   The sign of the difference *Z is not changed.  X and Y may overlap but not X
+   and Z or Y and Z.  One guard digit is used.  The error is less than one
+   ULP.  */
 static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   long i,j,k;
@@ -338,11 +323,9 @@
   return;
 }
 
-
-/* Add two multiple precision numbers. Set *z = *x + *y. x&y may 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.                                   */
-
+/* Add *X and *Y and store the result in *Z.  X and Y may overlap, but not X
+   and Z or Y and Z.  One guard digit is used.  The error is less than one
+   ULP.  */
 void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int n;
@@ -362,11 +345,9 @@
   return;
 }
 
-
-/* Subtract two multiple precision numbers. *z is set to *x - *y. x&y may */
-/* 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.                         */
-
+/* Subtract *Y from *X and return the result in *Z.  X and Y may overlap but
+   not X and Z or Y and Z.  One guard digit is used.  The error is less than
+   one ULP.  */
 void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   int n;
@@ -386,12 +367,9 @@
   return;
 }
 
-
-/* Multiply two multiple precision numbers. *z is set to *x * *y. x&y      */
-/* may overlap but not x&z or y&z. In case p=1,2,3 the exact result is     */
-/* truncated to p digits. In case p>3 the error is bounded by 1.001 ulp.   */
-/* *x & *y are left unchanged.                                             */
-
+/* Multiply *X and *Y and store result in *Z.  X and Y may overlap but not X
+   and Z or Y and Z.  For P in [1, 2, 3], the exact result is truncated to P
+   digits.  In case P > 3 the error is bounded by 1.001 ULP.  */
 void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   long i, i1, i2, j, k, k2;
@@ -409,12 +387,12 @@
     if (k > p2)  {i1=k-p2; i2=p2+1; }
     else        {i1=1;   i2=k;   }
 #if 1
-    /* rearrange this inner loop to allow the fmadd instructions to be
+    /* Rearrange this inner loop to allow the fmadd instructions to be
        independent and execute in parallel on processors that have
        dual symmetrical FP pipelines.  */
     if (i1 < (i2-1))
     {
-	/* make sure we have at least 2 iterations */
+	/* Make sure we have at least 2 iterations.  */
 	if (((i2 - i1) & 1L) == 1L)
 	{
                 /* Handle the odd iterations case.  */
@@ -429,7 +407,7 @@
 		zk += x->d[i]*y->d[j];
 		zk2 += x->d[i+1]*y->d[j-1];
 	}
-	zk += zk2; /* final sum.  */
+	zk += zk2; /* Final sum.  */
     }
     else
     {
@@ -449,7 +427,7 @@
   }
   Z[k] = zk;
 
-                 /* Is there a carry beyond the most significant digit? */
+  /* Is there a carry beyond the most significant digit?  */
   if (Z[1] == ZERO) {
     for (i=1; i<=p2; i++)  Z[i]=Z[i+1];
     EZ = EX + EY - 1; }
@@ -460,12 +438,12 @@
   return;
 }
 
-
-/* Invert a multiple precision number. Set *y = 1 / *x.                     */
-/* Relative error bound = 1.001*r**(1-p) for p=2, 1.063*r**(1-p) for p=3,   */
-/* 2.001*r**(1-p) for p>3.                                                  */
-/* *x=0 is not permissible. *x is left unchanged.                           */
-
+/* Invert *X and store in *Y.  Relative error bound:
+   - For P = 2: 1.001 * R ^ (1 - P)
+   - For P = 3: 1.063 * R ^ (1 - P)
+   - For P > 3: 2.001 * R ^ (1 - P)
+
+   *X = 0 is not permissible.  */
 void __inv(const mp_no *x, mp_no *y, int p) {
   long i;
   double t;
@@ -489,12 +467,13 @@
   return;
 }
 
-
-/* Divide one multiple precision number by another.Set *z = *x / *y. *x & *y */
-/* are left unchanged. x&y may overlap but not x&z or y&z.                   */
-/* 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.                      */
-
+/* Divide *X by *Y and store result in *Z.  X and Y may overlap but not X and Z
+   or Y and Z.  Relative error bound:
+   - For P = 2: 2.001 * R ^ (1 - P)
+   - For P = 3: 2.063 * R ^ (1 - P)
+   - For P > 3: 3.001 * R ^ (1 - P)
+
+   *X = 0 is not permissible.  */
 void __dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) {
 
   mp_no w;

Modified: fsf/trunk/libc/sysdeps/s390/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/sysdeps/s390/fpu/libm-test-ulps Thu Jan 10 00:01:42 2013
@@ -130,19 +130,19 @@
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: cacos (+0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: cacos (+0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: cacos (+0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i":
 float: 1
 ifloat: 1
@@ -166,19 +166,19 @@
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: cacos (-0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: cacos (-0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i":
 float: 1
 ifloat: 1
@@ -211,6 +211,9 @@
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
+float: 1
+ifloat: 1
 Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
 ildouble: 1
 ldouble: 1
@@ -316,19 +319,19 @@
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: casin (+0 + 1.0 i) == +0 + 0.8813735870195430252326093249797923090282 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: casin (+0 + 1.5 i) == +0 + 1.194763217287109304111930828519090523536 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: casin (+0 - 0.5 i) == +0 - 0.4812118250596034474977589134243684231352 i":
 float: 1
 ifloat: 1
@@ -352,19 +355,19 @@
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: casin (-0 + 1.0 i) == -0 + 0.8813735870195430252326093249797923090282 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: casin (-0 + 1.5 i) == -0 + 1.194763217287109304111930828519090523536 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: casin (-0 - 0.5 i) == -0 - 0.4812118250596034474977589134243684231352 i":
 float: 1
 ifloat: 1
@@ -380,6 +383,30 @@
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "Imaginary part of: casin (-0x1p500 + 1.0 i) == -1.570796326794896619231321691639751442099 + 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-0x1p500 - 1.0 i) == -1.570796326794896619231321691639751442099 - 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-0x1p5000 + 1.0 i) == -1.570796326794896619231321691639751442099 + 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-0x1p5000 - 1.0 i) == -1.570796326794896619231321691639751442099 - 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-1.0 + 0x1p500 i) == -3.054936363499604682051979393213617699789e-151 + 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-1.0 + 0x1p5000 i) == -7.079811261048172892385615158694057552948e-1506 + 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-1.0 - 0x1p500 i) == -3.054936363499604682051979393213617699789e-151 - 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (-1.0 - 0x1p5000 i) == -7.079811261048172892385615158694057552948e-1506 - 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: casin (-1.5 + +0 i) == -pi/2 + 0.9624236501192068949955178268487368462704 i":
 double: 1
 float: 1
@@ -393,6 +420,39 @@
 idouble: 1
 ifloat: 1
 Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 + 7.107906849659093345062145442726115449315e2 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 + 8.973081118419833726837456344608533993585e1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: casin (0x1.fp16383 + 0x1.fp16383 i) == 7.853981633974483096156608458198757210493e-1 + 1.135753137836666928715489992987020363057e4 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (0x1p500 + 1.0 i) == 1.570796326794896619231321691639751442099 + 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (0x1p500 - 1.0 i) == 1.570796326794896619231321691639751442099 - 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (0x1p5000 + 1.0 i) == 1.570796326794896619231321691639751442099 + 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (0x1p5000 - 1.0 i) == 1.570796326794896619231321691639751442099 - 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (1.0 + 0x1p500 i) == 3.054936363499604682051979393213617699789e-151 + 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (1.0 + 0x1p5000 i) == 7.079811261048172892385615158694057552948e-1506 + 3.466429049980286492395577839412341016946e3 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (1.0 - 0x1p500 i) == 3.054936363499604682051979393213617699789e-151 - 3.472667374605326000180332928505464606058e2 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: casin (1.0 - 0x1p5000 i) == 7.079811261048172892385615158694057552948e-1506 - 3.466429049980286492395577839412341016946e3 i":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: casin (1.5 + +0 i) == pi/2 + 0.9624236501192068949955178268487368462704 i":
@@ -432,34 +492,58 @@
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: casinh (-0x1p500 + 1.0 i) == -3.472667374605326000180332928505464606058e2 + 3.054936363499604682051979393213617699789e-151 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-0x1p500 - 1.0 i) == -3.472667374605326000180332928505464606058e2 - 3.054936363499604682051979393213617699789e-151 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-0x1p5000 + 1.0 i) == -3.466429049980286492395577839412341016946e3 + 7.079811261048172892385615158694057552948e-1506 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-0x1p5000 - 1.0 i) == -3.466429049980286492395577839412341016946e3 - 7.079811261048172892385615158694057552948e-1506 i":
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (-1.0 + +0 i) == -0.8813735870195430252326093249797923090282 + +0 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-1.0 + 0x1p500 i) == -3.472667374605326000180332928505464606058e2 + 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-1.0 + 0x1p5000 i) == -3.466429049980286492395577839412341016946e3 + 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (-1.0 - 0 i) == -0.8813735870195430252326093249797923090282 - 0 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-1.0 - 0x1p500 i) == -3.472667374605326000180332928505464606058e2 - 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (-1.0 - 0x1p5000 i) == -3.466429049980286492395577839412341016946e3 - 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (-1.5 + +0 i) == -1.194763217287109304111930828519090523536 + +0 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (-1.5 - 0 i) == -1.194763217287109304111930828519090523536 - 0 i":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
 double: 5
 float: 1
@@ -492,6 +576,27 @@
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i) == 7.107906849659093345062145442726115449315e2 + 7.853981633974483096156608458198757210493e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i) == 8.973081118419833726837456344608533993585e1 + 7.853981633974483096156608458198757210493e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: casinh (0x1.fp16383 + 0x1.fp16383 i) == 1.135753137836666928715489992987020363057e4 + 7.853981633974483096156608458198757210493e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (0x1p500 + 1.0 i) == 3.472667374605326000180332928505464606058e2 + 3.054936363499604682051979393213617699789e-151 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (0x1p500 - 1.0 i) == 3.472667374605326000180332928505464606058e2 - 3.054936363499604682051979393213617699789e-151 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (0x1p5000 + 1.0 i) == 3.466429049980286492395577839412341016946e3 + 7.079811261048172892385615158694057552948e-1506 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (0x1p5000 - 1.0 i) == 3.466429049980286492395577839412341016946e3 - 7.079811261048172892385615158694057552948e-1506 i":
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (1.0 + +0 i) == 0.8813735870195430252326093249797923090282 + +0 i":
 double: 1
 float: 1
@@ -499,11 +604,23 @@
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: casinh (1.0 + 0x1p500 i) == 3.472667374605326000180332928505464606058e2 + 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (1.0 + 0x1p5000 i) == 3.466429049980286492395577839412341016946e3 + 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
 Test "Real part of: casinh (1.0 - 0 i) == 0.8813735870195430252326093249797923090282 - 0 i":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (1.0 - 0x1p500 i) == 3.472667374605326000180332928505464606058e2 - 1.570796326794896619231321691639751442099 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: casinh (1.0 - 0x1p5000 i) == 3.466429049980286492395577839412341016946e3 - 1.570796326794896619231321691639751442099 i":
 ildouble: 1
 ldouble: 1
 Test "Real part of: casinh (1.5 + +0 i) == 1.194763217287109304111930828519090523536 + +0 i":
@@ -3129,17 +3246,19 @@
 
 Function: Real part of "cacos":
 double: 1
-idouble: 1
+float: 1
+idouble: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: Imaginary part of "cacos":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "cacosh":
 double: 1
@@ -3164,28 +3283,28 @@
 ifloat: 1
 
 Function: Imaginary part of "casin":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "casinh":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 4
-ldouble: 4
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "casinh":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-ildouble: 2
-ldouble: 2
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "catan":
 double: 1

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits