\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 r36510 = re;
double r36511 = r36510 * r36510;
double r36512 = im;
double r36513 = r36512 * r36512;
double r36514 = r36511 + r36513;
double r36515 = sqrt(r36514);
double r36516 = log(r36515);
double r36517 = 10.0;
double r36518 = log(r36517);
double r36519 = r36516 / r36518;
return r36519;
}
double f(double re, double im) {
double r36520 = 1.0;
double r36521 = 10.0;
double r36522 = log(r36521);
double r36523 = sqrt(r36522);
double r36524 = r36520 / r36523;
double r36525 = re;
double r36526 = im;
double r36527 = hypot(r36525, r36526);
double r36528 = pow(r36527, r36524);
double r36529 = log(r36528);
double r36530 = r36524 * r36529;
return r36530;
}



Bits error versus re



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