<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">