double f(double re, double im) {
double r1287058 = 0.5;
double r1287059 = 2.0;
double r1287060 = re;
double r1287061 = r1287060 * r1287060;
double r1287062 = im;
double r1287063 = r1287062 * r1287062;
double r1287064 = r1287061 + r1287063;
double r1287065 = sqrt(r1287064);
double r1287066 = r1287065 - r1287060;
double r1287067 = r1287059 * r1287066;
double r1287068 = sqrt(r1287067);
double r1287069 = r1287058 * r1287068;
return r1287069;
}
double f(double re, double im) {
double r1287070 = im;
double r1287071 = -5.77763001913738e+77;
bool r1287072 = r1287070 <= r1287071;
double r1287073 = 0.5;
double r1287074 = re;
double r1287075 = r1287074 + r1287070;
double r1287076 = -r1287075;
double r1287077 = 2.0;
double r1287078 = r1287076 * r1287077;
double r1287079 = sqrt(r1287078);
double r1287080 = r1287073 * r1287079;
double r1287081 = -5.064661185225939e-112;
bool r1287082 = r1287070 <= r1287081;
double r1287083 = r1287070 * r1287070;
double r1287084 = r1287077 * r1287083;
double r1287085 = sqrt(r1287084);
double r1287086 = r1287074 * r1287074;
double r1287087 = r1287083 + r1287086;
double r1287088 = sqrt(r1287087);
double r1287089 = r1287088 + r1287074;
double r1287090 = sqrt(r1287089);
double r1287091 = r1287085 / r1287090;
double r1287092 = r1287091 * r1287073;
double r1287093 = 3.878550394816133e-144;
bool r1287094 = r1287070 <= r1287093;
double r1287095 = -2.0;
double r1287096 = r1287074 * r1287095;
double r1287097 = r1287077 * r1287096;
double r1287098 = sqrt(r1287097);
double r1287099 = r1287098 * r1287073;
double r1287100 = 2.6002124496209947e+64;
bool r1287101 = r1287070 <= r1287100;
double r1287102 = r1287070 - r1287074;
double r1287103 = r1287102 * r1287077;
double r1287104 = sqrt(r1287103);
double r1287105 = r1287104 * r1287073;
double r1287106 = r1287101 ? r1287092 : r1287105;
double r1287107 = r1287094 ? r1287099 : r1287106;
double r1287108 = r1287082 ? r1287092 : r1287107;
double r1287109 = r1287072 ? r1287080 : r1287108;
return r1287109;
}
0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;im \le -5.77763001913738 \cdot 10^{+77}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-\left(re + im\right)\right) \cdot 2.0}\\
\mathbf{elif}\;im \le -5.064661185225939 \cdot 10^{-112}:\\
\;\;\;\;\frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}} \cdot 0.5\\
\mathbf{elif}\;im \le 3.878550394816133 \cdot 10^{-144}:\\
\;\;\;\;\sqrt{2.0 \cdot \left(re \cdot -2\right)} \cdot 0.5\\
\mathbf{elif}\;im \le 2.6002124496209947 \cdot 10^{+64}:\\
\;\;\;\;\frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}} \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left(im - re\right) \cdot 2.0} \cdot 0.5\\
\end{array}


Bits error versus re



Bits error versus im
if im < -5.77763001913738e+77Initial program 46.8
rmApplied +-commutative46.8
Taylor expanded around -inf 10.3
if -5.77763001913738e+77 < im < -5.064661185225939e-112 or 3.878550394816133e-144 < im < 2.6002124496209947e+64Initial program 24.1
rmApplied flip--33.6
Applied associate-*r/33.6
Applied sqrt-div33.7
Simplified25.5
if -5.064661185225939e-112 < im < 3.878550394816133e-144Initial program 39.9
Taylor expanded around -inf 35.7
if 2.6002124496209947e+64 < im Initial program 46.0
rmApplied +-commutative46.0
Taylor expanded around inf 11.0
Final simplification22.9
herbie shell --seed 2019102
(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)))))