java和noddjs哪个好,nativemath.java 源代码在线查看 - java中比较著名的js引擎当属mozilla开源的rhino 资源下载 虫虫电子下载站...

} } break; case Id_pow: x = ScriptRuntime.toNumber(args, 0); x = js_pow(x, ScriptRuntime.toNumber(args, 1)); break; case Id_random: x = Math.random(); break; case Id_round: x = ScriptRuntime.toNumber(args, 0); if (x == x && x != Double.POSITIVE_INFINITY && x != Double.NEGATIVE_INFINITY) { // Round only finite x long l = Math.round(x); if (l != 0) { x = (double)l; } else { // We must propagate the sign of d into the result if (x < 0.0) { x = ScriptRuntime.negativeZero; } else if (x != 0.0) { x = 0.0; } } } break; case Id_sin: x = ScriptRuntime.toNumber(args, 0); x = (x == Double.POSITIVE_INFINITY || x == Double.NEGATIVE_INFINITY) ? Double.NaN : Math.sin(x); break; case Id_sqrt: x = ScriptRuntime.toNumber(args, 0); x = Math.sqrt(x); break; case Id_tan: x = ScriptRuntime.toNumber(args, 0); x = Math.tan(x); break; default: throw new IllegalStateException(String.valueOf(methodId)); } return ScriptRuntime.wrapNumber(x); } // See Ecma 15.8.2.13 private double js_pow(double x, double y) { double result; if (y != y) { // y is NaN, result is always NaN result = y; } else if (y == 0) { // Java's pow(NaN, 0) = NaN; we need 1 result = 1.0; } else if (x == 0) { // Many dirrerences from Java's Math.pow if (1 / x > 0) { result = (y > 0) ? 0 : Double.POSITIVE_INFINITY; } else { // x is -0, need to check if y is an odd integer long y_long = (long)y; if (y_long == y && (y_long & 0x1) != 0) { result = (y > 0) ? -0.0 : Double.NEGATIVE_INFINITY; } else { result = (y > 0) ? 0.0 : Double.POSITIVE_INFINITY; } } } else { result = Math.pow(x, y); if (result != result) { // Check for broken Java implementations that gives NaN // when they should return something else if (y == Double.POSITIVE_INFINITY) { if (x < -1.0 || 1.0 < x) { result = Double.POSITIVE_INFINITY; } else if (-1.0 < x && x < 1.0) { result = 0; } } else if (y == Double.NEGATIVE_INFINITY) { if (x < -1.0 || 1.0 < x) { result = 0; } else if (-1.0 < x && x < 1.0) { result = Double.POSITIVE_INFINITY; } } else if (x == Double.POSITIVE_INFINITY) { result = (y > 0) ? Double.POSITIVE_INFINITY : 0.0; } else if (x == Double.NEGATIVE_INFINITY) { long y_long = (long)y; if (y_long == y && (y_long & 0x1) != 0) { // y is odd integer result = (y > 0) ? Double.NEGATIVE_INFINITY : -0.0; } else { result = (y > 0) ? Double.POSITIVE_INFINITY : 0.0; } } } } return result; }// #string_id_map# protected int findPrototypeId(String s) { int id;// #generated# Last update: 2004-03-17 13:51:32 CET L0: { id = 0; String X = null; int c; L: switch (s.length()) { case 1: if (s.charAt(0)=='E') {id=Id_E; break L0;} break L; case 2: if (s.charAt(0)=='P' && s.charAt(1)=='I') {id=Id_PI; break L0;} break L; case 3: switch (s.charAt(0)) { case 'L': if (s.charAt(2)=='2' && s.charAt(1)=='N') {id=Id_LN2; break L0;} break L; case 'a': if (s.charAt(2)=='s' && s.charAt(1)=='b') {id=Id_abs; break L0;} break L; case 'c': if (s.charAt(2)=='s' && s.charAt(1)=='o') {id=Id_cos; break L0;} break L; case 'e': if (s.charAt(2)=='p' && s.charAt(1)=='x') {id=Id_exp; break L0;} break L; case 'l': if (s.charAt(2)=='g' && s.charAt(1)=='o') {id=Id_log; break L0;} break L; case 'm': c=s.charAt(2); if (c=='n') { if (s.charAt(1)=='i') {id=Id_min; break L0;} } else if (c=='x') { if (s.charAt(1)=='a') {id=Id_max; break L0;} } break L; case 'p': if (s.charAt(2)=='w' && s.charAt(1)=='o') {id=Id_pow; break L0;} break L; case 's': if (s.charAt(2)=='n' && s.charAt(1)=='i') {id=Id_sin; break L0;} break L; case 't': if (s.charAt(2)=='n' && s.charAt(1)=='a') {id=Id_tan; break L0;} break L; } break L; case 4: switch (s.charAt(1)) { case 'N': X="LN10";id=Id_LN10; break L; case 'c': X="acos";id=Id_acos; break L; case 'e': X="ceil";id=Id_ceil; break L; case 'q': X="sqrt";id=Id_sqrt; break L; case 's': X="asin";id=Id_asin; break L; case 't': X="atan";id=Id_atan; break L; } break L; case 5: switch (s.charAt(0)) { case 'L': X="LOG2E";id=Id_LOG2E; break L; case 'S': X="SQRT2";id=Id_SQRT2; break L; case 'a': X="atan2";id=Id_atan2; break L; case 'f': X="floor";id=Id_floor; break L; case 'r': X="round";id=Id_round; break L; } break L; case 6: c=s.charAt(0); if (c=='L') { X="LOG10E";id=Id_LOG10E; } else if (c=='r') { X="random";id=Id_random; } break L; case 7: X="SQRT1_2";id=Id_SQRT1_2; break L; case 8: X="toSource";id=Id_toSource; break L; } if (X!=null && X!=s && !X.equals(s)) id = 0; }// #/generated# return id; } private static final int Id_toSource = 1, Id_abs = 2, Id_acos = 3, Id_asin = 4, Id_atan = 5, Id_atan2 = 6, Id_ceil = 7, Id_cos = 8, Id_exp = 9, Id_floor = 10, Id_log = 11, Id_max = 12, Id_min = 13, Id_pow = 14, Id_random = 15, Id_round = 16, Id_sin = 17, Id_sqrt = 18, Id_tan = 19, LAST_METHOD_ID = 19; private static final int Id_E = LAST_METHOD_ID + 1, Id_PI = LAST_METHOD_ID + 2, Id_LN10 = LAST_METHOD_ID + 3, Id_LN2 = LAST_METHOD_ID + 4, Id_LOG2E = LAST_METHOD_ID + 5, Id_LOG10E = LAST_METHOD_ID + 6, Id_SQRT1_2 = LAST_METHOD_ID + 7, Id_SQRT2 = LAST_METHOD_ID + 8, MAX_ID = LAST_METHOD_ID + 8;// #/string_id_map#}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值