\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 r40079 = re;
double r40080 = r40079 * r40079;
double r40081 = im;
double r40082 = r40081 * r40081;
double r40083 = r40080 + r40082;
double r40084 = sqrt(r40083);
double r40085 = log(r40084);
double r40086 = 10.0;
double r40087 = log(r40086);
double r40088 = r40085 / r40087;
return r40088;
}
double f(double re, double im) {
double r40089 = 1.0;
double r40090 = 10.0;
double r40091 = log(r40090);
double r40092 = sqrt(r40091);
double r40093 = r40089 / r40092;
double r40094 = re;
double r40095 = im;
double r40096 = hypot(r40094, r40095);
double r40097 = pow(r40096, r40093);
double r40098 = log(r40097);
double r40099 = r40093 * r40098;
return r40099;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.5
rmApplied *-un-lft-identity31.5
Applied sqrt-prod31.5
Simplified31.5
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.5
rmApplied add-log-exp0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2020001 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))