\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\frac{1}{\sqrt{\log 10}} \cdot \left(2 \cdot \log \left(\sqrt[3]{{\left(\mathsf{hypot}\left(re, im\right)\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}}\right) + \log \left(\sqrt[3]{{\left(\mathsf{hypot}\left(re, im\right)\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}}\right)\right)double f(double re, double im) {
double r86104 = re;
double r86105 = r86104 * r86104;
double r86106 = im;
double r86107 = r86106 * r86106;
double r86108 = r86105 + r86107;
double r86109 = sqrt(r86108);
double r86110 = log(r86109);
double r86111 = 10.0;
double r86112 = log(r86111);
double r86113 = r86110 / r86112;
return r86113;
}
double f(double re, double im) {
double r86114 = 1.0;
double r86115 = 10.0;
double r86116 = log(r86115);
double r86117 = sqrt(r86116);
double r86118 = r86114 / r86117;
double r86119 = 2.0;
double r86120 = re;
double r86121 = im;
double r86122 = hypot(r86120, r86121);
double r86123 = pow(r86122, r86118);
double r86124 = cbrt(r86123);
double r86125 = log(r86124);
double r86126 = r86119 * r86125;
double r86127 = r86126 + r86125;
double r86128 = r86118 * r86127;
return r86128;
}



Bits error versus re



Bits error versus im
Results
Initial program 32.3
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
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020036 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))