filter time

by needlethread

HTML

<div id="start"></div><div id="done">not done</div>
<div id="tinfo">...</div>

JavaScript

$("#start").html('init');
var pts = 10000000;
var q = new Array();
for (var a = 0; a <= pts; a++) {
   q[a] = Math.sin(2*Math.PI*a/10);
}
$("#start").html('init2');

var f = new Object();
f.a0 = 0.24523727525278560000;
f.a1 = 0.24523727525278560000;
f.a2 = 0;
f.b1 = 0.50952544949442879000;
f.b2 = 0;

var startTime=new Date().getTime();
var endTime;

var u = new Array();
    var sum = 0;
for (a=0; a <= pts; a++) {
    if (a<5) {
        u[a] = q[a];
    } else {
        u[a] = q[a] * f.a0 + q[a-1] * f.a1 + q[a-2] * f.a2 +
                u[a-1] * f.b1 + u[a-2] * f.b2;
    }
    if (a == (pts/2)) {
        //alert('halfway!');
    }
    sum += u[a];
}
endTime=new Date().getTime();
$("#tinfo").html('Elapsed time: '+((endTime-startTime)/1000)+' seconds.');
var text = u[pts/4] + ' '  + u[pts/2];
$("#done").html('DONE DONE ' + sum + text);