\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\frac{\tan^{-1}_* \frac{im}{re}}{\log base}double f(double re, double im, double base) {
double r23150 = im;
double r23151 = re;
double r23152 = atan2(r23150, r23151);
double r23153 = base;
double r23154 = log(r23153);
double r23155 = r23152 * r23154;
double r23156 = r23151 * r23151;
double r23157 = r23150 * r23150;
double r23158 = r23156 + r23157;
double r23159 = sqrt(r23158);
double r23160 = log(r23159);
double r23161 = 0.0;
double r23162 = r23160 * r23161;
double r23163 = r23155 - r23162;
double r23164 = r23154 * r23154;
double r23165 = r23161 * r23161;
double r23166 = r23164 + r23165;
double r23167 = r23163 / r23166;
return r23167;
}
double f(double re, double im, double base) {
double r23168 = im;
double r23169 = re;
double r23170 = atan2(r23168, r23169);
double r23171 = base;
double r23172 = log(r23171);
double r23173 = r23170 / r23172;
return r23173;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.8
Taylor expanded around 0 0.3
rmApplied clear-num0.5
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2020018 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, imaginary part"
:precision binary64
(/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))