//@ run("no-architecture-specific-optimizations", "--useArchitectureSpecificOptimizations=false", *NO_CJIT_OPTIONS) //@ run("no-architecture-specific-optimizations-ftl", "--useArchitectureSpecificOptimizations=false", *FTL_OPTIONS) // Basic cases of Math.sqrt(). function sqrtOnInteger(radicand) { return Math.sqrt(radicand); } noInline(sqrtOnInteger); function testSquareRoot16() { for (var i = 0; i < 10000; ++i) { var result = sqrtOnInteger(16); if (result !== 4) throw "sqrtOnInteger(16) = " + result + ", expected 4"; } } testSquareRoot16(); var sqrtOnIntegerNegativeNumber = sqrtOnDouble(-4); if (!isNaN(sqrtOnIntegerNegativeNumber)) throw "sqrtOnDouble(-4) = " + sqrtOnIntegerNegativeNumber + ", expected NaN"; var sqrtOnIntegerFallback = sqrtOnInteger(Math.PI); if (sqrtOnIntegerFallback != 1.7724538509055159) throw "sqrtOnInteger(Math.PI) = " + sqrtOnIntegerFallback + ", expected 1.7724538509055159"; function sqrtOnDouble(radicand) { return Math.sqrt(radicand); } noInline(sqrtOnDouble); function testSquareRootDouble() { for (var i = 0; i < 10000; ++i) { var result = sqrtOnInteger(Math.LN2); if (result !== 0.8325546111576977) throw "sqrtOnInteger(Math.LN2) = " + result + ", expected 0.8325546111576977"; } } testSquareRootDouble(); var sqrtOnDoubleNegativeNumber = sqrtOnDouble(-Math.PI); if (!isNaN(sqrtOnDoubleNegativeNumber)) throw "sqrtOnDouble(-Math.PI) = " + sqrtOnDoubleNegativeNumber + ", expected NaN"; var sqrtOnDoubleFallback = sqrtOnDouble(4); if (sqrtOnDoubleFallback !== 2) throw "sqrtOnDouble(4) = " + sqrtOnDoubleFallback + ", expected 2";