Average Error: 38.6 → 23.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}\;im \le -2.0689817943266104 \cdot 10^{161}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -1.021419081690422 \cdot 10^{-36}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\frac{im}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{im}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\\ \mathbf{elif}\;im \le -8.33255380895153892 \cdot 10^{-150}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} - re}\right)\\ \mathbf{elif}\;im \le 4.28858954498482415 \cdot 10^{-145}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 8.65279126612562082 \cdot 10^{60}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \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 6 regimes
  2. if im < -2.0689817943266104e161

    1. Initial program 64.0

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

      \[\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. Simplified64.0

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

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

    if -2.0689817943266104e161 < im < -1.021419081690422e-36

    1. Initial program 22.6

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{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-sqrt64.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{\color{blue}{\left(\sqrt{im} \cdot \sqrt{im}\right)}}^{2}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Applied unpow-prod-down64.0

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

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

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

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

    if -1.021419081690422e-36 < im < -8.33255380895153892e-150

    1. Initial program 29.8

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

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

    if -8.33255380895153892e-150 < im < 4.28858954498482415e-145

    1. Initial program 41.9

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

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

    if 4.28858954498482415e-145 < im < 8.65279126612562082e60

    1. Initial program 25.7

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

      \[\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. Simplified26.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied associate-*r/26.4

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

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

    if 8.65279126612562082e60 < im

    1. Initial program 46.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -2.0689817943266104 \cdot 10^{161}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -1.021419081690422 \cdot 10^{-36}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\frac{im}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{im}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\\ \mathbf{elif}\;im \le -8.33255380895153892 \cdot 10^{-150}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} - re}\right)\\ \mathbf{elif}\;im \le 4.28858954498482415 \cdot 10^{-145}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 8.65279126612562082 \cdot 10^{60}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

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