\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\begin{array}{l}
\mathbf{if}\;re \le -1.012696922971656070126551128339768331018 \cdot 10^{144}:\\
\;\;\;\;\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)\\
\mathbf{elif}\;re \le 2.634779087613696261194604791849988568461 \cdot 10^{68}:\\
\;\;\;\;\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 r43891 = re;
double r43892 = r43891 * r43891;
double r43893 = im;
double r43894 = r43893 * r43893;
double r43895 = r43892 + r43894;
double r43896 = sqrt(r43895);
double r43897 = log(r43896);
double r43898 = 10.0;
double r43899 = log(r43898);
double r43900 = r43897 / r43899;
return r43900;
}
double f(double re, double im) {
double r43901 = re;
double r43902 = -1.012696922971656e+144;
bool r43903 = r43901 <= r43902;
double r43904 = 0.5;
double r43905 = 10.0;
double r43906 = log(r43905);
double r43907 = sqrt(r43906);
double r43908 = r43904 / r43907;
double r43909 = -2.0;
double r43910 = -1.0;
double r43911 = r43910 / r43901;
double r43912 = log(r43911);
double r43913 = 1.0;
double r43914 = r43913 / r43906;
double r43915 = sqrt(r43914);
double r43916 = r43912 * r43915;
double r43917 = r43909 * r43916;
double r43918 = r43908 * r43917;
double r43919 = 2.6347790876136963e+68;
bool r43920 = r43901 <= r43919;
double r43921 = r43901 * r43901;
double r43922 = im;
double r43923 = r43922 * r43922;
double r43924 = r43921 + r43923;
double r43925 = r43913 / r43907;
double r43926 = pow(r43924, r43925);
double r43927 = log(r43926);
double r43928 = r43908 * r43927;
double r43929 = r43913 / r43901;
double r43930 = log(r43929);
double r43931 = r43930 * r43915;
double r43932 = r43909 * r43931;
double r43933 = r43908 * r43932;
double r43934 = r43920 ? r43928 : r43933;
double r43935 = r43903 ? r43918 : r43934;
return r43935;
}



Bits error versus re



Bits error versus im
Results
if re < -1.012696922971656e+144Initial program 60.8
rmApplied add-sqr-sqrt60.8
Applied pow1/260.8
Applied log-pow60.8
Applied times-frac60.8
Taylor expanded around -inf 7.4
if -1.012696922971656e+144 < re < 2.6347790876136963e+68Initial program 22.3
rmApplied add-sqr-sqrt22.3
Applied pow1/222.3
Applied log-pow22.3
Applied times-frac22.3
rmApplied add-log-exp22.3
Simplified22.1
if 2.6347790876136963e+68 < re Initial program 47.9
rmApplied add-sqr-sqrt47.9
Applied pow1/247.9
Applied log-pow47.9
Applied times-frac47.9
Taylor expanded around inf 10.6
Final simplification17.8
herbie shell --seed 2019344
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))