Add math.frexp() and tests (many thanks to Florob and Link Mauve!)

Sat, 21 Sep 2013 14:02:16 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Sat, 21 Sep 2013 14:02:16 +0100
changeset 142
574e0baea136
parent 141
16b833862ae2
child 143
a689e0187ef5

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)");

mercurial