\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 r30177 = im;
double r30178 = re;
double r30179 = atan2(r30177, r30178);
double r30180 = base;
double r30181 = log(r30180);
double r30182 = r30179 * r30181;
double r30183 = r30178 * r30178;
double r30184 = r30177 * r30177;
double r30185 = r30183 + r30184;
double r30186 = sqrt(r30185);
double r30187 = log(r30186);
double r30188 = 0.0;
double r30189 = r30187 * r30188;
double r30190 = r30182 - r30189;
double r30191 = r30181 * r30181;
double r30192 = r30188 * r30188;
double r30193 = r30191 + r30192;
double r30194 = r30190 / r30193;
return r30194;
}
double f(double re, double im, double base) {
double r30195 = 1.0;
double r30196 = base;
double r30197 = log(r30196);
double r30198 = r30195 / r30197;
double r30199 = im;
double r30200 = re;
double r30201 = atan2(r30199, r30200);
double r30202 = r30198 * r30201;
return r30202;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.7
Simplified0.4
Taylor expanded around inf 0.3
Simplified0.3
rmApplied div-inv0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019304 +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))))