\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 r33007 = re;
double r33008 = r33007 * r33007;
double r33009 = im;
double r33010 = r33009 * r33009;
double r33011 = r33008 + r33010;
double r33012 = sqrt(r33011);
double r33013 = log(r33012);
double r33014 = 10.0;
double r33015 = log(r33014);
double r33016 = r33013 / r33015;
return r33016;
}
double f(double re, double im) {
double r33017 = 1.0;
double r33018 = 10.0;
double r33019 = log(r33018);
double r33020 = sqrt(r33019);
double r33021 = r33017 / r33020;
double r33022 = re;
double r33023 = im;
double r33024 = hypot(r33022, r33023);
double r33025 = pow(r33024, r33021);
double r33026 = log(r33025);
double r33027 = r33021 * r33026;
return r33027;
}



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.6
rmApplied div-inv0.4
rmApplied add-log-exp0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019195 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))