\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 r34297 = re;
double r34298 = r34297 * r34297;
double r34299 = im;
double r34300 = r34299 * r34299;
double r34301 = r34298 + r34300;
double r34302 = sqrt(r34301);
double r34303 = log(r34302);
double r34304 = 10.0;
double r34305 = log(r34304);
double r34306 = r34303 / r34305;
return r34306;
}
double f(double re, double im) {
double r34307 = 1.0;
double r34308 = 10.0;
double r34309 = log(r34308);
double r34310 = sqrt(r34309);
double r34311 = r34307 / r34310;
double r34312 = re;
double r34313 = im;
double r34314 = hypot(r34312, r34313);
double r34315 = log(r34314);
double r34316 = r34315 * r34311;
double r34317 = r34311 * r34316;
return r34317;
}



Bits error versus re



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