0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;im \le -4.17890779846015664 \cdot 10^{114} \lor \neg \left(im \le -8.3405669767788097 \cdot 10^{54} \lor \neg \left(im \le 8.5755005426590888 \cdot 10^{-157} \lor \neg \left(im \le 3.33713048032984944 \cdot 10^{120}\right)\right)\right):\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\mathsf{hypot}\left(re, im\right) - re\right) + 0\right)}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2} + 0}{re + \mathsf{hypot}\left(re, im\right)}}\\
\end{array}double f(double re, double im) {
double r132 = 0.5;
double r133 = 2.0;
double r134 = re;
double r135 = r134 * r134;
double r136 = im;
double r137 = r136 * r136;
double r138 = r135 + r137;
double r139 = sqrt(r138);
double r140 = r139 - r134;
double r141 = r133 * r140;
double r142 = sqrt(r141);
double r143 = r132 * r142;
return r143;
}
double f(double re, double im) {
double r144 = im;
double r145 = -4.1789077984601566e+114;
bool r146 = r144 <= r145;
double r147 = -8.34056697677881e+54;
bool r148 = r144 <= r147;
double r149 = 8.575500542659089e-157;
bool r150 = r144 <= r149;
double r151 = 3.3371304803298494e+120;
bool r152 = r144 <= r151;
double r153 = !r152;
bool r154 = r150 || r153;
double r155 = !r154;
bool r156 = r148 || r155;
double r157 = !r156;
bool r158 = r146 || r157;
double r159 = 0.5;
double r160 = 2.0;
double r161 = re;
double r162 = hypot(r161, r144);
double r163 = r162 - r161;
double r164 = 0.0;
double r165 = r163 + r164;
double r166 = r160 * r165;
double r167 = sqrt(r166);
double r168 = r159 * r167;
double r169 = 2.0;
double r170 = pow(r144, r169);
double r171 = r170 + r164;
double r172 = r161 + r162;
double r173 = r171 / r172;
double r174 = r160 * r173;
double r175 = sqrt(r174);
double r176 = r159 * r175;
double r177 = r158 ? r168 : r176;
return r177;
}



Bits error versus re



Bits error versus im
Results
if im < -4.1789077984601566e+114 or -8.34056697677881e+54 < im < 8.575500542659089e-157 or 3.3371304803298494e+120 < im Initial program 44.5
rmApplied add-cube-cbrt45.2
Applied add-sqr-sqrt45.2
Applied sqrt-prod45.2
Applied prod-diff45.3
Simplified15.4
Simplified12.5
if -4.1789077984601566e+114 < im < -8.34056697677881e+54 or 8.575500542659089e-157 < im < 3.3371304803298494e+120Initial program 23.4
rmApplied flip--31.6
Simplified24.1
Simplified19.3
Final simplification14.2
herbie shell --seed 2020025 +o rules:numerics
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
:precision binary64
(* 0.5 (sqrt (* 2 (- (sqrt (+ (* re re) (* im im))) re)))))