Average Error: 38.2 → 15.8
Time: 56.4s
Precision: 64
Internal Precision: 3648
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
\[\begin{array}{l} \mathbf{if}\;2.0 \cdot \left(im + re\right) \le -8.013861735089479 \cdot 10^{+160}:\\ \;\;\;\;\frac{\sqrt{2.0} \cdot 0.5}{\sqrt{-2 \cdot re}} \cdot \left|im\right|\\ \mathbf{if}\;2.0 \cdot \left(im + re\right) \le 9.80516895008213 \cdot 10^{-252}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{\sqrt{2.0}} \cdot \left(\sqrt{\sqrt{2.0}} \cdot \left|im\right|\right)}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\\ \mathbf{if}\;2.0 \cdot \left(im + re\right) \le 9.339682956327065 \cdot 10^{-172}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(re + re\right)}\\ \mathbf{if}\;2.0 \cdot \left(im + re\right) \le 1.2578237932378988 \cdot 10^{-155}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im + re\right)}\\ \mathbf{if}\;2.0 \cdot \left(im + re\right) \le 1.2121253201225153 \cdot 10^{+152}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \mathbf{if}\;2.0 \cdot \left(im + re\right) \le 1.3579032328480138 \cdot 10^{+260}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(re + re\right)}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Target

Original38.2
Target33.1
Herbie15.8
\[\begin{array}{l} \mathbf{if}\;re \lt 0:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \sqrt{\frac{im \cdot im}{\sqrt{re \cdot re + im \cdot im} - re}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \end{array}\]

Derivation

  1. Split input into 5 regimes
  2. if (* 2.0 (+ im re)) < -8.013861735089479e+160

    1. Initial program 61.9

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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. Applied associate-*r/61.9

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    5. Applied sqrt-div61.9

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    6. Applied simplify54.1

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0 \cdot \left(im \cdot im\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    7. Using strategy rm
    8. Applied sqrt-prod54.1

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0} \cdot \sqrt{im \cdot im}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    9. Applied simplify54.7

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0} \cdot \color{blue}{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    10. Using strategy rm
    11. Applied add-sqr-sqrt54.7

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\left(\sqrt{\sqrt{2.0}} \cdot \sqrt{\sqrt{2.0}}\right)} \cdot \left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    12. Applied associate-*l*54.7

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{\sqrt{2.0}} \cdot \left(\sqrt{\sqrt{2.0}} \cdot \left|im\right|\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    13. Taylor expanded around -inf 29.7

      \[\leadsto 0.5 \cdot \frac{\sqrt{\sqrt{2.0}} \cdot \left(\sqrt{\sqrt{2.0}} \cdot \left|im\right|\right)}{\sqrt{\color{blue}{-2 \cdot re}}}\]
    14. Applied simplify29.7

      \[\leadsto \color{blue}{\frac{\sqrt{2.0} \cdot 0.5}{\sqrt{-2 \cdot re}} \cdot \left|im\right|}\]

    if -8.013861735089479e+160 < (* 2.0 (+ im re)) < 9.80516895008213e-252

    1. Initial program 34.0

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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. Applied associate-*r/34.1

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0 \cdot \left(im \cdot im\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    7. Using strategy rm
    8. Applied sqrt-prod20.4

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0} \cdot \sqrt{im \cdot im}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    9. Applied simplify8.3

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0} \cdot \color{blue}{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    10. Using strategy rm
    11. Applied add-sqr-sqrt8.4

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\left(\sqrt{\sqrt{2.0}} \cdot \sqrt{\sqrt{2.0}}\right)} \cdot \left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    12. Applied associate-*l*8.4

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

    if 9.80516895008213e-252 < (* 2.0 (+ im re)) < 9.339682956327065e-172 or 1.3579032328480138e+260 < (* 2.0 (+ im re))

    1. Initial program 59.9

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

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

    if 9.339682956327065e-172 < (* 2.0 (+ im re)) < 1.2578237932378988e-155 or 1.2121253201225153e+152 < (* 2.0 (+ im re)) < 1.3579032328480138e+260

    1. Initial program 59.5

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

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

    if 1.2578237932378988e-155 < (* 2.0 (+ im re)) < 1.2121253201225153e+152

    1. Initial program 0.0

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
  3. Recombined 5 regimes into one program.

Runtime

Time bar (total: 56.4s)Debug logProfile

herbie shell --seed '#(1071725047 233389029 2036512464 3988615230 2972226563 1111574017)' 
(FPCore (re im)
  :name "math.sqrt on complex, real part"

  :herbie-target
  (if (< re 0) (* 0.5 (* (sqrt 2) (sqrt (/ (* im im) (- (sqrt (+ (* re re) (* im im))) re))))) (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))

  (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))