This one is really trivial, but I'm not complaining.
=head1 NAME
examples/shootout/harmonic.pir - Partial sum of Harmonic series =head1 SYNOPSIS % ./parrot examples/shootout/harmonic.pir 10000000 =head1 DESCRIPTION Translated from C code by Greg Buchholz into PIR by Peter Baylies <[EMAIL PROTECTED]>. The C code is: /* The Great Computer Language Shootout http://shootout.alioth.debian.org/ contributed by Greg Buchholz Optimized by Paul Hsieh compile: gcc -O2 -o harmonic harmonic.c */ #include<stdio.h> #include<stdlib.h> int main (int argc, char **argv) { double i=1, sum=0; int n; for(n = atoi(argv[1]); n > 0; n--, i++) sum += 1/i; printf("%.9f\n", sum); return 0; } =cut .sub 'main' :main .param pmc argv .local int argc .local int n .local num i, sum i = 1 sum = 0 argc = argv if argc <= 1 goto NREDO $S0 = argv[1] n = $S0 NREDO: $N1 = 1 / i sum += $N1 inc i dec n if n goto NREDO PRINT: $P0 = new .FixedFloatArray $P0 = 1 $P0[0] = sum $S0 = sprintf "%.9f\n", $P0 print $S0 end .end