<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/139481>139481</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
fmaximum_num incorrect result for -0/+0
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
gonzalobg
</td>
</tr>
</table>
<pre>
See https://clang.godbolt.org/z/3W6f9faaK
Reproduced below.
When the inputs of maximum_num are -0 and +0, it always returns +0.
However, clang returns -0.
```cpp
#include <cmath>
#include <print>
int main() {
using T = double;
T nz = T(-0.);
T pz = T(+0.);
T r = fmaximum_num(pz,nz);
int v = std::memcmp(&r, &pz, sizeof(double));
if (v == 0) return 0;
std::println(stderr, "ERROR: {} != {}", r, pz);
return 1;
}
```
cc @lntue
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxkU8GO6jgQ_JrOpQVy2oEkhxxgGLTSHlZiR5rjykmc4JVjR7YDO3z9yoY3A3qSJWSqXF1dnRbeq9FI2cBmD5tDJpZwtq4ZrbkJbdsxa23_1fwtJZ5DmD3wHdAR6NhpYcb1aPvW6rC2bgQ63oCO_HM71IMQfyKw3UnOzvZLJ3tspbbXNbDd51kaDGeJysxL8GgHnMR_alqmf8wyoXASVwyF6RFoz4DeUAUU-iq-PDoZFmd8QqLWH_YqL9JFUvLzTVglOJ4tu59unuOVuDKdXnqJwN-6SYQz8PffgNkpEx4A2ykTcBLKAFVANUK5B7ZDRFy8MiN-IPAD9nZptQT-C_tAc0vAB1AV7VD9DM4_4L2ZV9gldHgKBqiab0Bv5vZCjd4uiexDH4fDd5OcumlOwtsUDdA2PUWvbtIOQNXDLNWvWgMCVUktCrLY7D1QZD-s7zopJB1T8aGX7lGK3k-nv07Adymn8oBAeVS734Ao0hJ3fu3kUSm__xO5T9O7D6LrEAqmTVgkZn3D-5rXIpNNXhYlY5ttXWTnph3YtuiZlHXX5VXBeN6RaIstF-VQVHzIVEOMNmyT58Qp58WaKlZuhoGVZVWJmgsomJyE0mutL1P8tDPl_SKbnNdFlWdatFL7tC9ERl4xobGzzSFzTXy0apfRR6vKB_8jE1TQsnmeKirTWedkF9BJv-iAg3W4YmnH9ixbnG5e925U4by0685OQMeo_PhZzc7-K7sAdEx-PNDxYfjS0P8BAAD__2x9IbQ">