\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 r30581 = re;
double r30582 = r30581 * r30581;
double r30583 = im;
double r30584 = r30583 * r30583;
double r30585 = r30582 + r30584;
double r30586 = sqrt(r30585);
double r30587 = log(r30586);
double r30588 = 10.0;
double r30589 = log(r30588);
double r30590 = r30587 / r30589;
return r30590;
}
double f(double re, double im) {
double r30591 = 1.0;
double r30592 = 10.0;
double r30593 = log(r30592);
double r30594 = sqrt(r30593);
double r30595 = r30591 / r30594;
double r30596 = re;
double r30597 = im;
double r30598 = hypot(r30596, r30597);
double r30599 = pow(r30598, r30595);
double r30600 = log(r30599);
double r30601 = r30595 * r30600;
return r30601;
}



Bits error versus re



Bits error versus im
Results
Initial program 32.4
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 2019212 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))