0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;im \le -2.587387956107418 \cdot 10^{-158}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\
\mathbf{elif}\;im \le -1.6983177429051942 \cdot 10^{-252}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\
\mathbf{elif}\;im \le 5.029830627881142 \cdot 10^{-264}:\\
\;\;\;\;\sqrt{\frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} + re} \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;im \le 3.9853394263122405 \cdot 10^{-151}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\
\mathbf{elif}\;im \le 8.029859693979724 \cdot 10^{-24}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\
\mathbf{elif}\;im \le 218.57910692591958:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\
\mathbf{elif}\;im \le 1.859372996802564 \cdot 10^{+44}:\\
\;\;\;\;\sqrt{\frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} + re} \cdot 2.0} \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\
\end{array}double f(double re, double im) {
double r411279 = 0.5;
double r411280 = 2.0;
double r411281 = re;
double r411282 = r411281 * r411281;
double r411283 = im;
double r411284 = r411283 * r411283;
double r411285 = r411282 + r411284;
double r411286 = sqrt(r411285);
double r411287 = r411286 - r411281;
double r411288 = r411280 * r411287;
double r411289 = sqrt(r411288);
double r411290 = r411279 * r411289;
return r411290;
}
double f(double re, double im) {
double r411291 = im;
double r411292 = -2.587387956107418e-158;
bool r411293 = r411291 <= r411292;
double r411294 = 0.5;
double r411295 = 2.0;
double r411296 = r411291 * r411291;
double r411297 = r411295 * r411296;
double r411298 = sqrt(r411297);
double r411299 = re;
double r411300 = r411299 * r411299;
double r411301 = r411296 + r411300;
double r411302 = sqrt(r411301);
double r411303 = r411302 + r411299;
double r411304 = sqrt(r411303);
double r411305 = r411298 / r411304;
double r411306 = r411294 * r411305;
double r411307 = -1.6983177429051942e-252;
bool r411308 = r411291 <= r411307;
double r411309 = -2.0;
double r411310 = r411309 * r411299;
double r411311 = r411310 * r411295;
double r411312 = sqrt(r411311);
double r411313 = r411294 * r411312;
double r411314 = 5.029830627881142e-264;
bool r411315 = r411291 <= r411314;
double r411316 = r411296 / r411303;
double r411317 = r411316 * r411295;
double r411318 = sqrt(r411317);
double r411319 = r411318 * r411294;
double r411320 = 3.9853394263122405e-151;
bool r411321 = r411291 <= r411320;
double r411322 = 8.029859693979724e-24;
bool r411323 = r411291 <= r411322;
double r411324 = 218.57910692591958;
bool r411325 = r411291 <= r411324;
double r411326 = 1.859372996802564e+44;
bool r411327 = r411291 <= r411326;
double r411328 = r411291 - r411299;
double r411329 = r411295 * r411328;
double r411330 = sqrt(r411329);
double r411331 = r411294 * r411330;
double r411332 = r411327 ? r411319 : r411331;
double r411333 = r411325 ? r411313 : r411332;
double r411334 = r411323 ? r411306 : r411333;
double r411335 = r411321 ? r411313 : r411334;
double r411336 = r411315 ? r411319 : r411335;
double r411337 = r411308 ? r411313 : r411336;
double r411338 = r411293 ? r411306 : r411337;
return r411338;
}



Bits error versus re



Bits error versus im
Results
if im < -2.587387956107418e-158 or 3.9853394263122405e-151 < im < 8.029859693979724e-24Initial program 34.4
rmApplied flip--40.9
Applied associate-*r/40.9
Applied sqrt-div41.0
Simplified34.1
if -2.587387956107418e-158 < im < -1.6983177429051942e-252 or 5.029830627881142e-264 < im < 3.9853394263122405e-151 or 8.029859693979724e-24 < im < 218.57910692591958Initial program 43.5
rmApplied add-exp-log44.8
rmApplied add-cube-cbrt44.9
Taylor expanded around -inf 37.3
if -1.6983177429051942e-252 < im < 5.029830627881142e-264 or 218.57910692591958 < im < 1.859372996802564e+44Initial program 36.7
rmApplied add-exp-log41.5
rmApplied add-cube-cbrt41.5
rmApplied flip--50.4
Simplified41.8
Simplified41.3
if 1.859372996802564e+44 < im Initial program 43.4
Taylor expanded around 0 12.0
Final simplification30.9
herbie shell --seed 2019142
(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)))))