blob: 428d4054f56474fc5138b9cae150dac6c7409bbe [file] [log] [blame]
function canSimplifyToFloat(a, b)
{
return Math.fround(a) === Math.fround(b);
}
noInline(canSimplifyToFloat);
function canSimplifyToFloatWithConstant(a)
{
return Math.fround(a) === 1.0;
}
noInline(canSimplifyToFloatWithConstant);
function cannotSimplifyA(a, b)
{
return a === Math.fround(b);
}
noInline(cannotSimplifyA);
function cannotSimplifyB(a, b)
{
return Math.fround(a) === b;
}
noInline(cannotSimplifyB);
for (let i = 1; i < 1e4; ++i) {
if (canSimplifyToFloat(Math.PI, Math.PI) !== true)
throw "Failed canSimplifyToFloat(Math.PI, Math.PI)";
if (canSimplifyToFloat(Math.LN2, Math.PI) !== false)
throw "Failed canSimplifyToFloat(Math.LN2, Math.PI)";
if (canSimplifyToFloatWithConstant(Math.PI) !== false)
throw "Failed canSimplifyToFloatWithConstant(Math.PI)";
if (canSimplifyToFloatWithConstant(1) !== true)
throw "Failed canSimplifyToFloatWithConstant(1)";
if (cannotSimplifyA(Math.PI, Math.PI) !== false)
throw "Failed cannotSimplifyA(Math.PI, Math.PI)";
if (cannotSimplifyA(Math.fround(Math.PI), Math.PI) !== true)
throw "Failed cannotSimplifyA(Math.round(Math.PI), Math.PI)";
if (cannotSimplifyA(Math.LN2, Math.PI) !== false)
throw "Failed cannotSimplifyA(Math.LN2, Math.PI)";
if (cannotSimplifyB(Math.PI, Math.PI) !== false)
throw "Failed cannotSimplifyA(Math.PI, Math.PI)";
if (cannotSimplifyB(Math.PI, Math.fround(Math.PI)) !== true)
throw "Failed cannotSimplifyA(Math.round(Math.PI), Math.PI)";
if (cannotSimplifyB(Math.LN2, Math.PI) !== false)
throw "Failed cannotSimplifyA(Math.LN2, Math.PI)";
}