<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/59681>59681</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Complex arithmetic bug: creal(0+I*Inf) -> NaN
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jwuttke
</td>
</tr>
</table>
<pre>
In C99, there is no constructor for complex numbers. We need to write z = a + I*b. When b is Inf, then z becomes NaN. In numeric code, however, it may make perfect sense to rely on Re(z) = a.
This problem is known at since 12 years [1]. Other compilers (gcc, MSVC) do it right.
[1] https://www.mail-archive.com/freebsd-toolchain@freebsd.org/msg00000.html
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxUkk-P2yAQxT_N-DKKZcZxNj74kD-NlEO3Ult1z4AnNrsYIsDrZj99RTZStRwAMfDej9GTMZrBMXfQ7KE5FnJOow_d6zKn9MaF8v2tOzs8tC3QAdPIgdFEdB61dzGFWScf8OIDaj9dLf9FN0-KQyzxhdEx95g8LsEkxg-E-ogSgfZ4BtqpEl9Gdqiy4tldHg4OP1Cx9hNHfJbPJZ5dFuVgNGrfc742-oXfOeStSTjJG07yjfHK4cI6YWQXORsHtjf0Dn8y0PYDqP1EKKE6QrX7nH-PJuI1eGV5yiRvzi8OZcJonGYUhDeWISI0ewHNscQfuQ33_xrLuUDbQevM8v3Xn0M26X3GCmYY0xerhwSOKV0j1DugE9BpWZZyksauZNCjeedS-wnodAnMKvar5L3VozQO1tXjrPRhADpNcajyKMc02aLv6r6tW1lwJzZPYkuNaEUxdpJ5LS-ibreStuu-vajN5alXstG1rrXgwnRUEQmiWrRNLUTZrlmR6mverKXgSsO64gxYWvs-Ze_CxDhz17SbrSisVGzjPUBEjhe8F4Eo5yl0-c1KzUOEdWVNTPG_SjLJcnd4BEcGk8aJk9Go5gHqHerA0gJtK6B9Dsw9Iy2uoP6Wk1HMwXZfWzmYNM7q0cDs81hW1-BfWSeg050uAp3u9P8CAAD__yxJ874">