\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\left(\log \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \frac{1}{\sqrt{\log 10}} + \log \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \frac{1}{\sqrt{\log 10}}\right) \cdot \frac{1}{\sqrt{\log 10}}double f(double re, double im) {
double r881816 = re;
double r881817 = r881816 * r881816;
double r881818 = im;
double r881819 = r881818 * r881818;
double r881820 = r881817 + r881819;
double r881821 = sqrt(r881820);
double r881822 = log(r881821);
double r881823 = 10.0;
double r881824 = log(r881823);
double r881825 = r881822 / r881824;
return r881825;
}
double f(double re, double im) {
double r881826 = re;
double r881827 = im;
double r881828 = hypot(r881826, r881827);
double r881829 = cbrt(r881828);
double r881830 = log(r881829);
double r881831 = 1.0;
double r881832 = 10.0;
double r881833 = log(r881832);
double r881834 = sqrt(r881833);
double r881835 = r881831 / r881834;
double r881836 = r881830 * r881835;
double r881837 = r881829 * r881829;
double r881838 = log(r881837);
double r881839 = r881838 * r881835;
double r881840 = r881836 + r881839;
double r881841 = r881840 * r881835;
return r881841;
}



Bits error versus re



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