X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fibex%2Fjs%2FJSMath.java;h=7a805e745487c90b3697935841af16758543351a;hb=a1e6b7e9307319c0195b0efbe5e5354c128be481;hp=6b092e0b6a8460a7ba2497fee5570cd3d81ae57c;hpb=2d38cf96f2ac17fe1961aadb8bf4f02e5a1b5294;p=org.ibex.js.git diff --git a/src/org/ibex/js/JSMath.java b/src/org/ibex/js/JSMath.java index 6b092e0..7a805e7 100644 --- a/src/org/ibex/js/JSMath.java +++ b/src/org/ibex/js/JSMath.java @@ -5,48 +5,50 @@ package org.ibex.js; /** The JavaScript Math object */ -class JSMath extends JS { - private static final JS E = JS.N(java.lang.Math.E); - private static final JS PI = JS.N(java.lang.Math.PI); - private static final JS LN10 = JS.N(java.lang.Math.log(10)); - private static final JS LN2 = JS.N(java.lang.Math.log(2)); - private static final JS LOG10E = JS.N(1/java.lang.Math.log(10)); - private static final JS LOG2E = JS.N(1/java.lang.Math.log(2)); - private static final JS SQRT1_2 = JS.N(1/java.lang.Math.sqrt(2)); - private static final JS SQRT2 = JS.N(java.lang.Math.sqrt(2)); +class JSMath extends JS.Immutable { + private static final JS.Method METHOD = new JS.Method(); - public JS callMethod(JS method, JS a0, JS a1, JS a2, JS[] rest, int nargs) throws JSExn { - switch(nargs) { + private static final JS E = JSU.N(java.lang.Math.E); + private static final JS PI = JSU.N(java.lang.Math.PI); + private static final JS LN10 = JSU.N(java.lang.Math.log(10)); + private static final JS LN2 = JSU.N(java.lang.Math.log(2)); + private static final JS LOG10E = JSU.N(1/java.lang.Math.log(10)); + private static final JS LOG2E = JSU.N(1/java.lang.Math.log(2)); + private static final JS SQRT1_2 = JSU.N(1/java.lang.Math.sqrt(2)); + private static final JS SQRT2 = JSU.N(java.lang.Math.sqrt(2)); + + public JS call(JS method, JS[] args) throws JSExn { + switch(args.length) { case 0: { - //#switch(JS.toString(method)) - case "random": return JS.N(java.lang.Math.random()); + //#switch(JSU.toString(method)) + case "random": return JSU.N(java.lang.Math.random()); //#end break; } case 1: { - //#switch(JS.toString(method)) - case "ceil": return JS.N((long)java.lang.Math.ceil(toDouble(a0))); - case "floor": return JS.N((long)java.lang.Math.floor(toDouble(a0))); - case "round": return JS.N((long)java.lang.Math.round(toDouble(a0))); - case "abs": return JS.N(java.lang.Math.abs(toDouble(a0))); - case "sin": return JS.N(java.lang.Math.sin(toDouble(a0))); - case "cos": return JS.N(java.lang.Math.cos(toDouble(a0))); - case "tan": return JS.N(java.lang.Math.tan(toDouble(a0))); - case "asin": return JS.N(java.lang.Math.asin(toDouble(a0))); - case "acos": return JS.N(java.lang.Math.acos(toDouble(a0))); - case "atan": return JS.N(java.lang.Math.atan(toDouble(a0))); - case "sqrt": return JS.N(java.lang.Math.sqrt(toDouble(a0))); - case "exp": return JS.N(java.lang.Math.exp(toDouble(a0))); - case "log": return JS.N(java.lang.Math.log(toDouble(a0))); + //#switch(JSU.toString(method)) + case "ceil": return JSU.N((long)java.lang.Math.ceil(JSU.toDouble(args[0]))); + case "floor": return JSU.N((long)java.lang.Math.floor(JSU.toDouble(args[0]))); + case "round": return JSU.N((long)java.lang.Math.round(JSU.toDouble(args[0]))); + case "abs": return JSU.N(java.lang.Math.abs(JSU.toDouble(args[0]))); + case "sin": return JSU.N(java.lang.Math.sin(JSU.toDouble(args[0]))); + case "cos": return JSU.N(java.lang.Math.cos(JSU.toDouble(args[0]))); + case "tan": return JSU.N(java.lang.Math.tan(JSU.toDouble(args[0]))); + case "asin": return JSU.N(java.lang.Math.asin(JSU.toDouble(args[0]))); + case "acos": return JSU.N(java.lang.Math.acos(JSU.toDouble(args[0]))); + case "atan": return JSU.N(java.lang.Math.atan(JSU.toDouble(args[0]))); + case "sqrt": return JSU.N(java.lang.Math.sqrt(JSU.toDouble(args[0]))); + case "exp": return JSU.N(java.lang.Math.exp(JSU.toDouble(args[0]))); + case "log": return JSU.N(java.lang.Math.log(JSU.toDouble(args[0]))); //#end break; } case 2: { - //#switch(JS.toString(method)) - case "min": return JS.N(java.lang.Math.min(toDouble(a0), toDouble(a1))); - case "max": return JS.N(java.lang.Math.max(toDouble(a0), toDouble(a1))); - case "pow": return JS.N(java.lang.Math.pow(toDouble(a0), toDouble(a1))); - case "atan2": return JS.N(java.lang.Math.atan2(toDouble(a0), toDouble(a1))); + //#switch(JSU.toString(method)) + case "min": return JSU.N(java.lang.Math.min(JSU.toDouble(args[0]), JSU.toDouble(args[1]))); + case "max": return JSU.N(java.lang.Math.max(JSU.toDouble(args[0]), JSU.toDouble(args[1]))); + case "pow": return JSU.N(java.lang.Math.pow(JSU.toDouble(args[0]), JSU.toDouble(args[1]))); + case "atan2": return JSU.N(java.lang.Math.atan2(JSU.toDouble(args[0]), JSU.toDouble(args[1]))); //#end break; } @@ -55,7 +57,7 @@ class JSMath extends JS { } public JS get(JS key) throws JSExn { - //#switch(JS.toString(key)) + //#switch(JSU.toString(key)) case "E": return E; case "LN10": return LN10; case "LN2": return LN2;