Average Error: 38.6 → 24.2
Time: 17.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 -6.884475381550604966591504035533371718295 \cdot 10^{182}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{-1 \cdot re + -1 \cdot re}}\\ \mathbf{elif}\;re \le -3.2990529075045902473348962112718304861 \cdot 10^{-203}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{\sqrt{re \cdot re + im \cdot im} - re}\right)}\\ \mathbf{elif}\;re \le -9.854979918925235333271025745486769435252 \cdot 10^{-302}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \mathbf{elif}\;re \le 9.050853877782241337883530415155068886463 \cdot 10^{72}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt[3]{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(2 \cdot 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 -6.884475381550604966591504035533371718295 \cdot 10^{182}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{-1 \cdot re + -1 \cdot re}}\\

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

\mathbf{elif}\;re \le -9.854979918925235333271025745486769435252 \cdot 10^{-302}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\

\mathbf{elif}\;re \le 9.050853877782241337883530415155068886463 \cdot 10^{72}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt[3]{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(2 \cdot re\right)}\\

\end{array}
double f(double re, double im) {
        double r123747 = 0.5;
        double r123748 = 2.0;
        double r123749 = re;
        double r123750 = r123749 * r123749;
        double r123751 = im;
        double r123752 = r123751 * r123751;
        double r123753 = r123750 + r123752;
        double r123754 = sqrt(r123753);
        double r123755 = r123754 + r123749;
        double r123756 = r123748 * r123755;
        double r123757 = sqrt(r123756);
        double r123758 = r123747 * r123757;
        return r123758;
}

double f(double re, double im) {
        double r123759 = re;
        double r123760 = -6.884475381550605e+182;
        bool r123761 = r123759 <= r123760;
        double r123762 = 0.5;
        double r123763 = 2.0;
        double r123764 = im;
        double r123765 = r123764 * r123764;
        double r123766 = 0.0;
        double r123767 = r123765 - r123766;
        double r123768 = -1.0;
        double r123769 = r123768 * r123759;
        double r123770 = r123769 + r123769;
        double r123771 = r123767 / r123770;
        double r123772 = r123763 * r123771;
        double r123773 = sqrt(r123772);
        double r123774 = r123762 * r123773;
        double r123775 = -3.29905290750459e-203;
        bool r123776 = r123759 <= r123775;
        double r123777 = fabs(r123764);
        double r123778 = r123759 * r123759;
        double r123779 = r123778 + r123765;
        double r123780 = sqrt(r123779);
        double r123781 = r123780 - r123759;
        double r123782 = r123777 / r123781;
        double r123783 = r123777 * r123782;
        double r123784 = r123763 * r123783;
        double r123785 = sqrt(r123784);
        double r123786 = r123762 * r123785;
        double r123787 = -9.854979918925235e-302;
        bool r123788 = r123759 <= r123787;
        double r123789 = r123759 + r123764;
        double r123790 = r123763 * r123789;
        double r123791 = sqrt(r123790);
        double r123792 = r123762 * r123791;
        double r123793 = 9.050853877782241e+72;
        bool r123794 = r123759 <= r123793;
        double r123795 = cbrt(r123779);
        double r123796 = r123765 + r123778;
        double r123797 = sqrt(r123796);
        double r123798 = cbrt(r123797);
        double r123799 = r123795 * r123798;
        double r123800 = cbrt(r123799);
        double r123801 = cbrt(r123780);
        double r123802 = r123800 * r123801;
        double r123803 = r123802 * r123801;
        double r123804 = r123803 + r123759;
        double r123805 = r123763 * r123804;
        double r123806 = sqrt(r123805);
        double r123807 = r123762 * r123806;
        double r123808 = 2.0;
        double r123809 = r123808 * r123759;
        double r123810 = r123763 * r123809;
        double r123811 = sqrt(r123810);
        double r123812 = r123762 * r123811;
        double r123813 = r123794 ? r123807 : r123812;
        double r123814 = r123788 ? r123792 : r123813;
        double r123815 = r123776 ? r123786 : r123814;
        double r123816 = r123761 ? r123774 : r123815;
        return r123816;
}

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.6
Target33.5
Herbie24.2
\[\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 5 regimes
  2. if re < -6.884475381550605e+182

    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 add-cube-cbrt64.0

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) - re \cdot re}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} - re}}}\]
    6. Simplified48.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{\color{blue}{-1 \cdot re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Taylor expanded around -inf 31.4

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

    if -6.884475381550605e+182 < re < -3.29905290750459e-203

    1. Initial program 44.2

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    4. Using strategy rm
    5. Applied flip-+45.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) - re \cdot re}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} - re}}}\]
    6. Simplified32.8

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{\color{blue}{-1 \cdot re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity32.6

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

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

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

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

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

    if -3.29905290750459e-203 < re < -9.854979918925235e-302

    1. Initial program 31.3

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    4. Using strategy rm
    5. Applied flip-+31.0

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{\color{blue}{-1 \cdot re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Taylor expanded around inf 35.3

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

    if -9.854979918925235e-302 < re < 9.050853877782241e+72

    1. Initial program 21.3

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt21.8

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt[3]{\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\]
    6. Simplified21.8

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt[3]{\color{blue}{\sqrt[3]{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\]
    7. Simplified21.8

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

    if 9.050853877782241e+72 < re

    1. Initial program 46.8

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    4. Using strategy rm
    5. Applied flip-+58.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) - re \cdot re}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} - re}}}\]
    6. Simplified60.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{\color{blue}{-1 \cdot re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Taylor expanded around 0 10.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -6.884475381550604966591504035533371718295 \cdot 10^{182}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im - 0}{-1 \cdot re + -1 \cdot re}}\\ \mathbf{elif}\;re \le -3.2990529075045902473348962112718304861 \cdot 10^{-203}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{\sqrt{re \cdot re + im \cdot im} - re}\right)}\\ \mathbf{elif}\;re \le -9.854979918925235333271025745486769435252 \cdot 10^{-302}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \mathbf{elif}\;re \le 9.050853877782241337883530415155068886463 \cdot 10^{72}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt[3]{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(2 \cdot re\right)}\\ \end{array}\]

Reproduce

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

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

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