Average Error: 38.6 → 24.9
Time: 16.9s
Precision: 64
Internal precision: 3456
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -7.919247851998315 \cdot 10^{-86}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im}{\sqrt{re \cdot re + im \cdot im} - re}}\\ \mathbf{if}\;re \le 1.8045155270193253 \cdot 10^{-283}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im + re\right)}\\ \mathbf{if}\;re \le 1.524181826331731 \cdot 10^{+104}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} + {re}^{3}\right)}}{\sqrt{\left(im \cdot im + \left(re + re\right) \cdot re\right) - \sqrt{im \cdot im + re \cdot re} \cdot re}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(re + re\right)}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Derivation

  1. Split input into 4 regimes.
  2. if re < -7.919247851998315e-86

    1. Initial program 52.7

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
    2. Using strategy rm
    3. Applied flip-+ 52.7

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^2 - {re}^2}{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    4. Applied simplify 38.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{re \cdot re + im \cdot im} - re}}\]

    if -7.919247851998315e-86 < re < 1.8045155270193253e-283

    1. Initial program 26.4

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
    2. Applied taylor 0.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(im + re\right)}\]
    3. Taylor expanded around 0 0.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{im} + re\right)}\]

    if 1.8045155270193253e-283 < re < 1.524181826331731e+104

    1. Initial program 19.9

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
    2. Using strategy rm
    3. Applied flip3-+ 30.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} + {re}^{3}}{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^2 + \left({re}^2 - \sqrt{re \cdot re + im \cdot im} \cdot re\right)}}}\]
    4. Applied associate-*r/ 30.6

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \cdot \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} + {re}^{3}\right)}{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^2 + \left({re}^2 - \sqrt{re \cdot re + im \cdot im} \cdot re\right)}}}\]
    5. Applied sqrt-div 30.7

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \cdot \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} + {re}^{3}\right)}}{\sqrt{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^2 + \left({re}^2 - \sqrt{re \cdot re + im \cdot im} \cdot re\right)}}}\]
    6. Applied simplify 30.7

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0 \cdot \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} + {re}^{3}\right)}}{\color{blue}{\sqrt{\left(im \cdot im + \left(re + re\right) \cdot re\right) - \sqrt{im \cdot im + re \cdot re} \cdot re}}}\]

    if 1.524181826331731e+104 < re

    1. Initial program 51.3

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
    2. Applied taylor 0.2

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(re + re\right)}\]
    3. Taylor expanded around inf 0.2

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{re} + re\right)}\]
  3. Recombined 4 regimes into one program.
  4. Removed slow pow expressions

Runtime

Time bar (total: 16.9s) Debug log

Please include this information when filing a bug report:

herbie shell --seed '#(3052192724 3812927732 3686175817 630908657 2373248591 511094450)'
(FPCore (re im)
  :name "Complex square root"
  (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))