\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 r80225 = im;
double r80226 = re;
double r80227 = atan2(r80225, r80226);
double r80228 = base;
double r80229 = log(r80228);
double r80230 = r80227 * r80229;
double r80231 = r80226 * r80226;
double r80232 = r80225 * r80225;
double r80233 = r80231 + r80232;
double r80234 = sqrt(r80233);
double r80235 = log(r80234);
double r80236 = 0.0;
double r80237 = r80235 * r80236;
double r80238 = r80230 - r80237;
double r80239 = r80229 * r80229;
double r80240 = r80236 * r80236;
double r80241 = r80239 + r80240;
double r80242 = r80238 / r80241;
return r80242;
}
double f(double re, double im, double base) {
double r80243 = im;
double r80244 = re;
double r80245 = atan2(r80243, r80244);
double r80246 = base;
double r80247 = log(r80246);
double r80248 = r80245 / r80247;
return r80248;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.4
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2020083 +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))))