gauss
This commit is contained in:
parent
4c4b9219c8
commit
e66cee7da1
|
@ -1,10 +1,10 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script src="foo.js">
|
<script src="gauss.js">
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
invoke(function() {});
|
invoke(function() {});
|
||||||
var f = MACHINE.env.globalBindings.factorial.adaptToJs();
|
var f = MACHINE.env.globalBindings.gauss.adaptToJs();
|
||||||
|
|
||||||
var startTime;
|
var startTime;
|
||||||
|
|
||||||
|
@ -14,11 +14,11 @@ startTime = new Date();
|
||||||
f([N], function(v) { console.log("functions", v, new Date() - startTime); });
|
f([N], function(v) { console.log("functions", v, new Date() - startTime); });
|
||||||
|
|
||||||
|
|
||||||
var mul = function(x, y) { return x * y; }
|
var add = function(x, y) { return x + y; }
|
||||||
startTime = new Date();
|
startTime = new Date();
|
||||||
var acc = 1;
|
var acc = 0;
|
||||||
for (var i = 1; i <= N; i++) {
|
for (var i = 1; i <= N; i++) {
|
||||||
acc = mul(acc, i);
|
acc = add(acc, i);
|
||||||
}
|
}
|
||||||
console.log("loops", acc, new Date() - startTime);
|
console.log("loops", acc, new Date() - startTime);
|
||||||
</script>
|
</script>
|
|
@ -130,9 +130,9 @@ var entry1=function(){
|
||||||
if(--MACHINE.callsBeforeTrampoline < 0) { throw entry1; }
|
if(--MACHINE.callsBeforeTrampoline < 0) { throw entry1; }
|
||||||
MACHINE.env=(MACHINE.proc.env);
|
MACHINE.env=(MACHINE.proc.env);
|
||||||
MACHINE.env=new ExtendedEnvironment(MACHINE.env, MACHINE.argl);
|
MACHINE.env=new ExtendedEnvironment(MACHINE.env, MACHINE.argl);
|
||||||
if (! (MACHINE.env).globalBindings.hasOwnProperty("fact-iter")) { throw new Error("Not bound: " + "fact-iter"); }
|
if (! (MACHINE.env).globalBindings.hasOwnProperty("gauss-iter")) { throw new Error("Not bound: " + "gauss-iter"); }
|
||||||
MACHINE.proc=((MACHINE.env).globalBindings["fact-iter"]);
|
MACHINE.proc=((MACHINE.env).globalBindings["gauss-iter"]);
|
||||||
MACHINE.val=1;
|
MACHINE.val=0;
|
||||||
MACHINE.argl=[MACHINE.val, undefined];
|
MACHINE.argl=[MACHINE.val, undefined];
|
||||||
MACHINE.val=(MACHINE.env).valss[0][0];
|
MACHINE.val=(MACHINE.env).valss[0][0];
|
||||||
MACHINE.argl=[MACHINE.val,MACHINE.argl];
|
MACHINE.argl=[MACHINE.val,MACHINE.argl];
|
||||||
|
@ -145,7 +145,7 @@ return MACHINE.val();};
|
||||||
|
|
||||||
var afterLambda2=function(){
|
var afterLambda2=function(){
|
||||||
if(--MACHINE.callsBeforeTrampoline < 0) { throw afterLambda2; }
|
if(--MACHINE.callsBeforeTrampoline < 0) { throw afterLambda2; }
|
||||||
(MACHINE.env).globalBindings["factorial"] = MACHINE.val;
|
(MACHINE.env).globalBindings["gauss"] = MACHINE.val;
|
||||||
MACHINE.val="ok";
|
MACHINE.val="ok";
|
||||||
MACHINE.val=(new Closure(MACHINE.env, entry6));
|
MACHINE.val=(new Closure(MACHINE.env, entry6));
|
||||||
return afterLambda7();};
|
return afterLambda7();};
|
||||||
|
@ -181,13 +181,13 @@ return MACHINE.cont();};
|
||||||
|
|
||||||
var falseBranch9=function(){
|
var falseBranch9=function(){
|
||||||
if(--MACHINE.callsBeforeTrampoline < 0) { throw falseBranch9; }
|
if(--MACHINE.callsBeforeTrampoline < 0) { throw falseBranch9; }
|
||||||
if (! (MACHINE.env).globalBindings.hasOwnProperty("fact-iter")) { throw new Error("Not bound: " + "fact-iter"); }
|
if (! (MACHINE.env).globalBindings.hasOwnProperty("gauss-iter")) { throw new Error("Not bound: " + "gauss-iter"); }
|
||||||
MACHINE.proc=((MACHINE.env).globalBindings["fact-iter"]);
|
MACHINE.proc=((MACHINE.env).globalBindings["gauss-iter"]);
|
||||||
MACHINE.stack.push(MACHINE.cont);
|
MACHINE.stack.push(MACHINE.cont);
|
||||||
MACHINE.stack.push(MACHINE.proc);
|
MACHINE.stack.push(MACHINE.proc);
|
||||||
MACHINE.stack.push(MACHINE.env);
|
MACHINE.stack.push(MACHINE.env);
|
||||||
if (! (MACHINE.env).globalBindings.hasOwnProperty("*")) { throw new Error("Not bound: " + "*"); }
|
if (! (MACHINE.env).globalBindings.hasOwnProperty("+")) { throw new Error("Not bound: " + "+"); }
|
||||||
MACHINE.proc=((MACHINE.env).globalBindings["*"]);
|
MACHINE.proc=((MACHINE.env).globalBindings["+"]);
|
||||||
MACHINE.val=(MACHINE.env).valss[0][0];
|
MACHINE.val=(MACHINE.env).valss[0][0];
|
||||||
MACHINE.argl=[MACHINE.val, undefined];
|
MACHINE.argl=[MACHINE.val, undefined];
|
||||||
MACHINE.val=(MACHINE.env).valss[0][1];
|
MACHINE.val=(MACHINE.env).valss[0][1];
|
||||||
|
@ -235,7 +235,7 @@ return MACHINE.val();};
|
||||||
|
|
||||||
var afterLambda7=function(){
|
var afterLambda7=function(){
|
||||||
if(--MACHINE.callsBeforeTrampoline < 0) { throw afterLambda7; }
|
if(--MACHINE.callsBeforeTrampoline < 0) { throw afterLambda7; }
|
||||||
(MACHINE.env).globalBindings["fact-iter"] = MACHINE.val;
|
(MACHINE.env).globalBindings["gauss-iter"] = MACHINE.val;
|
||||||
MACHINE.val="ok";
|
MACHINE.val="ok";
|
||||||
return MACHINE.cont();};
|
return MACHINE.cont();};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user