\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 r41904 = re;
double r41905 = r41904 * r41904;
double r41906 = im;
double r41907 = r41906 * r41906;
double r41908 = r41905 + r41907;
double r41909 = sqrt(r41908);
double r41910 = log(r41909);
double r41911 = 10.0;
double r41912 = log(r41911);
double r41913 = r41910 / r41912;
return r41913;
}
double f(double re, double im) {
double r41914 = 1.0;
double r41915 = 10.0;
double r41916 = log(r41915);
double r41917 = sqrt(r41916);
double r41918 = r41914 / r41917;
double r41919 = re;
double r41920 = im;
double r41921 = hypot(r41919, r41920);
double r41922 = pow(r41921, r41918);
double r41923 = log(r41922);
double r41924 = r41918 * r41923;
return r41924;
}



Bits error versus re



Bits error versus im
Results
Initial program 32.2
rmApplied *-un-lft-identity32.2
Applied sqrt-prod32.2
Simplified32.2
Simplified0.6
rmApplied add-sqr-sqrt0.6
Applied pow10.6
Applied pow10.6
Applied pow-prod-down0.6
Applied log-pow0.6
Applied times-frac0.6
rmApplied add-log-exp0.6
Simplified0.3
Final simplification0.3
herbie shell --seed 2020060 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))