Author: jisom
Date: Sat Feb 18 13:23:36 2006
New Revision: 11651

Added:
   trunk/examples/shootout/partialsums.pir   (contents, props changed)
Log:
Add the partialsums shootout


Added: trunk/examples/shootout/partialsums.pir
==============================================================================
--- (empty file)
+++ trunk/examples/shootout/partialsums.pir     Sat Feb 18 13:23:36 2006
@@ -0,0 +1,159 @@
+#!./parrot -C
+#
+# partialsums N  (N = 2500000 for shootout)
+#
+# By Joshua Isom
+
+.sub main :main
+       .param pmc argv
+       .local int k, n
+       .local float sum, a
+       .local pmc parray
+       parray = new .FixedFloatArray
+       parray = 1
+       $I0 = argv
+       n = 2500000
+       unless $I0 == 2 goto argok
+       $S0 = argv[1]
+       n = $S0
+argok:
+
+       sum = 0.0
+       $N0 = 2.0 / 3.0
+       k = 0
+beginfor_0:
+       unless k <= n goto endfor_0
+       $N1 = pow $N0, k
+       sum += $N1
+       inc k
+       goto beginfor_0
+endfor_0:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\t(2/3)^k\n", parray
+       print $S0
+
+       sum = 0.0
+       k = 1
+beginfor_1:
+       unless k <= n goto endfor_1
+       $N1 = sqrt k
+       $N1 = 1.0 / $N1
+       sum += $N1
+       inc k
+       goto beginfor_1
+endfor_1:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\tk^-0.5\n", parray
+       print $S0
+
+       sum = 0.0
+       k = 1
+beginfor_3:
+       unless k <= n goto endfor_3
+       $N1 = k + 1.0
+       $N1 *= k
+       $N1 = 1.0 /$N1
+       sum += $N1
+       inc k
+       goto beginfor_3
+endfor_3:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\t1/k(k+1)\n", parray
+       print $S0
+
+       sum = 0.0
+       k = 1
+beginfor_4:
+       unless k <= n goto endfor_4
+       $N1 = sin k
+       $N1 *= $N1
+       $N1 *= k
+       $N1 *= k
+       $N1 *= k
+       $N1 = 1.0 /$N1
+       sum += $N1
+       inc k
+       goto beginfor_4
+endfor_4:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\tFlint Hills\n", parray
+       print $S0
+
+       sum = 0.0
+       k = 1
+beginfor_5:
+       unless k <= n goto endfor_5
+       $N1 = cos k
+       $N1 *= $N1
+       $N1 *= k
+       $N1 *= k
+       $N1 *= k
+       $N1 = 1.0 /$N1
+       sum += $N1
+       inc k
+       goto beginfor_5
+endfor_5:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\tCookson Hills\n", parray
+       print $S0
+
+       sum = 0.0
+       k = 1
+beginfor_6:
+       unless k <= n goto endfor_6
+       $N1 = 1.0 /k
+       sum += $N1
+       inc k
+       goto beginfor_6
+endfor_6:
+       parray[0] = sum 
+       $S0 = sprintf "%.9f\tHarmonic\n", parray
+       print $S0
+
+       sum = 0.0
+       k = 1
+beginfor_7:
+       unless k <= n goto endfor_7
+       $N1 = k * k
+       $N1 = 1.0 / $N1
+       sum += $N1
+       inc k
+       goto beginfor_7
+endfor_7:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\tRiemann Zeta\n", parray
+       print $S0
+
+       sum = 0.0
+       a = -1.0
+       k = 1
+beginfor_8:
+       unless k <= n goto endfor_8
+       neg a
+       $N1 = a / k
+       sum += $N1
+       inc k
+       goto beginfor_8
+endfor_8:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\tAlternating Harmonic\n", parray
+       print $S0
+
+       sum = 0.0
+       a = -1.0
+       k = 1
+beginfor_9:
+       unless k <= n goto endfor_9
+       neg a
+       $N1 = 2.0 * k
+       dec $N1
+       $N1 = a / $N1
+       sum += $N1
+       inc k
+       goto beginfor_9
+endfor_9:
+       parray[0] = sum
+       $S0 = sprintf "%.9f\tGregory\n", parray
+       print $S0
+
+.end

Reply via email to