Average Error: 38.1 → 20.0
Time: 23.2s
Precision: 64
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -1.5342940406584555 \cdot 10^{+139}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{-2 \cdot re}} \cdot 0.5\\ \mathbf{elif}\;re \le -1.2687134238210794 \cdot 10^{-274}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{\frac{\sqrt[3]{im} \cdot \sqrt[3]{im}}{\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}} \cdot \sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}}}} \cdot \sqrt{\frac{\sqrt[3]{im}}{\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}}}}\right)\\ \mathbf{elif}\;re \le 1.065532004127847 \cdot 10^{+150}:\\ \;\;\;\;\sqrt{\left(\sqrt{re \cdot re + im \cdot im} + re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{re \cdot 4.0}\\ \end{array}\]
0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -1.5342940406584555 \cdot 10^{+139}:\\
\;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{-2 \cdot re}} \cdot 0.5\\

\mathbf{elif}\;re \le -1.2687134238210794 \cdot 10^{-274}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{\frac{\sqrt[3]{im} \cdot \sqrt[3]{im}}{\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}} \cdot \sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}}}} \cdot \sqrt{\frac{\sqrt[3]{im}}{\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}}}}\right)\\

\mathbf{elif}\;re \le 1.065532004127847 \cdot 10^{+150}:\\
\;\;\;\;\sqrt{\left(\sqrt{re \cdot re + im \cdot im} + re\right) \cdot 2.0} \cdot 0.5\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{re \cdot 4.0}\\

\end{array}
double f(double re, double im) {
        double r1922617 = 0.5;
        double r1922618 = 2.0;
        double r1922619 = re;
        double r1922620 = r1922619 * r1922619;
        double r1922621 = im;
        double r1922622 = r1922621 * r1922621;
        double r1922623 = r1922620 + r1922622;
        double r1922624 = sqrt(r1922623);
        double r1922625 = r1922624 + r1922619;
        double r1922626 = r1922618 * r1922625;
        double r1922627 = sqrt(r1922626);
        double r1922628 = r1922617 * r1922627;
        return r1922628;
}

double f(double re, double im) {
        double r1922629 = re;
        double r1922630 = -1.5342940406584555e+139;
        bool r1922631 = r1922629 <= r1922630;
        double r1922632 = im;
        double r1922633 = r1922632 * r1922632;
        double r1922634 = 2.0;
        double r1922635 = r1922633 * r1922634;
        double r1922636 = sqrt(r1922635);
        double r1922637 = -2.0;
        double r1922638 = r1922637 * r1922629;
        double r1922639 = sqrt(r1922638);
        double r1922640 = r1922636 / r1922639;
        double r1922641 = 0.5;
        double r1922642 = r1922640 * r1922641;
        double r1922643 = -1.2687134238210794e-274;
        bool r1922644 = r1922629 <= r1922643;
        double r1922645 = cbrt(r1922632);
        double r1922646 = r1922645 * r1922645;
        double r1922647 = r1922629 * r1922629;
        double r1922648 = r1922647 + r1922633;
        double r1922649 = sqrt(r1922648);
        double r1922650 = r1922649 - r1922629;
        double r1922651 = r1922634 * r1922632;
        double r1922652 = r1922650 / r1922651;
        double r1922653 = cbrt(r1922652);
        double r1922654 = r1922653 * r1922653;
        double r1922655 = r1922646 / r1922654;
        double r1922656 = sqrt(r1922655);
        double r1922657 = r1922645 / r1922653;
        double r1922658 = sqrt(r1922657);
        double r1922659 = r1922656 * r1922658;
        double r1922660 = r1922641 * r1922659;
        double r1922661 = 1.065532004127847e+150;
        bool r1922662 = r1922629 <= r1922661;
        double r1922663 = r1922649 + r1922629;
        double r1922664 = r1922663 * r1922634;
        double r1922665 = sqrt(r1922664);
        double r1922666 = r1922665 * r1922641;
        double r1922667 = 4.0;
        double r1922668 = r1922629 * r1922667;
        double r1922669 = sqrt(r1922668);
        double r1922670 = r1922641 * r1922669;
        double r1922671 = r1922662 ? r1922666 : r1922670;
        double r1922672 = r1922644 ? r1922660 : r1922671;
        double r1922673 = r1922631 ? r1922642 : r1922672;
        return r1922673;
}

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.1
Target33.0
Herbie20.0
\[\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 4 regimes
  2. if re < -1.5342940406584555e+139

    1. Initial program 61.4

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

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

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

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

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

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

    if -1.5342940406584555e+139 < re < -1.2687134238210794e-274

    1. Initial program 40.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-+39.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/40.0

      \[\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-div40.1

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

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

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

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{im \cdot \left(im \cdot 2.0\right)}{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    10. Using strategy rm
    11. Applied associate-/l*29.0

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{im}{\frac{\sqrt{re \cdot re + im \cdot im} - re}{im \cdot 2.0}}}}\]
    12. Using strategy rm
    13. Applied add-cube-cbrt29.4

      \[\leadsto 0.5 \cdot \sqrt{\frac{im}{\color{blue}{\left(\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{im \cdot 2.0}} \cdot \sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{im \cdot 2.0}}\right) \cdot \sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{im \cdot 2.0}}}}}\]
    14. Applied add-cube-cbrt29.5

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

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

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

    if -1.2687134238210794e-274 < re < 1.065532004127847e+150

    1. Initial program 20.8

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

    if 1.065532004127847e+150 < re

    1. Initial program 60.4

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

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

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

      \[\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. Simplified62.1

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

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

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{im \cdot \left(im \cdot 2.0\right)}{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    10. Using strategy rm
    11. Applied associate-/l*62.5

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{im}{\frac{\sqrt{re \cdot re + im \cdot im} - re}{im \cdot 2.0}}}}\]
    12. Taylor expanded around 0 8.6

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{4.0 \cdot re}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification20.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.5342940406584555 \cdot 10^{+139}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{-2 \cdot re}} \cdot 0.5\\ \mathbf{elif}\;re \le -1.2687134238210794 \cdot 10^{-274}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{\frac{\sqrt[3]{im} \cdot \sqrt[3]{im}}{\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}} \cdot \sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}}}} \cdot \sqrt{\frac{\sqrt[3]{im}}{\sqrt[3]{\frac{\sqrt{re \cdot re + im \cdot im} - re}{2.0 \cdot im}}}}\right)\\ \mathbf{elif}\;re \le 1.065532004127847 \cdot 10^{+150}:\\ \;\;\;\;\sqrt{\left(\sqrt{re \cdot re + im \cdot im} + re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{re \cdot 4.0}\\ \end{array}\]

Reproduce

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