\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 r41779 = re;
double r41780 = r41779 * r41779;
double r41781 = im;
double r41782 = r41781 * r41781;
double r41783 = r41780 + r41782;
double r41784 = sqrt(r41783);
double r41785 = log(r41784);
double r41786 = 10.0;
double r41787 = log(r41786);
double r41788 = r41785 / r41787;
return r41788;
}
double f(double re, double im) {
double r41789 = 1.0;
double r41790 = 10.0;
double r41791 = log(r41790);
double r41792 = sqrt(r41791);
double r41793 = r41789 / r41792;
double r41794 = re;
double r41795 = im;
double r41796 = hypot(r41794, r41795);
double r41797 = pow(r41796, r41793);
double r41798 = log(r41797);
double r41799 = r41793 * r41798;
return r41799;
}



Bits error versus re



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