Average Error: 38.3 → 21.0
Time: 16.1s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -2.47409571178928762 \cdot 10^{117}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{-2 \cdot re}}\right)\\ \mathbf{elif}\;re \le 5.125184653484052 \cdot 10^{-96}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\right)\\ \mathbf{elif}\;re \le 1.70012441094945963 \cdot 10^{-83} \lor \neg \left(re \le 9.42270172378150248 \cdot 10^{-57}\right):\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{2} \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right) \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right)\\ \end{array}\]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -2.47409571178928762 \cdot 10^{117}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{-2 \cdot re}}\right)\\

\mathbf{elif}\;re \le 5.125184653484052 \cdot 10^{-96}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\right)\\

\mathbf{elif}\;re \le 1.70012441094945963 \cdot 10^{-83} \lor \neg \left(re \le 9.42270172378150248 \cdot 10^{-57}\right):\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt{2} \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right) \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right)\\

\end{array}
double f(double re, double im) {
        double r193519 = 0.5;
        double r193520 = 2.0;
        double r193521 = re;
        double r193522 = r193521 * r193521;
        double r193523 = im;
        double r193524 = r193523 * r193523;
        double r193525 = r193522 + r193524;
        double r193526 = sqrt(r193525);
        double r193527 = r193526 + r193521;
        double r193528 = r193520 * r193527;
        double r193529 = sqrt(r193528);
        double r193530 = r193519 * r193529;
        return r193530;
}

double f(double re, double im) {
        double r193531 = re;
        double r193532 = -2.4740957117892876e+117;
        bool r193533 = r193531 <= r193532;
        double r193534 = 0.5;
        double r193535 = 2.0;
        double r193536 = sqrt(r193535);
        double r193537 = im;
        double r193538 = fabs(r193537);
        double r193539 = -2.0;
        double r193540 = r193539 * r193531;
        double r193541 = sqrt(r193540);
        double r193542 = r193538 / r193541;
        double r193543 = r193536 * r193542;
        double r193544 = r193534 * r193543;
        double r193545 = 5.1251846534840524e-96;
        bool r193546 = r193531 <= r193545;
        double r193547 = r193531 * r193531;
        double r193548 = r193537 * r193537;
        double r193549 = r193547 + r193548;
        double r193550 = sqrt(r193549);
        double r193551 = r193550 - r193531;
        double r193552 = sqrt(r193551);
        double r193553 = r193538 / r193552;
        double r193554 = r193536 * r193553;
        double r193555 = r193534 * r193554;
        double r193556 = 1.7001244109494596e-83;
        bool r193557 = r193531 <= r193556;
        double r193558 = 9.422701723781502e-57;
        bool r193559 = r193531 <= r193558;
        double r193560 = !r193559;
        bool r193561 = r193557 || r193560;
        double r193562 = r193531 + r193531;
        double r193563 = r193535 * r193562;
        double r193564 = sqrt(r193563);
        double r193565 = r193534 * r193564;
        double r193566 = sqrt(r193553);
        double r193567 = r193536 * r193566;
        double r193568 = r193567 * r193566;
        double r193569 = r193534 * r193568;
        double r193570 = r193561 ? r193565 : r193569;
        double r193571 = r193546 ? r193555 : r193570;
        double r193572 = r193533 ? r193544 : r193571;
        return r193572;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original38.3
Target33.3
Herbie21.0
\[\begin{array}{l} \mathbf{if}\;re \lt 0.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 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if re < -2.4740957117892876e+117

    1. Initial program 62.0

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

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \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-div62.0

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2 \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. Simplified45.7

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity45.7

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    11. Applied times-frac45.7

      \[\leadsto 0.5 \cdot \color{blue}{\left(\frac{\sqrt{2}}{\sqrt{1}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\right)}\]
    12. Simplified45.7

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

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

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

    if -2.4740957117892876e+117 < re < 5.1251846534840524e-96

    1. Initial program 34.2

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

      \[\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. Applied associate-*r/36.2

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \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-div36.5

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2 \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. Simplified30.9

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

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    11. Applied times-frac30.9

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

      \[\leadsto 0.5 \cdot \left(\color{blue}{\sqrt{2}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\right)\]
    13. Simplified24.1

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

    if 5.1251846534840524e-96 < re < 1.7001244109494596e-83 or 9.422701723781502e-57 < re

    1. Initial program 35.3

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    5. Taylor expanded around inf 19.6

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

    if 1.7001244109494596e-83 < re < 9.422701723781502e-57

    1. Initial program 17.4

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

      \[\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. Applied associate-*r/41.8

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \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-div41.9

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2 \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. Simplified41.9

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

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    11. Applied times-frac41.9

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

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

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right)\]
    14. Using strategy rm
    15. Applied add-sqr-sqrt41.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.47409571178928762 \cdot 10^{117}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{-2 \cdot re}}\right)\\ \mathbf{elif}\;re \le 5.125184653484052 \cdot 10^{-96}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\right)\\ \mathbf{elif}\;re \le 1.70012441094945963 \cdot 10^{-83} \lor \neg \left(re \le 9.42270172378150248 \cdot 10^{-57}\right):\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{2} \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right) \cdot \sqrt{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019198 
(FPCore (re im)
  :name "math.sqrt on complex, real part"

  :herbie-target
  (if (< re 0.0) (* 0.5 (* (sqrt 2.0) (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)))))