\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\begin{array}{l}
\mathbf{if}\;re \le -3.8946465989197382 \cdot 10^{113}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{1}{2}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{\sqrt[3]{\log 10} \cdot \sqrt[3]{\log 10}}} \cdot \left(\frac{\log 1 + \log \left(\frac{-1}{re}\right) \cdot -2}{\sqrt{\log 10}} \cdot \frac{\sqrt[3]{\frac{1}{2}}}{\sqrt{\sqrt[3]{\log 10}}}\right)\\
\mathbf{elif}\;re \le -4.68163499683713152 \cdot 10^{-258}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{1}{2}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{\sqrt[3]{\log 10} \cdot \sqrt[3]{\log 10}}} \cdot \left(\frac{\sqrt[3]{\frac{1}{2}}}{\sqrt{\sqrt[3]{\log 10}}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}\right)\\
\mathbf{elif}\;re \le 8.4037824376923499 \cdot 10^{-209}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{1}{2}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{\sqrt[3]{\log 10} \cdot \sqrt[3]{\log 10}}} \cdot \left(\frac{\sqrt[3]{\frac{1}{2}}}{\sqrt{\sqrt[3]{\log 10}}} \cdot \frac{\log 1 + 2 \cdot \log im}{\sqrt{\log 10}}\right)\\
\mathbf{elif}\;re \le 8.7544658168502362 \cdot 10^{115}:\\
\;\;\;\;\sqrt{\frac{1}{2}} \cdot \frac{\sqrt{\frac{1}{2}}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\left(\log 1 + 2 \cdot \log re\right) \cdot \sqrt{\frac{1}{\log 10}}\right)\\
\end{array}double code(double re, double im) {
return (((double) log(((double) sqrt(((double) (((double) (re * re)) + ((double) (im * im)))))))) / ((double) log(10.0)));
}
double code(double re, double im) {
double VAR;
if ((re <= -3.894646598919738e+113)) {
VAR = ((double) ((((double) (((double) cbrt(0.5)) * ((double) cbrt(0.5)))) / ((double) sqrt(((double) (((double) cbrt(((double) log(10.0)))) * ((double) cbrt(((double) log(10.0))))))))) * ((double) ((((double) (((double) log(1.0)) + ((double) (((double) log((-1.0 / re))) * -2.0)))) / ((double) sqrt(((double) log(10.0))))) * (((double) cbrt(0.5)) / ((double) sqrt(((double) cbrt(((double) log(10.0)))))))))));
} else {
double VAR_1;
if ((re <= -4.6816349968371315e-258)) {
VAR_1 = ((double) ((((double) (((double) cbrt(0.5)) * ((double) cbrt(0.5)))) / ((double) sqrt(((double) (((double) cbrt(((double) log(10.0)))) * ((double) cbrt(((double) log(10.0))))))))) * ((double) ((((double) cbrt(0.5)) / ((double) sqrt(((double) cbrt(((double) log(10.0))))))) * (((double) log(((double) (((double) (re * re)) + ((double) (im * im)))))) / ((double) sqrt(((double) log(10.0)))))))));
} else {
double VAR_2;
if ((re <= 8.40378243769235e-209)) {
VAR_2 = ((double) ((((double) (((double) cbrt(0.5)) * ((double) cbrt(0.5)))) / ((double) sqrt(((double) (((double) cbrt(((double) log(10.0)))) * ((double) cbrt(((double) log(10.0))))))))) * ((double) ((((double) cbrt(0.5)) / ((double) sqrt(((double) cbrt(((double) log(10.0))))))) * (((double) (((double) log(1.0)) + ((double) (2.0 * ((double) log(im)))))) / ((double) sqrt(((double) log(10.0)))))))));
} else {
double VAR_3;
if ((re <= 8.754465816850236e+115)) {
VAR_3 = ((double) (((double) sqrt(0.5)) * (((double) sqrt(0.5)) / (((double) log(10.0)) / ((double) log(((double) (((double) (re * re)) + ((double) (im * im))))))))));
} else {
VAR_3 = ((double) ((0.5 / ((double) sqrt(((double) log(10.0))))) * ((double) (((double) (((double) log(1.0)) + ((double) (2.0 * ((double) log(re)))))) * ((double) sqrt((1.0 / ((double) log(10.0)))))))));
}
VAR_2 = VAR_3;
}
VAR_1 = VAR_2;
}
VAR = VAR_1;
}
return VAR;
}



Bits error versus re



Bits error versus im
Results
if re < -3.8946465989197382e113Initial program 54.8
rmApplied add-sqr-sqrt54.8
Applied pow1/254.8
Applied log-pow54.8
Applied times-frac54.8
rmApplied add-cube-cbrt54.9
Applied sqrt-prod54.9
Applied add-cube-cbrt54.8
Applied times-frac54.8
Applied associate-*l*54.8
Simplified54.8
Taylor expanded around -inf 8.9
Simplified8.9
if -3.8946465989197382e113 < re < -4.68163499683713152e-258Initial program 20.1
rmApplied add-sqr-sqrt20.1
Applied pow1/220.1
Applied log-pow20.1
Applied times-frac20.0
rmApplied add-cube-cbrt20.6
Applied sqrt-prod20.6
Applied add-cube-cbrt20.0
Applied times-frac20.1
Applied associate-*l*20.0
Simplified20.0
if -4.68163499683713152e-258 < re < 8.4037824376923499e-209Initial program 30.2
rmApplied add-sqr-sqrt30.2
Applied pow1/230.2
Applied log-pow30.2
Applied times-frac30.2
rmApplied add-cube-cbrt30.6
Applied sqrt-prod30.6
Applied add-cube-cbrt30.2
Applied times-frac30.2
Applied associate-*l*30.1
Simplified30.1
Taylor expanded around 0 32.1
if 8.4037824376923499e-209 < re < 8.7544658168502362e115Initial program 19.1
rmApplied add-sqr-sqrt19.1
Applied pow1/219.1
Applied log-pow19.1
Applied times-frac19.1
rmApplied *-un-lft-identity19.1
Applied add-sqr-sqrt19.1
Applied times-frac19.1
Applied associate-*l*19.0
Simplified19.1
if 8.7544658168502362e115 < re Initial program 55.1
rmApplied add-sqr-sqrt55.1
Applied pow1/255.1
Applied log-pow55.1
Applied times-frac55.1
Taylor expanded around inf 8.6
Simplified8.6
Final simplification17.7
herbie shell --seed 2020182
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))