\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\begin{array}{l}
\mathbf{if}\;re \le -3.6980740601030615 \cdot 10^{63}:\\
\;\;\;\;\frac{1}{\sqrt{\log 10}} \cdot \log \left({\left(-1 \cdot re\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)\\
\mathbf{elif}\;re \le 9.1753737888878369 \cdot 10^{116}:\\
\;\;\;\;\frac{1}{\sqrt{\log 10}} \cdot \log \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{\log 10}} \cdot \log \left({\left(\frac{1}{re}\right)}^{\left(-\sqrt{\frac{1}{\log 10}}\right)}\right)\\
\end{array}double f(double re, double im) {
double r55954 = re;
double r55955 = r55954 * r55954;
double r55956 = im;
double r55957 = r55956 * r55956;
double r55958 = r55955 + r55957;
double r55959 = sqrt(r55958);
double r55960 = log(r55959);
double r55961 = 10.0;
double r55962 = log(r55961);
double r55963 = r55960 / r55962;
return r55963;
}
double f(double re, double im) {
double r55964 = re;
double r55965 = -3.6980740601030615e+63;
bool r55966 = r55964 <= r55965;
double r55967 = 1.0;
double r55968 = 10.0;
double r55969 = log(r55968);
double r55970 = sqrt(r55969);
double r55971 = r55967 / r55970;
double r55972 = -1.0;
double r55973 = r55972 * r55964;
double r55974 = pow(r55973, r55971);
double r55975 = log(r55974);
double r55976 = r55971 * r55975;
double r55977 = 9.175373788887837e+116;
bool r55978 = r55964 <= r55977;
double r55979 = r55964 * r55964;
double r55980 = im;
double r55981 = r55980 * r55980;
double r55982 = r55979 + r55981;
double r55983 = sqrt(r55982);
double r55984 = pow(r55983, r55971);
double r55985 = log(r55984);
double r55986 = r55971 * r55985;
double r55987 = r55967 / r55964;
double r55988 = r55967 / r55969;
double r55989 = sqrt(r55988);
double r55990 = -r55989;
double r55991 = pow(r55987, r55990);
double r55992 = log(r55991);
double r55993 = r55971 * r55992;
double r55994 = r55978 ? r55986 : r55993;
double r55995 = r55966 ? r55976 : r55994;
return r55995;
}



Bits error versus re



Bits error versus im
Results
if re < -3.6980740601030615e+63Initial program 46.1
rmApplied add-sqr-sqrt46.1
Applied pow146.1
Applied log-pow46.1
Applied times-frac46.1
rmApplied add-log-exp46.1
Simplified46.0
Taylor expanded around -inf 9.6
if -3.6980740601030615e+63 < re < 9.175373788887837e+116Initial program 21.6
rmApplied add-sqr-sqrt21.6
Applied pow121.6
Applied log-pow21.6
Applied times-frac21.6
rmApplied add-log-exp21.6
Simplified21.4
if 9.175373788887837e+116 < re Initial program 55.4
rmApplied add-sqr-sqrt55.4
Applied pow155.4
Applied log-pow55.4
Applied times-frac55.4
rmApplied add-log-exp55.4
Simplified55.4
Taylor expanded around inf 8.7
Simplified8.6
Final simplification17.1
herbie shell --seed 2020064
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))