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;
}



Bits error versus re



Bits error versus im
Results
if im < -1.4416980422746971e+87Initial program 51.0
rmApplied add-sqr-sqrt51.0
Applied sqrt-prod51.0
Simplified51.0
Simplified51.0
rmApplied add-sqr-sqrt51.0
Applied sqrt-prod51.0
Applied sqrt-prod51.0
Applied associate-*r*51.0
Simplified51.1
Taylor expanded around -inf 10.3
Simplified10.3
if -1.4416980422746971e+87 < im < -3.2305868349173776e-136Initial program 24.4
rmApplied flip--33.8
Applied associate-*r/33.8
Applied sqrt-div34.0
Simplified25.3
Simplified25.3
if -3.2305868349173776e-136 < im < 2.0666388466356723e-165Initial program 42.6
Taylor expanded around -inf 34.9
Simplified34.9
if 2.0666388466356723e-165 < im < 2.516142091394918e+57Initial program 25.8
rmApplied add-sqr-sqrt25.8
Applied sqrt-prod26.0
Simplified26.0
Simplified26.0
rmApplied add-sqr-sqrt26.0
Applied sqrt-prod26.0
Applied sqrt-prod26.0
Applied associate-*r*26.0
Simplified26.1
rmApplied cube-mult26.1
Simplified26.0
if 2.516142091394918e+57 < im Initial program 46.6
Taylor expanded around 0 12.1
Final simplification22.6
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)))))