0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -7.266849055505758 \cdot 10^{+89}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;re \le 3.5824244510525257 \cdot 10^{-143}:\\
\;\;\;\;\sqrt{2.0 \cdot \left(\sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re}}} \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}}}\right) - re\right)} \cdot 0.5\\
\mathbf{elif}\;re \le 2.223433959363476 \cdot 10^{-94}:\\
\;\;\;\;\sqrt{\left(im - re\right) \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;re \le 6.852760898293699 \cdot 10^{+140}:\\
\;\;\;\;\sqrt{2.0 \cdot \left(\left(\sqrt{re} + \sqrt{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} - \sqrt{re}\right)\right)} \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double re, double im) {
double r994136 = 0.5;
double r994137 = 2.0;
double r994138 = re;
double r994139 = r994138 * r994138;
double r994140 = im;
double r994141 = r994140 * r994140;
double r994142 = r994139 + r994141;
double r994143 = sqrt(r994142);
double r994144 = r994143 - r994138;
double r994145 = r994137 * r994144;
double r994146 = sqrt(r994145);
double r994147 = r994136 * r994146;
return r994147;
}
double f(double re, double im) {
double r994148 = re;
double r994149 = -7.266849055505758e+89;
bool r994150 = r994148 <= r994149;
double r994151 = -2.0;
double r994152 = r994151 * r994148;
double r994153 = 2.0;
double r994154 = r994152 * r994153;
double r994155 = sqrt(r994154);
double r994156 = 0.5;
double r994157 = r994155 * r994156;
double r994158 = 3.5824244510525257e-143;
bool r994159 = r994148 <= r994158;
double r994160 = im;
double r994161 = r994160 * r994160;
double r994162 = r994148 * r994148;
double r994163 = r994161 + r994162;
double r994164 = cbrt(r994163);
double r994165 = sqrt(r994164);
double r994166 = sqrt(r994165);
double r994167 = sqrt(r994163);
double r994168 = sqrt(r994167);
double r994169 = r994164 * r994164;
double r994170 = sqrt(r994169);
double r994171 = sqrt(r994170);
double r994172 = r994168 * r994171;
double r994173 = r994166 * r994172;
double r994174 = r994173 - r994148;
double r994175 = r994153 * r994174;
double r994176 = sqrt(r994175);
double r994177 = r994176 * r994156;
double r994178 = 2.223433959363476e-94;
bool r994179 = r994148 <= r994178;
double r994180 = r994160 - r994148;
double r994181 = r994180 * r994153;
double r994182 = sqrt(r994181);
double r994183 = r994182 * r994156;
double r994184 = 6.852760898293699e+140;
bool r994185 = r994148 <= r994184;
double r994186 = sqrt(r994148);
double r994187 = r994186 + r994168;
double r994188 = r994168 - r994186;
double r994189 = r994187 * r994188;
double r994190 = r994153 * r994189;
double r994191 = sqrt(r994190);
double r994192 = r994191 * r994156;
double r994193 = 0.0;
double r994194 = r994185 ? r994192 : r994193;
double r994195 = r994179 ? r994183 : r994194;
double r994196 = r994159 ? r994177 : r994195;
double r994197 = r994150 ? r994157 : r994196;
return r994197;
}



Bits error versus re



Bits error versus im
Results
if re < -7.266849055505758e+89Initial program 47.2
Taylor expanded around -inf 10.7
if -7.266849055505758e+89 < re < 3.5824244510525257e-143Initial program 23.7
rmApplied add-sqr-sqrt23.8
rmApplied add-cube-cbrt23.8
Applied sqrt-prod23.8
Applied sqrt-prod23.8
Applied associate-*r*23.8
if 3.5824244510525257e-143 < re < 2.223433959363476e-94Initial program 33.3
Taylor expanded around 0 40.8
if 2.223433959363476e-94 < re < 6.852760898293699e+140Initial program 46.4
rmApplied add-sqr-sqrt47.6
rmApplied add-sqr-sqrt46.4
Applied difference-of-squares46.4
if 6.852760898293699e+140 < re Initial program 61.9
Taylor expanded around inf 50.8
Final simplification30.0
herbie shell --seed 2019107
(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)))))