aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2013-02-20 18:56:20 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2013-02-20 18:56:20 +0530
commit20cd7fb3ae63795ae7c9a464abf5ed19b364ade0 (patch)
tree1cd8a0a8ee85124fa2439fd72bb700951ea06db8
parent92945b5261c412eb590b2b34c7ec9a035f0693a1 (diff)
downloadglibc-20cd7fb3ae63795ae7c9a464abf5ed19b364ade0.zip
glibc-20cd7fb3ae63795ae7c9a464abf5ed19b364ade0.tar.gz
glibc-20cd7fb3ae63795ae7c9a464abf5ed19b364ade0.tar.bz2
Copy comment about inner loop from powerpc mpa.c to the default one
-rw-r--r--ChangeLog8
-rw-r--r--sysdeps/ieee754/dbl-64/mpa.c10
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/mpa.c2
-rw-r--r--sysdeps/powerpc/powerpc64/power4/fpu/mpa.c2
4 files changed, 20 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e99aef1..2096d50 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-02-20 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ * sysdeps/ieee754/dbl-64/mpa.c (__sqr): Copy over comment from
+ powerpc mpa.c.
+ * sysdeps/powerpc/powerpc32/power4/fpu/mpa.c (__mul): Fix
+ comment formatting.
+ * sysdeps/powerpc/powerpc64/power4/fpu/mpa.c (__mul): Likewise.
+
2013-02-19 Joseph Myers <joseph@codesourcery.com>
[BZ #13550]
diff --git a/sysdeps/ieee754/dbl-64/mpa.c b/sysdeps/ieee754/dbl-64/mpa.c
index 1f60fa5..845a42c 100644
--- a/sysdeps/ieee754/dbl-64/mpa.c
+++ b/sysdeps/ieee754/dbl-64/mpa.c
@@ -749,6 +749,15 @@ __sqr (const mp_no *x, mp_no *y, int p)
if (k % 2 == 0)
yk += X[lim] * X[lim];
+ /* In __mul, this loop (and the one within the next while loop) run
+ between a range to calculate the mantissa as follows:
+
+ Z[k] = X[k] * Y[n] + X[k+1] * Y[n-1] ... + X[n-1] * Y[k+1]
+ + X[n] * Y[k]
+
+ For X == Y, we can get away with summing halfway and doubling the
+ result. For cases where the range size is even, the mid-point needs
+ to be added separately (above). */
for (i = k - p, j = p; i < j; i++, j--)
yk2 += X[i] * X[j];
@@ -769,6 +778,7 @@ __sqr (const mp_no *x, mp_no *y, int p)
if (k % 2 == 0)
yk += X[lim] * X[lim];
+ /* Likewise for this loop. */
for (i = 1, j = k - 1; i < j; i++, j--)
yk2 += X[i] * X[j];
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c b/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c
index c00342c..be357a6 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c
@@ -598,7 +598,7 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p)
long p2 = p;
double u, zk, zk2;
- /* Is z=0? */
+ /* Is z=0? */
if (X[0] * Y[0] == ZERO)
{
Z[0] = ZERO;
diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c b/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c
index c00342c..be357a6 100644
--- a/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c
+++ b/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c
@@ -598,7 +598,7 @@ __mul (const mp_no *x, const mp_no *y, mp_no *z, int p)
long p2 = p;
double u, zk, zk2;
- /* Is z=0? */
+ /* Is z=0? */
if (X[0] * Y[0] == ZERO)
{
Z[0] = ZERO;