mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
LibWasm: Fix comparisons between 0.0 and -0.0
According to the spec, -0.0 < 0.0.
This commit is contained in:
@@ -329,14 +329,12 @@ struct Minimum {
|
||||
auto operator()(Lhs lhs, Rhs rhs) const
|
||||
{
|
||||
if constexpr (IsFloatingPoint<Lhs> || IsFloatingPoint<Rhs>) {
|
||||
if (isnan(lhs))
|
||||
return lhs;
|
||||
if (isnan(rhs))
|
||||
return rhs;
|
||||
if (isinf(lhs))
|
||||
return lhs > 0 ? rhs : lhs;
|
||||
if (isinf(rhs))
|
||||
return rhs > 0 ? lhs : rhs;
|
||||
if (isnan(lhs) || isnan(rhs)) {
|
||||
return isnan(lhs) ? lhs : rhs;
|
||||
}
|
||||
if (lhs == 0 && rhs == 0) {
|
||||
return signbit(lhs) ? lhs : rhs;
|
||||
}
|
||||
}
|
||||
return min(lhs, rhs);
|
||||
}
|
||||
@@ -349,14 +347,12 @@ struct Maximum {
|
||||
auto operator()(Lhs lhs, Rhs rhs) const
|
||||
{
|
||||
if constexpr (IsFloatingPoint<Lhs> || IsFloatingPoint<Rhs>) {
|
||||
if (isnan(lhs))
|
||||
return lhs;
|
||||
if (isnan(rhs))
|
||||
return rhs;
|
||||
if (isinf(lhs))
|
||||
return lhs > 0 ? lhs : rhs;
|
||||
if (isinf(rhs))
|
||||
return rhs > 0 ? rhs : lhs;
|
||||
if (isnan(lhs) || isnan(rhs)) {
|
||||
return isnan(lhs) ? lhs : rhs;
|
||||
}
|
||||
if (lhs == 0 && rhs == 0) {
|
||||
return signbit(lhs) ? rhs : lhs;
|
||||
}
|
||||
}
|
||||
return max(lhs, rhs);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user