mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-03 08:08:43 +00:00
LibWasm: Fix comparisons between 0.0 and -0.0
According to the spec, -0.0 < 0.0.
This commit is contained in:
parent
c103001f16
commit
31c7e98a4a
Notes:
sideshowbarker
2024-07-17 21:16:31 +09:00
Author: https://github.com/dzfrias
Commit: 31c7e98a4a
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/459
Reviewed-by: https://github.com/alimpfard
1 changed files with 12 additions and 16 deletions
|
@ -329,14 +329,12 @@ struct Minimum {
|
||||||
auto operator()(Lhs lhs, Rhs rhs) const
|
auto operator()(Lhs lhs, Rhs rhs) const
|
||||||
{
|
{
|
||||||
if constexpr (IsFloatingPoint<Lhs> || IsFloatingPoint<Rhs>) {
|
if constexpr (IsFloatingPoint<Lhs> || IsFloatingPoint<Rhs>) {
|
||||||
if (isnan(lhs))
|
if (isnan(lhs) || isnan(rhs)) {
|
||||||
return lhs;
|
return isnan(lhs) ? lhs : rhs;
|
||||||
if (isnan(rhs))
|
}
|
||||||
return rhs;
|
if (lhs == 0 && rhs == 0) {
|
||||||
if (isinf(lhs))
|
return signbit(lhs) ? lhs : rhs;
|
||||||
return lhs > 0 ? rhs : lhs;
|
}
|
||||||
if (isinf(rhs))
|
|
||||||
return rhs > 0 ? lhs : rhs;
|
|
||||||
}
|
}
|
||||||
return min(lhs, rhs);
|
return min(lhs, rhs);
|
||||||
}
|
}
|
||||||
|
@ -349,14 +347,12 @@ struct Maximum {
|
||||||
auto operator()(Lhs lhs, Rhs rhs) const
|
auto operator()(Lhs lhs, Rhs rhs) const
|
||||||
{
|
{
|
||||||
if constexpr (IsFloatingPoint<Lhs> || IsFloatingPoint<Rhs>) {
|
if constexpr (IsFloatingPoint<Lhs> || IsFloatingPoint<Rhs>) {
|
||||||
if (isnan(lhs))
|
if (isnan(lhs) || isnan(rhs)) {
|
||||||
return lhs;
|
return isnan(lhs) ? lhs : rhs;
|
||||||
if (isnan(rhs))
|
}
|
||||||
return rhs;
|
if (lhs == 0 && rhs == 0) {
|
||||||
if (isinf(lhs))
|
return signbit(lhs) ? rhs : lhs;
|
||||||
return lhs > 0 ? lhs : rhs;
|
}
|
||||||
if (isinf(rhs))
|
|
||||||
return rhs > 0 ? rhs : lhs;
|
|
||||||
}
|
}
|
||||||
return max(lhs, rhs);
|
return max(lhs, rhs);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue