<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56509>56509</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
the value is error from std::nearbyint with FE_UPWARD when using clang -O2
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
chumarshal1
</td>
</tr>
</table>
<pre>
```
#include <cmath>
#include <cfenv>
#include <functional>
#include <iostream>
int main()
{
std::fesetround(FE_UPWARD);
float v = 0.125;
float v1 = (float)std::nearbyint((float)(0.125));
float v2 = (float)std::rint ((float)(0.125));
std::cout << "nearbyint(0.125) = " << v1 << std::endl;
std::cout << "rint(0.125) = " << v2 << std::endl;
return (v1+v2);
}
```
```
clang++ test.cpp
nearbyint(0.125) = 1
rint(0.125) = 1
clang++ -O2 test.cpp
nearbyint(0.125) = 0
rint(0.125) = 0
```
As above show, the result using -O2 is different from using -O0.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNlE2PmzAQhn-NuViLjAkJHDgkm821VaWqx8rAAK6MHfmDaP99jZOQj03aIIsMvJ7nnZk4qVTzWaIlOS2yRWSNaMplLVwDGKXv9cBsj9KPh1oLcnyitU7WlivJxJMNXBmrgQ0XOdy5tHhgXCKaI1qclNUGX67juykytkHp2q8WDFitnGx82u7j98_vv9Y_tlN-urna3wrFLB69-xaTOKGZl7-oSZA9Jzx7xuwigenq0xcYapt1Hx5hU1g8QtKnSD21-xLuQde1cnaapF-eQa_LOxNOxvS8LXQXopkCshE3RT_j6zt0-C7u8PT_eA3WaTk1PSaIbkZ60-VqewruzuT1_VaqBZOdB_mFsQVj43q_P0pPJ5Ic9UcdzW0l1543JvjtG33ZirxgRf7R89pgVqkRsOnVAdF3bHvwMzROWOwMl12ohhvc8LYFDf48tVoNs0biqCnTpkgLFlluBZQTYGTCwZQFWit9zPh6zvGB2x7Pvyd86EGewGEgk3XktCh7a_dmSqY7vzqf5aq4VoN_EGI8f7zttfoDtZ_DjhvjwPggW2akiPqyoKyp8iKnkEIGwNqirVieszQv6hVJ8kiwCoQpUbYJR_2AA8LHKNtGvKSEUrJKUpLTdJHHq0UGVZMss4w0LZAWLQj4fxURT3XESneRLkNJleuMFwU31lxEZgzvJECw83zmbK90WfduYNr0TCRRsC9D-X8BsnlyLQ">