\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{1}{\sqrt{\log 10}} \cdot \log \left(\sqrt{{\left(\mathsf{hypot}\left(re, im\right)\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}}\right) + \frac{1}{\sqrt{\log 10}} \cdot \log \left(\sqrt{{\left(\mathsf{hypot}\left(re, im\right)\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}}\right)double f(double re, double im) {
double r39808 = re;
double r39809 = r39808 * r39808;
double r39810 = im;
double r39811 = r39810 * r39810;
double r39812 = r39809 + r39811;
double r39813 = sqrt(r39812);
double r39814 = log(r39813);
double r39815 = 10.0;
double r39816 = log(r39815);
double r39817 = r39814 / r39816;
return r39817;
}
double f(double re, double im) {
double r39818 = 1.0;
double r39819 = 10.0;
double r39820 = log(r39819);
double r39821 = sqrt(r39820);
double r39822 = r39818 / r39821;
double r39823 = re;
double r39824 = im;
double r39825 = hypot(r39823, r39824);
double r39826 = pow(r39825, r39822);
double r39827 = sqrt(r39826);
double r39828 = log(r39827);
double r39829 = r39822 * r39828;
double r39830 = r39829 + r39829;
return r39830;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.5
rmApplied hypot-def0.6
rmApplied add-sqr-sqrt0.6
Applied pow10.6
Applied log-pow0.6
Applied times-frac0.5
rmApplied add-log-exp0.5
Simplified0.3
rmApplied add-sqr-sqrt0.3
Applied log-prod0.3
Applied distribute-lft-in0.3
Final simplification0.3
herbie shell --seed 2020001 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))