bool js::math_sqrt_handle(JSContext *cx, HandleValue number, MutableHandleValue result) { double x; if (!ToNumber(cx, number, &x)) return false; MathCache *mathCache = cx->runtime()->getMathCache(cx); if (!mathCache) return false; double z = mathCache->lookup(sqrt, x, MathCache::Sqrt); result.setDouble(z); return true; }
JSBool js_math_sqrt(JSContext *cx, unsigned argc, Value *vp) { double x, z; if (argc == 0) { vp->setDouble(js_NaN); return JS_TRUE; } if (!ToNumber(cx, vp[2], &x)) return JS_FALSE; MathCache *mathCache = cx->runtime->getMathCache(cx); if (!mathCache) return JS_FALSE; z = mathCache->lookup(sqrt, x); vp->setDouble(z); return JS_TRUE; }
static JSBool math_tan(JSContext *cx, uintN argc, Value *vp) { jsdouble x, z; if (argc == 0) { vp->setDouble(js_NaN); return JS_TRUE; } if (!ToNumber(cx, vp[2], &x)) return JS_FALSE; MathCache *mathCache = GetMathCache(cx); if (!mathCache) return JS_FALSE; z = mathCache->lookup(tan, x); vp->setDouble(z); return JS_TRUE; }
bool js_math_sqrt(JSContext *cx, unsigned argc, Value *vp) { CallArgs args = CallArgsFromVp(argc, vp); if (args.length() == 0) { args.rval().setNaN(); return true; } double x; if (!ToNumber(cx, args[0], &x)) return false; MathCache *mathCache = cx->runtime()->getMathCache(cx); if (!mathCache) return false; double z = mathCache->lookup(sqrt, x); args.rval().setDouble(z); return true; }
static JSBool math_asin(JSContext *cx, unsigned argc, Value *vp) { double x, z; if (argc == 0) { vp->setDouble(js_NaN); return JS_TRUE; } if (!ToNumber(cx, vp[2], &x)) return JS_FALSE; #if defined(SOLARIS) && defined(__GNUC__) if (x < -1 || 1 < x) { vp->setDouble(js_NaN); return JS_TRUE; } #endif MathCache *mathCache = cx->runtime->getMathCache(cx); if (!mathCache) return JS_FALSE; z = mathCache->lookup(asin, x); vp->setDouble(z); return JS_TRUE; }
static JSBool math_log(JSContext *cx, uintN argc, Value *vp) { jsdouble x, z; if (argc == 0) { vp->setDouble(js_NaN); return JS_TRUE; } if (!ToNumber(cx, vp[2], &x)) return JS_FALSE; #if defined(SOLARIS) && defined(__GNUC__) if (x < 0) { vp->setDouble(js_NaN); return JS_TRUE; } #endif MathCache *mathCache = GetMathCache(cx); if (!mathCache) return JS_FALSE; z = mathCache->lookup(log, x); vp->setNumber(z); return JS_TRUE; }