\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{-1 \cdot \tan^{-1}_* \frac{im}{re}}{\log \left(\frac{1}{base}\right)}double f(double re, double im, double base) {
double r27016 = im;
double r27017 = re;
double r27018 = atan2(r27016, r27017);
double r27019 = base;
double r27020 = log(r27019);
double r27021 = r27018 * r27020;
double r27022 = r27017 * r27017;
double r27023 = r27016 * r27016;
double r27024 = r27022 + r27023;
double r27025 = sqrt(r27024);
double r27026 = log(r27025);
double r27027 = 0.0;
double r27028 = r27026 * r27027;
double r27029 = r27021 - r27028;
double r27030 = r27020 * r27020;
double r27031 = r27027 * r27027;
double r27032 = r27030 + r27031;
double r27033 = r27029 / r27032;
return r27033;
}
double f(double re, double im, double base) {
double r27034 = -1.0;
double r27035 = im;
double r27036 = re;
double r27037 = atan2(r27035, r27036);
double r27038 = r27034 * r27037;
double r27039 = 1.0;
double r27040 = base;
double r27041 = r27039 / r27040;
double r27042 = log(r27041);
double r27043 = r27038 / r27042;
return r27043;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.0
Taylor expanded around 0 0.3
rmApplied frac-2neg0.3
Simplified0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019344 +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))))