0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -1.68578209479783180545998421086186392498 \cdot 10^{-10}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\
\mathbf{elif}\;re \le -5.201857708777203638520435967734604418811 \cdot 10^{-42}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\
\mathbf{elif}\;re \le -1.578664519533145820935744094339933684966 \cdot 10^{-101}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\
\mathbf{elif}\;re \le -5.259805741457812420396753775709430528865 \cdot 10^{-204}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\sqrt[3]{\sqrt{2}} \cdot \left|\frac{im}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\right|\right)\right)\\
\mathbf{elif}\;re \le -1.151206757702833058082466539382970933253 \cdot 10^{-304}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\
\mathbf{elif}\;re \le 3.541857872203963491164772955139563574803 \cdot 10^{75}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\sqrt[3]{\sqrt{2}} \cdot \left|\frac{im}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\right|\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \left|\frac{im}{\sqrt{re + re}}\right|\right)\\
\end{array}double f(double re, double im) {
double r29169 = 0.5;
double r29170 = 2.0;
double r29171 = re;
double r29172 = r29171 * r29171;
double r29173 = im;
double r29174 = r29173 * r29173;
double r29175 = r29172 + r29174;
double r29176 = sqrt(r29175);
double r29177 = r29176 - r29171;
double r29178 = r29170 * r29177;
double r29179 = sqrt(r29178);
double r29180 = r29169 * r29179;
return r29180;
}
double f(double re, double im) {
double r29181 = re;
double r29182 = -1.6857820947978318e-10;
bool r29183 = r29181 <= r29182;
double r29184 = 0.5;
double r29185 = 2.0;
double r29186 = -1.0;
double r29187 = r29186 * r29181;
double r29188 = r29187 - r29181;
double r29189 = r29185 * r29188;
double r29190 = sqrt(r29189);
double r29191 = r29184 * r29190;
double r29192 = -5.2018577087772036e-42;
bool r29193 = r29181 <= r29192;
double r29194 = im;
double r29195 = r29181 + r29194;
double r29196 = -r29195;
double r29197 = r29185 * r29196;
double r29198 = sqrt(r29197);
double r29199 = r29184 * r29198;
double r29200 = -1.5786645195331458e-101;
bool r29201 = r29181 <= r29200;
double r29202 = -5.2598057414578124e-204;
bool r29203 = r29181 <= r29202;
double r29204 = sqrt(r29185);
double r29205 = cbrt(r29204);
double r29206 = r29205 * r29205;
double r29207 = r29181 * r29181;
double r29208 = r29194 * r29194;
double r29209 = r29207 + r29208;
double r29210 = sqrt(r29209);
double r29211 = r29181 + r29210;
double r29212 = sqrt(r29211);
double r29213 = r29194 / r29212;
double r29214 = fabs(r29213);
double r29215 = r29205 * r29214;
double r29216 = r29206 * r29215;
double r29217 = r29184 * r29216;
double r29218 = -1.151206757702833e-304;
bool r29219 = r29181 <= r29218;
double r29220 = r29194 - r29181;
double r29221 = r29185 * r29220;
double r29222 = sqrt(r29221);
double r29223 = r29184 * r29222;
double r29224 = 3.5418578722039635e+75;
bool r29225 = r29181 <= r29224;
double r29226 = r29181 + r29181;
double r29227 = sqrt(r29226);
double r29228 = r29194 / r29227;
double r29229 = fabs(r29228);
double r29230 = r29204 * r29229;
double r29231 = r29184 * r29230;
double r29232 = r29225 ? r29217 : r29231;
double r29233 = r29219 ? r29223 : r29232;
double r29234 = r29203 ? r29217 : r29233;
double r29235 = r29201 ? r29191 : r29234;
double r29236 = r29193 ? r29199 : r29235;
double r29237 = r29183 ? r29191 : r29236;
return r29237;
}



Bits error versus re



Bits error versus im
Results
if re < -1.6857820947978318e-10 or -5.2018577087772036e-42 < re < -1.5786645195331458e-101Initial program 36.4
Taylor expanded around -inf 18.4
if -1.6857820947978318e-10 < re < -5.2018577087772036e-42Initial program 16.8
rmApplied flip--42.2
Simplified42.2
Simplified42.2
Taylor expanded around -inf 39.7
if -1.5786645195331458e-101 < re < -5.2598057414578124e-204 or -1.151206757702833e-304 < re < 3.5418578722039635e+75Initial program 33.4
rmApplied flip--36.0
Simplified30.6
Simplified30.6
rmApplied add-sqr-sqrt30.7
Applied add-sqr-sqrt47.7
Applied unpow-prod-down47.7
Applied times-frac46.9
Simplified46.8
Simplified29.0
rmApplied sqrt-prod29.1
Simplified23.4
rmApplied add-cube-cbrt23.4
Applied associate-*l*23.4
if -5.2598057414578124e-204 < re < -1.151206757702833e-304Initial program 29.3
Taylor expanded around 0 34.3
if 3.5418578722039635e+75 < re Initial program 59.7
rmApplied flip--59.7
Simplified42.8
Simplified42.8
rmApplied add-sqr-sqrt42.8
Applied add-sqr-sqrt53.1
Applied unpow-prod-down53.1
Applied times-frac52.9
Simplified52.9
Simplified42.5
rmApplied sqrt-prod42.5
Simplified37.3
Taylor expanded around inf 10.9
Final simplification20.7
herbie shell --seed 2019291
(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)))))