\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 r36619 = re;
double r36620 = r36619 * r36619;
double r36621 = im;
double r36622 = r36621 * r36621;
double r36623 = r36620 + r36622;
double r36624 = sqrt(r36623);
double r36625 = log(r36624);
double r36626 = 10.0;
double r36627 = log(r36626);
double r36628 = r36625 / r36627;
return r36628;
}
double f(double re, double im) {
double r36629 = 1.0;
double r36630 = 10.0;
double r36631 = log(r36630);
double r36632 = sqrt(r36631);
double r36633 = r36629 / r36632;
double r36634 = re;
double r36635 = im;
double r36636 = hypot(r36634, r36635);
double r36637 = pow(r36636, r36633);
double r36638 = log(r36637);
double r36639 = r36633 * r36638;
return r36639;
}



Bits error versus re



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