Average Error: 38.8 → 24.5
Time: 4.3s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;im \le -1.80338630258126651 \cdot 10^{46}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -4.2538132300951631 \cdot 10^{-166}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\left|{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}\right)}^{\frac{3}{2}}\right|}\\ \mathbf{elif}\;im \le 1.2274681436980806 \cdot 10^{-216}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\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 < -1.8033863025812665e+46

    1. Initial program 45.5

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

      \[\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. Simplified45.3

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

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

    if -1.8033863025812665e+46 < im < -4.253813230095163e-166

    1. Initial program 25.5

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

      \[\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. Simplified27.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt28.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im}{\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    7. Applied times-frac28.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(\frac{im}{\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{im}{\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}}\right)}}\]
    8. Using strategy rm
    9. Applied frac-times28.3

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

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \cdot \left(im \cdot im\right)}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    11. Applied sqrt-div26.9

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    12. Simplified26.9

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

    if -4.253813230095163e-166 < im < 1.2274681436980806e-216

    1. Initial program 43.8

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

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

    if 1.2274681436980806e-216 < im

    1. Initial program 38.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -1.80338630258126651 \cdot 10^{46}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -4.2538132300951631 \cdot 10^{-166}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\left|{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im} + re}\right)}^{\frac{3}{2}}\right|}\\ \mathbf{elif}\;im \le 1.2274681436980806 \cdot 10^{-216}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2020126 
(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)))))