1 // The Computer Language Shootout
2 // http://shootout.alioth.debian.org/
3 // recursive test, by bearophile, Jan 24 2006
4 // Compile with: -O3 -s -fomit-frame-pointer -funroll-loops
8 int Ack(int x, int y) {
13 return Ack(x-1, Ack(x, y-1));
19 return Fib(n-2) + Fib(n-1);
22 double FibFP(double n) {
25 return FibFP(n-2.0) + FibFP(n-1.0);
28 int Tak(int x, int y, int z) {
30 return Tak( Tak(x-1, y, z), Tak(y-1, z, x), Tak(z-1, x, y) );
34 double TakFP(double x, double y, double z) {
36 return TakFP( TakFP(x-1.0, y, z), TakFP(y-1.0, z, x), TakFP(z-1.0, x, y) );
40 int main(int argc, char **argv) {
44 n = atoi(argv[1]) - 1;
45 printf("Ack(3,%d): %d\n", n+1, Ack(3, n+1));
46 printf("Fib(%.1f): %.1f\n", 28.0+n, FibFP(28.0+n));
47 printf("Tak(%d,%d,%d): %d\n", 3*n, 2*n, n, Tak(3*n, 2*n, n));
48 printf("Fib(3): %d\n", Fib(3));
49 printf("Tak(3.0,2.0,1.0): %.1f\n", TakFP(3.0, 2.0, 1.0));