\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{1}{\sqrt{\log 10}} \cdot \log \left({\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{hypot}\left(re, im\right)\right)\right)\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)double f(double re, double im) {
double r89484 = re;
double r89485 = r89484 * r89484;
double r89486 = im;
double r89487 = r89486 * r89486;
double r89488 = r89485 + r89487;
double r89489 = sqrt(r89488);
double r89490 = log(r89489);
double r89491 = 10.0;
double r89492 = log(r89491);
double r89493 = r89490 / r89492;
return r89493;
}
double f(double re, double im) {
double r89494 = 1.0;
double r89495 = 10.0;
double r89496 = log(r89495);
double r89497 = sqrt(r89496);
double r89498 = r89494 / r89497;
double r89499 = re;
double r89500 = im;
double r89501 = hypot(r89499, r89500);
double r89502 = log1p(r89501);
double r89503 = expm1(r89502);
double r89504 = pow(r89503, r89498);
double r89505 = log(r89504);
double r89506 = r89498 * r89505;
return r89506;
}



Bits error versus re



Bits error versus im
Results
Initial program 32.7
rmApplied hypot-def0.6
rmApplied add-sqr-sqrt0.6
Applied pow10.6
Applied log-pow0.6
Applied times-frac0.5
rmApplied add-log-exp0.5
Simplified0.3
rmApplied expm1-log1p-u0.3
Final simplification0.3
herbie shell --seed 2019344 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))