\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 r40828 = re;
double r40829 = r40828 * r40828;
double r40830 = im;
double r40831 = r40830 * r40830;
double r40832 = r40829 + r40831;
double r40833 = sqrt(r40832);
double r40834 = log(r40833);
double r40835 = 10.0;
double r40836 = log(r40835);
double r40837 = r40834 / r40836;
return r40837;
}
double f(double re, double im) {
double r40838 = 1.0;
double r40839 = 10.0;
double r40840 = log(r40839);
double r40841 = sqrt(r40840);
double r40842 = r40838 / r40841;
double r40843 = re;
double r40844 = im;
double r40845 = hypot(r40843, r40844);
double r40846 = pow(r40845, r40842);
double r40847 = log(r40846);
double r40848 = r40842 * r40847;
return r40848;
}



Bits error versus re



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