\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 r36104 = re;
double r36105 = r36104 * r36104;
double r36106 = im;
double r36107 = r36106 * r36106;
double r36108 = r36105 + r36107;
double r36109 = sqrt(r36108);
double r36110 = log(r36109);
double r36111 = 10.0;
double r36112 = log(r36111);
double r36113 = r36110 / r36112;
return r36113;
}
double f(double re, double im) {
double r36114 = 1.0;
double r36115 = 10.0;
double r36116 = log(r36115);
double r36117 = sqrt(r36116);
double r36118 = r36114 / r36117;
double r36119 = re;
double r36120 = im;
double r36121 = hypot(r36119, r36120);
double r36122 = pow(r36121, r36118);
double r36123 = log(r36122);
double r36124 = r36118 * r36123;
return r36124;
}



Bits error versus re



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