Average Error: 39.1 → 22.9
Time: 7.3s
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 -1.3657760091869803 \cdot 10^{154}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{\left(-re\right) - re}\right)}\\ \mathbf{elif}\;re \le -4.5405452937718227 \cdot 10^{-275}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {\left(\left|im\right|\right)}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\\ \mathbf{elif}\;re \le 1.27662858127337166 \cdot 10^{-281}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{im - re}\right)}\\ \mathbf{elif}\;re \le 1.5366724406791122 \cdot 10^{106}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\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 -1.3657760091869803 \cdot 10^{154}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{\left(-re\right) - re}\right)}\\

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

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

\mathbf{elif}\;re \le 1.5366724406791122 \cdot 10^{106}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\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 r192841 = 0.5;
        double r192842 = 2.0;
        double r192843 = re;
        double r192844 = r192843 * r192843;
        double r192845 = im;
        double r192846 = r192845 * r192845;
        double r192847 = r192844 + r192846;
        double r192848 = sqrt(r192847);
        double r192849 = r192848 + r192843;
        double r192850 = r192842 * r192849;
        double r192851 = sqrt(r192850);
        double r192852 = r192841 * r192851;
        return r192852;
}

double f(double re, double im) {
        double r192853 = re;
        double r192854 = -1.3657760091869803e+154;
        bool r192855 = r192853 <= r192854;
        double r192856 = 0.5;
        double r192857 = 2.0;
        double r192858 = im;
        double r192859 = fabs(r192858);
        double r192860 = -r192853;
        double r192861 = r192860 - r192853;
        double r192862 = r192859 / r192861;
        double r192863 = r192859 * r192862;
        double r192864 = r192857 * r192863;
        double r192865 = sqrt(r192864);
        double r192866 = r192856 * r192865;
        double r192867 = -4.540545293771823e-275;
        bool r192868 = r192853 <= r192867;
        double r192869 = 2.0;
        double r192870 = pow(r192859, r192869);
        double r192871 = r192857 * r192870;
        double r192872 = sqrt(r192871);
        double r192873 = r192853 * r192853;
        double r192874 = r192858 * r192858;
        double r192875 = r192873 + r192874;
        double r192876 = sqrt(r192875);
        double r192877 = r192876 - r192853;
        double r192878 = sqrt(r192877);
        double r192879 = r192872 / r192878;
        double r192880 = r192856 * r192879;
        double r192881 = 1.2766285812733717e-281;
        bool r192882 = r192853 <= r192881;
        double r192883 = r192858 - r192853;
        double r192884 = r192859 / r192883;
        double r192885 = r192859 * r192884;
        double r192886 = r192857 * r192885;
        double r192887 = sqrt(r192886);
        double r192888 = r192856 * r192887;
        double r192889 = 1.5366724406791122e+106;
        bool r192890 = r192853 <= r192889;
        double r192891 = sqrt(r192876);
        double r192892 = r192891 * r192891;
        double r192893 = r192892 + r192853;
        double r192894 = r192857 * r192893;
        double r192895 = sqrt(r192894);
        double r192896 = r192856 * r192895;
        double r192897 = r192869 * r192853;
        double r192898 = r192857 * r192897;
        double r192899 = sqrt(r192898);
        double r192900 = r192856 * r192899;
        double r192901 = r192890 ? r192896 : r192900;
        double r192902 = r192882 ? r192888 : r192901;
        double r192903 = r192868 ? r192880 : r192902;
        double r192904 = r192855 ? r192866 : r192903;
        return r192904;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original39.1
Target34.1
Herbie22.9
\[\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 < -1.3657760091869803e+154

    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-sqr-sqrt64.0

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

      \[\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. Using strategy rm
    6. Applied flip-+64.0

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re}}\]
    8. Simplified50.6

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im + 0}{\color{blue}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}}}\]
    11. Applied add-sqr-sqrt50.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(\sqrt{re \cdot re + im \cdot im} - re\right)}}\]
    12. Applied times-frac50.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}}{\sqrt{re \cdot re + im \cdot im} - re}\right)}}\]
    13. Simplified50.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left|im\right|} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{re \cdot re + im \cdot im} - re}\right)}\]
    14. Simplified50.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)}\]
    15. Taylor expanded around -inf 22.8

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

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

    if -1.3657760091869803e+154 < re < -4.540545293771823e-275

    1. Initial program 41.2

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

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

      \[\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. Using strategy rm
    6. Applied flip-+41.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re}}\]
    8. Simplified31.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im + 0}{\color{blue}{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    9. Using strategy rm
    10. Applied *-un-lft-identity31.4

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

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left|im\right|} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{re \cdot re + im \cdot im} - re}\right)}\]
    14. Simplified29.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)}\]
    15. Using strategy rm
    16. Applied associate-*r/31.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\left|im\right| \cdot \left|im\right|}{\sqrt{re \cdot re + im \cdot im} - re}}}\]
    17. Applied associate-*r/31.4

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

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

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

    if -4.540545293771823e-275 < re < 1.2766285812733717e-281

    1. Initial program 32.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-sqrt32.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-prod32.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. Using strategy rm
    6. Applied flip-+32.5

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re}}\]
    8. Simplified32.4

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

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

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

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

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

      \[\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)}\]
    15. Taylor expanded around 0 33.4

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

    if 1.2766285812733717e-281 < re < 1.5366724406791122e+106

    1. Initial program 20.7

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

      \[\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-prod20.8

      \[\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)}\]

    if 1.5366724406791122e+106 < re

    1. Initial program 52.7

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

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

      \[\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. Using strategy rm
    6. Applied flip-+62.2

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re}}\]
    8. Simplified62.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.3657760091869803 \cdot 10^{154}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{\left(-re\right) - re}\right)}\\ \mathbf{elif}\;re \le -4.5405452937718227 \cdot 10^{-275}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {\left(\left|im\right|\right)}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\\ \mathbf{elif}\;re \le 1.27662858127337166 \cdot 10^{-281}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{im - re}\right)}\\ \mathbf{elif}\;re \le 1.5366724406791122 \cdot 10^{106}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\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 2020046 
(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)))))