\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 r49221 = im;
double r49222 = re;
double r49223 = atan2(r49221, r49222);
double r49224 = base;
double r49225 = log(r49224);
double r49226 = r49223 * r49225;
double r49227 = r49222 * r49222;
double r49228 = r49221 * r49221;
double r49229 = r49227 + r49228;
double r49230 = sqrt(r49229);
double r49231 = log(r49230);
double r49232 = 0.0;
double r49233 = r49231 * r49232;
double r49234 = r49226 - r49233;
double r49235 = r49225 * r49225;
double r49236 = r49232 * r49232;
double r49237 = r49235 + r49236;
double r49238 = r49234 / r49237;
return r49238;
}
double f(double re, double im, double base) {
double r49239 = im;
double r49240 = re;
double r49241 = atan2(r49239, r49240);
double r49242 = base;
double r49243 = log(r49242);
double r49244 = -r49243;
double r49245 = r49241 / r49244;
double r49246 = -r49245;
return r49246;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.0
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019174 +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))))