\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 r36635 = re;
double r36636 = r36635 * r36635;
double r36637 = im;
double r36638 = r36637 * r36637;
double r36639 = r36636 + r36638;
double r36640 = sqrt(r36639);
double r36641 = log(r36640);
double r36642 = 10.0;
double r36643 = log(r36642);
double r36644 = r36641 / r36643;
return r36644;
}
double f(double re, double im) {
double r36645 = 1.0;
double r36646 = 10.0;
double r36647 = log(r36646);
double r36648 = sqrt(r36647);
double r36649 = r36645 / r36648;
double r36650 = re;
double r36651 = im;
double r36652 = hypot(r36650, r36651);
double r36653 = pow(r36652, r36649);
double r36654 = log(r36653);
double r36655 = r36649 * r36654;
return r36655;
}



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)))