\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\frac{\frac{\frac{\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(re, im\right)\right), \log base, \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\mathsf{hypot}\left(\log base, 0.0\right)}}{\sqrt{\mathsf{hypot}\left(\log base, 0.0\right)}}}{\sqrt{\sqrt{\mathsf{fma}\left(\log base, \log base, 0.0 \cdot 0.0\right)}}}double f(double re, double im, double base) {
double r57141 = re;
double r57142 = r57141 * r57141;
double r57143 = im;
double r57144 = r57143 * r57143;
double r57145 = r57142 + r57144;
double r57146 = sqrt(r57145);
double r57147 = log(r57146);
double r57148 = base;
double r57149 = log(r57148);
double r57150 = r57147 * r57149;
double r57151 = atan2(r57143, r57141);
double r57152 = 0.0;
double r57153 = r57151 * r57152;
double r57154 = r57150 + r57153;
double r57155 = r57149 * r57149;
double r57156 = r57152 * r57152;
double r57157 = r57155 + r57156;
double r57158 = r57154 / r57157;
return r57158;
}
double f(double re, double im, double base) {
double r57159 = re;
double r57160 = im;
double r57161 = hypot(r57159, r57160);
double r57162 = log(r57161);
double r57163 = base;
double r57164 = log(r57163);
double r57165 = atan2(r57160, r57159);
double r57166 = 0.0;
double r57167 = r57165 * r57166;
double r57168 = fma(r57162, r57164, r57167);
double r57169 = hypot(r57164, r57166);
double r57170 = r57168 / r57169;
double r57171 = sqrt(r57169);
double r57172 = r57170 / r57171;
double r57173 = r57166 * r57166;
double r57174 = fma(r57164, r57164, r57173);
double r57175 = sqrt(r57174);
double r57176 = sqrt(r57175);
double r57177 = r57172 / r57176;
return r57177;
}



Bits error versus re



Bits error versus im



Bits error versus base
Initial program 31.8
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied associate-/r*0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied sqrt-prod0.7
Applied associate-/r*0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2020042 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, real part"
:precision binary64
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))