Don't require LIM to determine loop end in __sqr
authorSiddhesh Poyarekar <siddhesh@redhat.com>
Fri, 15 Feb 2013 18:45:57 +0000 (00:15 +0530)
committerSiddhesh Poyarekar <siddhesh@redhat.com>
Fri, 15 Feb 2013 18:45:57 +0000 (00:15 +0530)
ChangeLog
sysdeps/ieee754/dbl-64/mpa.c

index 607433b..cfddab0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2013-02-16  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
+       * sysdeps/ieee754/dbl-64/mpa.c (__sqr): Avoid using LIM in
+       loop termination condition.
+
        * sysdeps/ieee754/dbl-64/mpa.c (__mul): Use intermediate
        variable to calculate EZ.
        (__sqr): Likewise.
index 9da4257..1f60fa5 100644 (file)
@@ -747,12 +747,9 @@ __sqr (const mp_no *x, mp_no *y, int p)
       long lim = k / 2;
 
       if (k % 2 == 0)
-        {
-         yk += X[lim] * X[lim];
-         lim--;
-       }
+       yk += X[lim] * X[lim];
 
-      for (i = k - p, j = p; i <= lim; i++, j--)
+      for (i = k - p, j = p; i < j; i++, j--)
        yk2 += X[i] * X[j];
 
       yk += 2.0 * yk2;
@@ -770,12 +767,9 @@ __sqr (const mp_no *x, mp_no *y, int p)
       long lim = k / 2;
 
       if (k % 2 == 0)
-        {
-         yk += X[lim] * X[lim];
-         lim--;
-       }
+       yk += X[lim] * X[lim];
 
-      for (i = 1, j = k - 1; i <= lim; i++, j--)
+      for (i = 1, j = k - 1; i < j; i++, j--)
        yk2 += X[i] * X[j];
 
       yk += 2.0 * yk2;