<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/76324>76324</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Complex division operator overflows needlessly.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          chandankds
      </td>
    </tr>
</table>

<pre>
    Complex division produces Infinity in results that can be computed without overflow.

The Intel compiler does not overflow this case, GNU does.

```
Program test_complex_division_overflow
 Real(Kind(1.d0)) :: x, y
  x = Huge(0.d0)
  y = 2.d0
  Call ops(x,y)
  Contains
    Subroutine ops(n,d)
      Real(Kind(1.d0)) :: n,d
      Complex(Kind(1.d0)) :: a,b
      a = Cmplx(n,-n,Kind(1.d0))
      b = Cmplx(d,d,Kind(1.d0))
      Print *,a/b ! avoids infinity?
    End Subroutine ops
End Program test_complex_division_overflow
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUk91uqzgQx59muBk1MgMJ4YKLLFl2q5VW1X5cVwZPgncdG9kmTd7-CELb9FTq0UHIyDP_33iG8cgQ9NEyV7D-Bdb7RI6xd77qemmVtP-rkLROXavanQbDF1T6rIN2Fgfv1NhxwEd70FbHK2qLnsNoYsDYy4idtNgydu40jJEVvujYuzGiO7M_GPeyArEHsbut__SMjzaymfXasEflOKB17wDGXgfsZGCgGn_7899Z8iEMbMTyztsn745enjByiM_drYTn1xKeX-PetPgXSwO0_UNbBbRNV0oAlUAlQraDbIeX6dTrIsYLQrbH38cjA23FIl5819lHk3Gx1NIYdEMA2k5hrnfi2tkotQ2ve8S_x9a7MWrLC2KBanWHTM-Psr0xd8DSwa8YCVS394ycC6lPg7ksaTxMy6cA90z7gVG31L9Gnry2EYF2QLUEaloESlGenVYB9XK_IGvemV-t-v43zb7J_jNNf7sviaoyVWalTLhKC5HlotzkRdJXm0OaiSKXrSzbVDLxmgve5qRYUnooVKIrEpSlRLkoSeTFKhMpq0xkbbEuy5IYcsEnqc3KmPNp5fwx0SGMXBWbjPLEyJZNmKeP6GCkPQLRNIi-mvQP7XgMkAujQwzvEaKOZh7ZZibWe_w0oG5gL6Pzb-MT0DIrwyGY6yoZvan6GIcw9Z4aoOaoYz-2q86dgJrppOXzMHj3H3cRqJkTD0DNnPu3AAAA__906kQM">