\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{1}{\sqrt{\log 10}} \cdot \log \left({\left(\mathsf{hypot}\left(re, im\right)\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)double f(double re, double im) {
double r43829 = re;
double r43830 = r43829 * r43829;
double r43831 = im;
double r43832 = r43831 * r43831;
double r43833 = r43830 + r43832;
double r43834 = sqrt(r43833);
double r43835 = log(r43834);
double r43836 = 10.0;
double r43837 = log(r43836);
double r43838 = r43835 / r43837;
return r43838;
}
double f(double re, double im) {
double r43839 = 1.0;
double r43840 = 10.0;
double r43841 = log(r43840);
double r43842 = sqrt(r43841);
double r43843 = r43839 / r43842;
double r43844 = re;
double r43845 = im;
double r43846 = hypot(r43844, r43845);
double r43847 = pow(r43846, r43843);
double r43848 = log(r43847);
double r43849 = r43843 * r43848;
return r43849;
}



Bits error versus re



Bits error versus im
Results
Initial program 32.3
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
Final simplification0.3
herbie shell --seed 2020056 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))