\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\left(\frac{1}{\sqrt{\log 10}} \cdot \sqrt[3]{\frac{1}{\sqrt{\log 10}}}\right) \cdot \log \left({\left(\mathsf{hypot}\left(re, im\right)\right)}^{\left(\sqrt[3]{\frac{1}{\sqrt{\log 10}}} \cdot \sqrt[3]{\frac{1}{\sqrt{\log 10}}}\right)}\right)double code(double re, double im) {
return ((double) (((double) log(((double) sqrt(((double) (((double) (re * re)) + ((double) (im * im)))))))) / ((double) log(10.0))));
}
double code(double re, double im) {
return ((double) (((double) (((double) (1.0 / ((double) sqrt(((double) log(10.0)))))) * ((double) cbrt(((double) (1.0 / ((double) sqrt(((double) log(10.0)))))))))) * ((double) log(((double) pow(((double) hypot(re, im)), ((double) (((double) cbrt(((double) (1.0 / ((double) sqrt(((double) log(10.0)))))))) * ((double) cbrt(((double) (1.0 / ((double) sqrt(((double) log(10.0))))))))))))))));
}



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
rmApplied add-cube-cbrt0.3
Applied pow-unpow0.6
Applied log-pow0.6
Applied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2020113 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))