\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\begin{array}{l}
\mathbf{if}\;re \le -5.62947252224553645 \cdot 10^{46}:\\
\;\;\;\;\frac{\sqrt{\frac{1}{2}}}{1} \cdot \left(\frac{\sqrt{\frac{1}{2}}}{\sqrt{\log 10}} \cdot \left(-2 \cdot \left(\log \left(\frac{-1}{re}\right) \cdot \sqrt{\frac{1}{\log 10}}\right)\right)\right)\\
\mathbf{elif}\;re \le 2.4086845449201843 \cdot 10^{100}:\\
\;\;\;\;\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \log \left({\left(re \cdot re + im \cdot im\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(-2 \cdot \left(\log \left(\frac{1}{re}\right) \cdot \sqrt{\frac{1}{\log 10}}\right)\right)\\
\end{array}double f(double re, double im) {
double r51978 = re;
double r51979 = r51978 * r51978;
double r51980 = im;
double r51981 = r51980 * r51980;
double r51982 = r51979 + r51981;
double r51983 = sqrt(r51982);
double r51984 = log(r51983);
double r51985 = 10.0;
double r51986 = log(r51985);
double r51987 = r51984 / r51986;
return r51987;
}
double f(double re, double im) {
double r51988 = re;
double r51989 = -5.629472522245536e+46;
bool r51990 = r51988 <= r51989;
double r51991 = 0.5;
double r51992 = sqrt(r51991);
double r51993 = 1.0;
double r51994 = r51992 / r51993;
double r51995 = 10.0;
double r51996 = log(r51995);
double r51997 = sqrt(r51996);
double r51998 = r51992 / r51997;
double r51999 = -2.0;
double r52000 = -1.0;
double r52001 = r52000 / r51988;
double r52002 = log(r52001);
double r52003 = r51993 / r51996;
double r52004 = sqrt(r52003);
double r52005 = r52002 * r52004;
double r52006 = r51999 * r52005;
double r52007 = r51998 * r52006;
double r52008 = r51994 * r52007;
double r52009 = 2.4086845449201843e+100;
bool r52010 = r51988 <= r52009;
double r52011 = r51991 / r51997;
double r52012 = r51988 * r51988;
double r52013 = im;
double r52014 = r52013 * r52013;
double r52015 = r52012 + r52014;
double r52016 = r51993 / r51997;
double r52017 = pow(r52015, r52016);
double r52018 = log(r52017);
double r52019 = r52011 * r52018;
double r52020 = r51993 / r51988;
double r52021 = log(r52020);
double r52022 = r52021 * r52004;
double r52023 = r51999 * r52022;
double r52024 = r52011 * r52023;
double r52025 = r52010 ? r52019 : r52024;
double r52026 = r51990 ? r52008 : r52025;
return r52026;
}



Bits error versus re



Bits error versus im
Results
if re < -5.629472522245536e+46Initial program 43.9
rmApplied add-sqr-sqrt43.9
Applied pow1/243.9
Applied log-pow43.9
Applied times-frac43.8
rmApplied *-un-lft-identity43.8
Applied add-sqr-sqrt43.9
Applied times-frac43.8
Applied associate-*l*43.8
Taylor expanded around -inf 12.3
if -5.629472522245536e+46 < re < 2.4086845449201843e+100Initial program 22.5
rmApplied add-sqr-sqrt22.5
Applied pow1/222.5
Applied log-pow22.5
Applied times-frac22.4
rmApplied add-log-exp22.4
Simplified22.3
if 2.4086845449201843e+100 < re Initial program 52.6
rmApplied add-sqr-sqrt52.6
Applied pow1/252.6
Applied log-pow52.6
Applied times-frac52.6
Taylor expanded around inf 9.1
Final simplification17.9
herbie shell --seed 2020060
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))