\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}{-\log base} \cdot \tan^{-1}_* \frac{im}{re}double f(double re, double im, double base) {
double r47145 = im;
double r47146 = re;
double r47147 = atan2(r47145, r47146);
double r47148 = base;
double r47149 = log(r47148);
double r47150 = r47147 * r47149;
double r47151 = r47146 * r47146;
double r47152 = r47145 * r47145;
double r47153 = r47151 + r47152;
double r47154 = sqrt(r47153);
double r47155 = log(r47154);
double r47156 = 0.0;
double r47157 = r47155 * r47156;
double r47158 = r47150 - r47157;
double r47159 = r47149 * r47149;
double r47160 = r47156 * r47156;
double r47161 = r47159 + r47160;
double r47162 = r47158 / r47161;
return r47162;
}
double f(double re, double im, double base) {
double r47163 = -1.0;
double r47164 = base;
double r47165 = log(r47164);
double r47166 = -r47165;
double r47167 = r47163 / r47166;
double r47168 = im;
double r47169 = re;
double r47170 = atan2(r47168, r47169);
double r47171 = r47167 * r47170;
return r47171;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.6
Simplified0.4
Taylor expanded around inf 0.3
Simplified0.3
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019196 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, imaginary part"
(/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))