Author: jisom Date: Sat Feb 18 16:22:07 2006 New Revision: 11655 Added: trunk/examples/shootout/partialsums-2.pir (contents, props changed) Log: Add another partialsums, one big loop
Added: trunk/examples/shootout/partialsums-2.pir ============================================================================== --- (empty file) +++ trunk/examples/shootout/partialsums-2.pir Sat Feb 18 16:22:07 2006 @@ -0,0 +1,102 @@ +#!./parrot -j +# +# partialsums N (N = 2500000 for shootout) +# +# By Joshua Isom + +.sub main :main + .param pmc argv + .local int k, n + .local num sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8, sum9, a + .local pmc parray + .local string result + parray = new .FixedFloatArray + parray = 9 + $I0 = argv + n = 2500000 + unless $I0 == 2 goto argok + $S0 = argv[1] + n = $S0 +argok: + + sum1 = 0.0 + sum2 = 0.0 + sum3 = 0.0 + sum4 = 0.0 + sum5 = 0.0 + sum6 = 0.0 + sum7 = 0.0 + sum8 = 0.0 + sum9 = 0.0 + a = -1.0 + $N0 = 2.0 / 3.0 + $I2 = 2 + k = 1 +beginfor: + $N1 = sqrt k + $N1 = 1.0 / $N1 + sum2 += $N1 + $N1 = k + 1.0 + $N1 *= k + $N1 = 1.0 /$N1 + sum3 += $N1 + $N1 = sin k + $N1 *= $N1 + $N1 *= k + $N1 *= k + $N1 *= k + $N1 = 1.0 /$N1 + sum4 += $N1 + $N1 = cos k + $N1 *= $N1 + $N1 *= k + $N1 *= k + $N1 *= k + $N1 = 1.0 /$N1 + sum5 += $N1 + $N1 = 1.0 / k + sum6 += $N1 + $N1 = k * k + $N1 = 1.0 / $N1 + sum7 += $N1 + neg a + $N1 = a / k + sum8 += $N1 + $N1 = 2.0 * k + dec $N1 + $N1 = a / $N1 + sum9 += $N1 +lastfor: + $N1 = k - 1 + $N1 = pow $N0, $N1 + sum1 += $N1 + inc k + if k <= n goto beginfor + dec $I2 + if $I2 goto lastfor + + parray[0] = sum1 + parray[1] = sum2 + parray[2] = sum3 + parray[3] = sum4 + parray[4] = sum5 + parray[5] = sum6 + parray[6] = sum7 + parray[7] = sum8 + parray[8] = sum9 + + result = sprintf <<"END", parray +%.9f\t(2/3)^k +%.9f\tk^-0.5 +%.9f\t1/k(k+1) +%.9f\tFlint Hills +%.9f\tCookson Hills +%.9f\tHarmonic +%.9f\tRiemann Zeta +%.9f\tAlternating Harmonic +%.9f\tGregory +END + print result + +.end +
