Average Error: 38.9 → 21.3
Time: 3.8s
Precision: binary64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -1969972166812.6543:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -7.46472792011176953 \cdot 10^{-134}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 1.29424588234639691 \cdot 10^{91}:\\ \;\;\;\;0.5 \cdot \frac{\left(\sqrt{2} \cdot \sqrt{\left|im\right|}\right) \cdot \sqrt{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + re}}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Derivation

  1. Split input into 4 regimes
  2. if re < -1969972166812.6543

    1. Initial program 41.5

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

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

    if -1969972166812.6543 < re < -7.46472792011176953e-134

    1. Initial program 16.7

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

      \[\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. Simplified40.7

      \[\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 40.0

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

    if -7.46472792011176953e-134 < re < 1.29424588234639691e91

    1. Initial program 34.5

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--35.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. Simplified30.9

      \[\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 associate-*r/30.9

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{0 + {im}^{2}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    10. Simplified24.2

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

      \[\leadsto 0.5 \cdot \frac{\sqrt{2} \cdot \color{blue}{\left(\sqrt{\left|im\right|} \cdot \sqrt{\left|im\right|}\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    13. Applied associate-*r*24.2

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

    if 1.29424588234639691e91 < re

    1. Initial program 61.3

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--61.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. Simplified45.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 associate-*r/45.0

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \cdot \left(0 + {im}^{2}\right)}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    7. Applied sqrt-div43.5

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{0 + {im}^{2}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    10. Simplified41.0

      \[\leadsto 0.5 \cdot \frac{\sqrt{2} \cdot \color{blue}{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    11. Taylor expanded around inf 10.9

      \[\leadsto 0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{\color{blue}{re} + re}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification21.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1969972166812.6543:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -7.46472792011176953 \cdot 10^{-134}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 1.29424588234639691 \cdot 10^{91}:\\ \;\;\;\;0.5 \cdot \frac{\left(\sqrt{2} \cdot \sqrt{\left|im\right|}\right) \cdot \sqrt{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + re}}\\ \end{array}\]

Reproduce

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