\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{1}{\sqrt{\log 10}} \cdot \left(\frac{1}{\sqrt{\log 10}} \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)\right)double f(double re, double im) {
double r624897 = re;
double r624898 = r624897 * r624897;
double r624899 = im;
double r624900 = r624899 * r624899;
double r624901 = r624898 + r624900;
double r624902 = sqrt(r624901);
double r624903 = log(r624902);
double r624904 = 10.0;
double r624905 = log(r624904);
double r624906 = r624903 / r624905;
return r624906;
}
double f(double re, double im) {
double r624907 = 1.0;
double r624908 = 10.0;
double r624909 = log(r624908);
double r624910 = sqrt(r624909);
double r624911 = r624907 / r624910;
double r624912 = re;
double r624913 = im;
double r624914 = hypot(r624912, r624913);
double r624915 = log(r624914);
double r624916 = r624911 * r624915;
double r624917 = r624911 * r624916;
return r624917;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.4
Simplified0.6
rmApplied clear-num0.6
rmApplied pow10.6
Applied log-pow0.6
Applied add-sqr-sqrt0.6
Applied times-frac0.8
Applied associate-/r*0.6
Simplified0.6
rmApplied pow10.6
Applied log-pow0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
Applied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
Applied times-frac0.6
Simplified0.6
rmApplied div-inv0.6
Simplified0.4
Final simplification0.4
herbie shell --seed 2019153 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))