\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\sqrt{\frac{1}{\sqrt{\log 10}}} \cdot \left(\left(\frac{1}{\sqrt{\log 10}} \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)\right) \cdot \sqrt{\frac{1}{\sqrt{\log 10}}}\right)double f(double re, double im) {
double r928017 = re;
double r928018 = r928017 * r928017;
double r928019 = im;
double r928020 = r928019 * r928019;
double r928021 = r928018 + r928020;
double r928022 = sqrt(r928021);
double r928023 = log(r928022);
double r928024 = 10.0;
double r928025 = log(r928024);
double r928026 = r928023 / r928025;
return r928026;
}
double f(double re, double im) {
double r928027 = 1.0;
double r928028 = 10.0;
double r928029 = log(r928028);
double r928030 = sqrt(r928029);
double r928031 = r928027 / r928030;
double r928032 = sqrt(r928031);
double r928033 = re;
double r928034 = im;
double r928035 = hypot(r928033, r928034);
double r928036 = log(r928035);
double r928037 = r928031 * r928036;
double r928038 = r928037 * r928032;
double r928039 = r928032 * r928038;
return r928039;
}



Bits error versus re



Bits error versus im
Results
Initial program 31.6
Simplified0.6
rmApplied add-cube-cbrt0.6
rmApplied add-sqr-sqrt0.6
Applied *-un-lft-identity0.6
Applied times-frac0.5
Simplified0.5
rmApplied div-inv0.4
Applied associate-*r*0.4
rmApplied add-sqr-sqrt0.4
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019143 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))