\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{\frac{\log \left(\mathsf{hypot}\left(re, im\right)\right)}{\sqrt[3]{\sqrt{\log 10}}}}{\sqrt{\sqrt{\log 10}}} \cdot \frac{\frac{1}{\sqrt[3]{\sqrt{\log 10}}} \cdot \frac{1}{\sqrt[3]{\sqrt{\log 10}}}}{\sqrt{\sqrt{\log 10}}}double f(double re, double im) {
double r6538291 = re;
double r6538292 = r6538291 * r6538291;
double r6538293 = im;
double r6538294 = r6538293 * r6538293;
double r6538295 = r6538292 + r6538294;
double r6538296 = sqrt(r6538295);
double r6538297 = log(r6538296);
double r6538298 = 10.0;
double r6538299 = log(r6538298);
double r6538300 = r6538297 / r6538299;
return r6538300;
}
double f(double re, double im) {
double r6538301 = re;
double r6538302 = im;
double r6538303 = hypot(r6538301, r6538302);
double r6538304 = log(r6538303);
double r6538305 = 10.0;
double r6538306 = log(r6538305);
double r6538307 = sqrt(r6538306);
double r6538308 = cbrt(r6538307);
double r6538309 = r6538304 / r6538308;
double r6538310 = sqrt(r6538307);
double r6538311 = r6538309 / r6538310;
double r6538312 = 1.0;
double r6538313 = r6538312 / r6538308;
double r6538314 = r6538313 * r6538313;
double r6538315 = r6538314 / r6538310;
double r6538316 = r6538311 * r6538315;
return r6538316;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.0
Simplified0.6
rmApplied add-sqr-sqrt0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
rmApplied pow10.6
Applied log-pow0.6
Applied associate-/l*0.6
rmApplied associate-*r/0.6
Simplified0.6
rmApplied pow10.6
Applied log-pow0.6
Applied add-sqr-sqrt1.2
Applied times-frac1.3
Applied add-cube-cbrt0.7
Applied add-sqr-sqrt0.7
Applied times-frac0.7
Applied times-frac0.6
Simplified0.6
Simplified0.5
Final simplification0.5
herbie shell --seed 2019128 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))