LibM: Fix floor() and floorf() for negative numbers

And add a LibJS test to exercise the code. :^)
This commit is contained in:
Andreas Kling 2020-05-15 22:05:59 +02:00
parent 8f293b7543
commit de7827faf7
Notes: sideshowbarker 2024-07-19 06:37:48 +09:00
2 changed files with 27 additions and 2 deletions
Libraries
LibJS/Tests
LibM

View file

@ -0,0 +1,19 @@
load("test-common.js");
try {
assert(Math.floor(0.95) === 0);
assert(Math.floor(4) === 4);
assert(Math.floor(7.004) == 7);
assert(Math.floor(-0.95) === -1);
assert(Math.floor(-4) === -4);
assert(Math.floor(-7.004) === -8);
assert(isNaN(Math.floor()));
assert(isNaN(Math.floor(NaN)));
assert(Math.floor.length === 1);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);
}

View file

@ -412,12 +412,18 @@ float roundf(float value)
float floorf(float value)
{
return (int)value;
if (value >= 0)
return (int)value;
int intvalue = (int)value;
return ((float)intvalue == value) ? intvalue : intvalue - 1;
}
double floor(double value)
{
return (int)value;
if (value >= 0)
return (int)value;
int intvalue = (int)value;
return ((double)intvalue == value) ? intvalue : intvalue - 1;
}
double rint(double value)