\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{1}{\sqrt{\log 10}} \cdot \left(\log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot \frac{1}{\sqrt{\log 10}}\right)double f(double re, double im) {
double r29496 = re;
double r29497 = r29496 * r29496;
double r29498 = im;
double r29499 = r29498 * r29498;
double r29500 = r29497 + r29499;
double r29501 = sqrt(r29500);
double r29502 = log(r29501);
double r29503 = 10.0;
double r29504 = log(r29503);
double r29505 = r29502 / r29504;
return r29505;
}
double f(double re, double im) {
double r29506 = 1.0;
double r29507 = 10.0;
double r29508 = log(r29507);
double r29509 = sqrt(r29508);
double r29510 = r29506 / r29509;
double r29511 = re;
double r29512 = im;
double r29513 = hypot(r29511, r29512);
double r29514 = log(r29513);
double r29515 = r29514 * r29510;
double r29516 = r29510 * r29515;
return r29516;
}



Bits error versus re



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