\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 r1398142 = im;
double r1398143 = re;
double r1398144 = atan2(r1398142, r1398143);
double r1398145 = base;
double r1398146 = log(r1398145);
double r1398147 = r1398144 * r1398146;
double r1398148 = r1398143 * r1398143;
double r1398149 = r1398142 * r1398142;
double r1398150 = r1398148 + r1398149;
double r1398151 = sqrt(r1398150);
double r1398152 = log(r1398151);
double r1398153 = 0.0;
double r1398154 = r1398152 * r1398153;
double r1398155 = r1398147 - r1398154;
double r1398156 = r1398146 * r1398146;
double r1398157 = r1398153 * r1398153;
double r1398158 = r1398156 + r1398157;
double r1398159 = r1398155 / r1398158;
return r1398159;
}
double f(double re, double im, double base) {
double r1398160 = 1.0;
double r1398161 = base;
double r1398162 = log(r1398161);
double r1398163 = r1398160 / r1398162;
double r1398164 = im;
double r1398165 = re;
double r1398166 = atan2(r1398164, r1398165);
double r1398167 = r1398163 * r1398166;
return r1398167;
}



Bits error versus re



Bits error versus im



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