Average Error: 38.3 → 24.0
Time: 5.6s
Precision: binary64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;im \le -6.0494140382680369 \cdot 10^{24}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -2.79919613254935814 \cdot 10^{-233}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \left|\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right|\right)\\ \mathbf{elif}\;im \le 1.45147825767815441 \cdot 10^{-277}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 3.3824174840314909 \cdot 10^{97}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \left|\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right|\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Derivation

  1. Split input into 4 regimes
  2. if im < -6.049414038268037e+24

    1. Initial program 42.7

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    4. Simplified43.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{0 + {im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Taylor expanded around -inf 13.3

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

    if -6.049414038268037e+24 < im < -2.799196132549358e-233 or 1.4514782576781544e-277 < im < 3.382417484031491e+97

    1. Initial program 31.6

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    4. Simplified36.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{0 + {im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt36.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{0 + {im}^{2}}{\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    7. Applied add-sqr-sqrt36.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{\sqrt{0 + {im}^{2}} \cdot \sqrt{0 + {im}^{2}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Applied times-frac36.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(\frac{\sqrt{0 + {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{\sqrt{0 + {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}}\]
    9. Simplified36.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}} \cdot \frac{\sqrt{0 + {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    10. Simplified35.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right)}\]
    11. Using strategy rm
    12. Applied sqrt-prod35.2

      \[\leadsto 0.5 \cdot \color{blue}{\left(\sqrt{2} \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right)}\]
    13. Simplified30.8

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

    if -2.799196132549358e-233 < im < 1.4514782576781544e-277

    1. Initial program 40.8

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Taylor expanded around -inf 36.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(-2 \cdot re\right)}}\]

    if 3.382417484031491e+97 < im

    1. Initial program 51.8

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Taylor expanded around 0 10.7

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{im} - re\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification24.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -6.0494140382680369 \cdot 10^{24}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -2.79919613254935814 \cdot 10^{-233}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \left|\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right|\right)\\ \mathbf{elif}\;im \le 1.45147825767815441 \cdot 10^{-277}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 3.3824174840314909 \cdot 10^{97}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \left|\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right|\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2020148 
(FPCore (re im)
  :name "math.sqrt on complex, imaginary part, im greater than 0 branch"
  :precision binary64
  (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))