[t][TT #1119] Convert t/op/bitwise.t to PIR
[parrot.git] / examples / benchmarks / fib.pir
blobbc7491c5c42b2c10fab0da583878c28322d4ff86
1 # Copyright (C) 2001-2008, Parrot Foundation.
2 # $Id$
4 =head1 NAME
6 examples/benchmarks/fib.pir - Fibonacci Benchmark
8 =head1 SYNOPSIS
10     % time ./parrot examples/benchmarks/fib.pir n
12 =head1 DESCRIPTION
14 Calculates the Fibonacci Number for C<n> (defaults to 28 if
15 unspecified).
17 =cut
19 .sub _main
20     .param pmc argv
21     .local int argc
22     argc = argv
23     .local int N
24     N = 28
25     if argc <= 1 goto noarg
26     $S0 = argv[1]
27     N = $S0
28 noarg:
29     .local num start
30     .local pmc fib
31     .local int r
32     time start
33     r = _fib(N)
34     .local num fin
35     time fin
36     print "fib("
37     print N
38     print ") = "
39     print r
40     print " "
41     fin -= start
42     print fin
43     print "s\n"
44     end
45 .end
47 .sub _fib
48     .param int n
49     if n < 2 goto ret
50     .local int n1, n2, r1, r2
51     n1 = n - 1
52     n2 = n - 2
53     r1 = _fib(n1)
54     r2 = _fib(n2)
55     n = r1 + r2
56 ret:
57     .return (n)
58 .end
60 =head1 SEE ALSO
62 F<examples/benchmarks/fib.pl>.
64 =cut
66 # Local Variables:
67 #   mode: pir
68 #   fill-column: 100
69 # End:
70 # vim: expandtab shiftwidth=4 ft=pir: