Sat, 21 Sep 2013 14:02:16 +0100
Add math.frexp() and tests (many thanks to Florob and Link Mauve!)
lvm.js | file | annotate | diff | comparison | revisions | |
tests/pass/frexp.lua | file | annotate | diff | comparison | revisions |
--- a/lvm.js Wed Nov 24 03:36:14 2010 +0000 +++ b/lvm.js Sat Sep 21 14:02:16 2013 +0100 @@ -846,6 +846,16 @@ { return [this.LValue(m.value*Math.pow(2, e.value))]; }, + frexp: function (x) + { + var m = x.value; + var e = 0; + while (Math.abs(m) >= 1) { + m = m / 2; + e = e + 1; + }; + return [this.LValue(m), this.LValue(e)]; + }, floor: function (x) { return [this.LValue(Math.floor(x.value))];
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/pass/frexp.lua Sat Sep 21 14:02:16 2013 +0100 @@ -0,0 +1,11 @@ +local m, e = math.frexp(1); +assert(m == 0.5 and e == 1, "frexp(1)"); + +local m, e = math.frexp(0); +assert(m == 0 and e == 0, "frexp(0)"); + +local m, e = math.frexp(3); +assert(m == 0.75 and e == 2, "frexp(3)"); + +local m, e = math.frexp(-1); +assert(m == -0.5 and e == 1, "frexp(1)");