chromium/third_party/blink/web_tests/fast/js/regress/script-tests/slow-convergence.js

function foo(a, b, c, d) {
    var result = a;
    if (a < 0)
        throw "what!";
    else if (a < 1) {
        for (var i = b; i < c; ++i)
            result += d[i];
    } else if (a < 2) {
        for (var i = b + 1; i < c - 1; ++i)
            result += d[i] * a;
    } else if (a < 3) {
        for (var i = b + 2; i < c - 2; ++i)
            result += d[i] * b;
    } else if (a < 4) {
        for (var i = b + 3; i < c - 3; ++i)
            result += d[i] * c;
    } else
        throw "huh?";
    return result;
}

var array = [];
for (var i = 0; i < 20; ++i)
    array.push(i);

var limit = 20000;
var phases = 4;
var result = 0;
for (var i = 0; i < limit; ++i) {
    var phase = (i * phases / limit) | 0;
    result += foo(i % (phase + 1), ((i % array.length) / 2) | 0, array.length - (((i % array.length) / 2) | 0), array);
}

if (result != 3072367)
    throw "Bad result: " + result;