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



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
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)))