js/src/jit-test/tests/sunspider/check-controlflow-recursive.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/sunspider/check-controlflow-recursive.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,27 @@
     1.4 +// The Computer Language Shootout
     1.5 +// http://shootout.alioth.debian.org/
     1.6 +// contributed by Isaac Gouy
     1.7 +
     1.8 +function ack(m,n){
     1.9 +   if (m==0) { return n+1; }
    1.10 +   if (n==0) { return ack(m-1,1); }
    1.11 +   return ack(m-1, ack(m,n-1) );
    1.12 +}
    1.13 +
    1.14 +function fib(n) {
    1.15 +    if (n < 2){ return 1; }
    1.16 +    return fib(n-2) + fib(n-1);
    1.17 +}
    1.18 +
    1.19 +function tak(x,y,z) {
    1.20 +    if (y >= x) return z;
    1.21 +    return tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y));
    1.22 +}
    1.23 +
    1.24 +var ret = 0;
    1.25 +for ( var i = 3; i <= 5; i++ ) {
    1.26 +    ret += ack(3,i);
    1.27 +    ret += fib(17.0+i);
    1.28 +    ret += tak(3*i+3,2*i+2,i+1);
    1.29 +}
    1.30 +assertEq(ret, 57775);

mercurial