This should fix the slowdown from the previous patch, while
maintaining correct output. It speeds things up by about 15% for me,
using JIT on x86.

--- mandelbrot.pir      2005-12-23 02:50:52.000000000 -0500
+++ mandelbrot-opt.pir  2005-12-23 03:15:53.000000000 -0500
@@ -68,15 +68,14 @@
        Ci -= 1

        i = 0
-IREDO:
 #      Tr = Zr*Zr - Zi*Zi + Cr;
         $N1 = Zr * Zr
         $N2 = Zi * Zi
+IREDO:
         Tr = $N1 - $N2
         Tr += Cr
 #       Ti = 2*Zr*Zi + Ci;
-        Ti = 2
-       Ti *= Zr
+        Ti = 2 * Zr
         Ti *= Zi
         Ti += Ci
 #      Zr = Tr; Zi = Ti;
@@ -85,13 +84,13 @@
 #      if (Zr*Zr+Zi*Zi > limit*limit) break;
        $N1 = Zr * Zr
        $N2 = Zi * Zi
-        $N1 += $N2
-        if $N1 > limit goto IBRK
+        $N3 = $N1 + $N2
+        if $N3 > limit goto IBRK
        inc i
         if i < iter goto IREDO
 IBRK:  
        byte_acc <<= 1
-        if $N1 <= limit goto SLA
+        if $N3 <= limit goto SLA
        byte_acc |= 0
        goto SLE
 SLA:   byte_acc |= 1

Reply via email to