\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -3.8460535119133569 \cdot 10^{74}:\\
\;\;\;\;-1 \cdot re\\
\mathbf{elif}\;re \le -1.3504253849915568 \cdot 10^{-194}:\\
\;\;\;\;\sqrt{re \cdot re + im \cdot im}\\
\mathbf{elif}\;re \le -2.968956980813959 \cdot 10^{-266}:\\
\;\;\;\;im\\
\mathbf{elif}\;re \le 1.19099635470288769 \cdot 10^{-228}:\\
\;\;\;\;\sqrt{re \cdot re + im \cdot im}\\
\mathbf{elif}\;re \le 1.08574889376971239 \cdot 10^{-190}:\\
\;\;\;\;im\\
\mathbf{elif}\;re \le 3.98422560465703889 \cdot 10^{39}:\\
\;\;\;\;\sqrt{re \cdot re + im \cdot im}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r52849 = re;
double r52850 = r52849 * r52849;
double r52851 = im;
double r52852 = r52851 * r52851;
double r52853 = r52850 + r52852;
double r52854 = sqrt(r52853);
return r52854;
}
double f(double re, double im) {
double r52855 = re;
double r52856 = -3.846053511913357e+74;
bool r52857 = r52855 <= r52856;
double r52858 = -1.0;
double r52859 = r52858 * r52855;
double r52860 = -1.3504253849915568e-194;
bool r52861 = r52855 <= r52860;
double r52862 = r52855 * r52855;
double r52863 = im;
double r52864 = r52863 * r52863;
double r52865 = r52862 + r52864;
double r52866 = sqrt(r52865);
double r52867 = -2.968956980813959e-266;
bool r52868 = r52855 <= r52867;
double r52869 = 1.1909963547028877e-228;
bool r52870 = r52855 <= r52869;
double r52871 = 1.0857488937697124e-190;
bool r52872 = r52855 <= r52871;
double r52873 = 3.984225604657039e+39;
bool r52874 = r52855 <= r52873;
double r52875 = r52874 ? r52866 : r52855;
double r52876 = r52872 ? r52863 : r52875;
double r52877 = r52870 ? r52866 : r52876;
double r52878 = r52868 ? r52863 : r52877;
double r52879 = r52861 ? r52866 : r52878;
double r52880 = r52857 ? r52859 : r52879;
return r52880;
}



Bits error versus re



Bits error versus im
Results
if re < -3.846053511913357e+74Initial program 47.2
Taylor expanded around -inf 10.7
if -3.846053511913357e+74 < re < -1.3504253849915568e-194 or -2.968956980813959e-266 < re < 1.1909963547028877e-228 or 1.0857488937697124e-190 < re < 3.984225604657039e+39Initial program 20.9
if -1.3504253849915568e-194 < re < -2.968956980813959e-266 or 1.1909963547028877e-228 < re < 1.0857488937697124e-190Initial program 31.4
Taylor expanded around 0 34.8
if 3.984225604657039e+39 < re Initial program 43.8
Taylor expanded around inf 13.6
Final simplification18.7
herbie shell --seed 2020057
(FPCore (re im)
:name "math.abs on complex"
:precision binary64
(sqrt (+ (* re re) (* im im))))