Average Error: 38.5 → 22.6
Time: 14.9s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;im \le -1.441698042274697137653780135445399132317 \cdot 10^{87}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\left(-re\right) - im\right) \cdot 2}\\ \mathbf{elif}\;im \le -3.230586834917377574217848149466679413277 \cdot 10^{-136}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{elif}\;im \le 2.066638846635672322973622036893870809353 \cdot 10^{-165}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;im \le 2.516142091394917870572179317544488464357 \cdot 10^{57}:\\ \;\;\;\;\sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot \left(\sqrt{\sqrt{{im}^{2} + re \cdot re}} \cdot \sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right) - re\right)} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;\sqrt{2 \cdot \left(im - re\right)} \cdot 0.5\\ \end{array}\]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;im \le -1.441698042274697137653780135445399132317 \cdot 10^{87}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(\left(-re\right) - im\right) \cdot 2}\\

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

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

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

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

\end{array}
double f(double re, double im) {
        double r26970 = 0.5;
        double r26971 = 2.0;
        double r26972 = re;
        double r26973 = r26972 * r26972;
        double r26974 = im;
        double r26975 = r26974 * r26974;
        double r26976 = r26973 + r26975;
        double r26977 = sqrt(r26976);
        double r26978 = r26977 - r26972;
        double r26979 = r26971 * r26978;
        double r26980 = sqrt(r26979);
        double r26981 = r26970 * r26980;
        return r26981;
}

double f(double re, double im) {
        double r26982 = im;
        double r26983 = -1.4416980422746971e+87;
        bool r26984 = r26982 <= r26983;
        double r26985 = 0.5;
        double r26986 = re;
        double r26987 = -r26986;
        double r26988 = r26987 - r26982;
        double r26989 = 2.0;
        double r26990 = r26988 * r26989;
        double r26991 = sqrt(r26990);
        double r26992 = r26985 * r26991;
        double r26993 = -3.2305868349173776e-136;
        bool r26994 = r26982 <= r26993;
        double r26995 = r26982 * r26982;
        double r26996 = r26989 * r26995;
        double r26997 = sqrt(r26996);
        double r26998 = r26986 * r26986;
        double r26999 = r26998 + r26995;
        double r27000 = sqrt(r26999);
        double r27001 = r27000 + r26986;
        double r27002 = sqrt(r27001);
        double r27003 = r26997 / r27002;
        double r27004 = r26985 * r27003;
        double r27005 = 2.0666388466356723e-165;
        bool r27006 = r26982 <= r27005;
        double r27007 = -2.0;
        double r27008 = r27007 * r26986;
        double r27009 = r27008 * r26989;
        double r27010 = sqrt(r27009);
        double r27011 = r27010 * r26985;
        double r27012 = 2.516142091394918e+57;
        bool r27013 = r26982 <= r27012;
        double r27014 = sqrt(r27000);
        double r27015 = sqrt(r27014);
        double r27016 = 2.0;
        double r27017 = pow(r26982, r27016);
        double r27018 = r27017 + r26998;
        double r27019 = sqrt(r27018);
        double r27020 = sqrt(r27019);
        double r27021 = r27020 * r27015;
        double r27022 = r27015 * r27021;
        double r27023 = r27022 - r26986;
        double r27024 = r26989 * r27023;
        double r27025 = sqrt(r27024);
        double r27026 = r27025 * r26985;
        double r27027 = r26982 - r26986;
        double r27028 = r26989 * r27027;
        double r27029 = sqrt(r27028);
        double r27030 = r27029 * r26985;
        double r27031 = r27013 ? r27026 : r27030;
        double r27032 = r27006 ? r27011 : r27031;
        double r27033 = r26994 ? r27004 : r27032;
        double r27034 = r26984 ? r26992 : r27033;
        return r27034;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 5 regimes
  2. if im < -1.4416980422746971e+87

    1. Initial program 51.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-sqrt51.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-prod51.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. Simplified51.0

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \color{blue}{\sqrt{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt51.0

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

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

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{{\left(\sqrt{\sqrt{\sqrt{im \cdot im + re \cdot re}}}\right)}^{3}} \cdot \sqrt{\sqrt{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\]
    13. Taylor expanded around -inf 10.3

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

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

    if -1.4416980422746971e+87 < im < -3.2305868349173776e-136

    1. Initial program 24.4

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

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

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

    if -3.2305868349173776e-136 < im < 2.0666388466356723e-165

    1. Initial program 42.6

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(-2 \cdot re\right)}}\]
    3. Simplified34.9

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

    if 2.0666388466356723e-165 < im < 2.516142091394918e+57

    1. Initial program 25.8

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

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \color{blue}{\sqrt{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt26.0

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

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

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{{\left(\sqrt{\sqrt{\sqrt{im \cdot im + re \cdot re}}}\right)}^{3}} \cdot \sqrt{\sqrt{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\]
    13. Using strategy rm
    14. Applied cube-mult26.1

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

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

    if 2.516142091394918e+57 < im

    1. Initial program 46.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -1.441698042274697137653780135445399132317 \cdot 10^{87}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\left(-re\right) - im\right) \cdot 2}\\ \mathbf{elif}\;im \le -3.230586834917377574217848149466679413277 \cdot 10^{-136}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{elif}\;im \le 2.066638846635672322973622036893870809353 \cdot 10^{-165}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;im \le 2.516142091394917870572179317544488464357 \cdot 10^{57}:\\ \;\;\;\;\sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot \left(\sqrt{\sqrt{{im}^{2} + re \cdot re}} \cdot \sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right) - re\right)} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;\sqrt{2 \cdot \left(im - re\right)} \cdot 0.5\\ \end{array}\]

Reproduce

herbie shell --seed 2019196 
(FPCore (re im)
  :name "math.sqrt on complex, imaginary part, im greater than 0 branch"
  (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))