\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\left(\frac{1}{\sqrt{\log 10}} \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)\right) \cdot \frac{1}{\sqrt{\log 10}}double f(double re, double im) {
double r2238904 = re;
double r2238905 = r2238904 * r2238904;
double r2238906 = im;
double r2238907 = r2238906 * r2238906;
double r2238908 = r2238905 + r2238907;
double r2238909 = sqrt(r2238908);
double r2238910 = log(r2238909);
double r2238911 = 10.0;
double r2238912 = log(r2238911);
double r2238913 = r2238910 / r2238912;
return r2238913;
}
double f(double re, double im) {
double r2238914 = 1.0;
double r2238915 = 10.0;
double r2238916 = log(r2238915);
double r2238917 = sqrt(r2238916);
double r2238918 = r2238914 / r2238917;
double r2238919 = re;
double r2238920 = im;
double r2238921 = hypot(r2238919, r2238920);
double r2238922 = log(r2238921);
double r2238923 = r2238918 * r2238922;
double r2238924 = r2238923 * r2238918;
return r2238924;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.8
Simplified0.6
rmApplied add-sqr-sqrt0.6
Applied pow10.6
Applied log-pow0.6
Applied times-frac0.5
rmApplied div-inv0.4
Applied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2019174 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))