X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fjs%2FJSMath.java;h=835eefa2c90952933deec0cdc56b24a26e2425e1;hb=ce791e4058158295bce9cf7b6698c2b565d571d7;hp=5eed9b520e437af3ce3b59ae1a7c310f5585108b;hpb=3591b88b94a6bb378af3d4abe6eb5233ce583104;p=org.ibex.core.git diff --git a/src/org/ibex/js/JSMath.java b/src/org/ibex/js/JSMath.java index 5eed9b5..835eefa 100644 --- a/src/org/ibex/js/JSMath.java +++ b/src/org/ibex/js/JSMath.java @@ -7,57 +7,59 @@ public class JSMath extends JS { public static JSMath singleton = new JSMath(); - private static final Double E = new Double(java.lang.Math.E); - private static final Double PI = new Double(java.lang.Math.PI); - private static final Double LN10 = new Double(java.lang.Math.log(10)); - private static final Double LN2 = new Double(java.lang.Math.log(2)); - private static final Double LOG10E = new Double(1/java.lang.Math.log(10)); - private static final Double LOG2E = new Double(1/java.lang.Math.log(2)); - private static final Double SQRT1_2 = new Double(1/java.lang.Math.sqrt(2)); - private static final Double SQRT2 = new Double(java.lang.Math.sqrt(2)); + 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)); - public Object callMethod(Object method, Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn { + public JS callMethod(JS method_, JS a0, JS a1, JS a2, JS[] rest, int nargs) throws JSExn { + if(!JS.isString(method_)) return super.callMethod(method_,a0,a1,a2,rest,nargs); + String method = JS.toString(method_); switch(nargs) { case 0: { //#switch(method) - case "random": return new Double(java.lang.Math.random()); + case "random": return JS.N(java.lang.Math.random()); //#end break; } case 1: { //#switch(method) - case "ceil": return new Long((long)java.lang.Math.ceil(toDouble(a0))); - case "floor": return new Long((long)java.lang.Math.floor(toDouble(a0))); - case "round": return new Long((long)java.lang.Math.round(toDouble(a0))); - case "abs": return new Double(java.lang.Math.abs(toDouble(a0))); - case "sin": return new Double(java.lang.Math.sin(toDouble(a0))); - case "cos": return new Double(java.lang.Math.cos(toDouble(a0))); - case "tan": return new Double(java.lang.Math.tan(toDouble(a0))); - case "asin": return new Double(java.lang.Math.asin(toDouble(a0))); - case "acos": return new Double(java.lang.Math.acos(toDouble(a0))); - case "atan": return new Double(java.lang.Math.atan(toDouble(a0))); - case "sqrt": return new Double(java.lang.Math.sqrt(toDouble(a0))); - case "exp": return new Double(java.lang.Math.exp(toDouble(a0))); - case "log": return new Double(java.lang.Math.log(toDouble(a0))); + 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))); //#end break; } case 2: { //#switch(method) - case "min": return new Double(java.lang.Math.min(toDouble(a0), toDouble(a1))); - case "max": return new Double(java.lang.Math.max(toDouble(a0), toDouble(a1))); - case "pow": return new Double(java.lang.Math.pow(toDouble(a0), toDouble(a1))); - case "atan2": return new Double(java.lang.Math.atan2(toDouble(a0), toDouble(a1))); + 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))); //#end break; } } - return super.callMethod(method, a0, a1, a2, rest, nargs); + return super.callMethod(method_, a0, a1, a2, rest, nargs); } - public void put(Object key, Object val) { return; } - - public Object get(Object key) throws JSExn { + public JS get(JS key_) throws JSExn { + if(!JS.isString(key_)) return super.get(key_); + String key = JS.toString(key_); //#switch(key) case "E": return E; case "LN10": return LN10; @@ -86,6 +88,6 @@ public class JSMath extends JS { case "log": return METHOD; case "random": return METHOD; //#end - return super.get(key); + return super.get(key_); } }