\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -5.235503805450076 \cdot 10^{+93}:\\
\;\;\;\;\left(\left(-2 \cdot \log \left(\frac{-1}{re}\right)\right) \cdot \frac{1}{2}\right) \cdot \frac{1}{\log base}\\
\mathbf{elif}\;re \le 3.913600501226428 \cdot 10^{+41}:\\
\;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right) \cdot \frac{1}{2}}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r3234242 = re;
double r3234243 = r3234242 * r3234242;
double r3234244 = im;
double r3234245 = r3234244 * r3234244;
double r3234246 = r3234243 + r3234245;
double r3234247 = sqrt(r3234246);
double r3234248 = log(r3234247);
double r3234249 = base;
double r3234250 = log(r3234249);
double r3234251 = r3234248 * r3234250;
double r3234252 = atan2(r3234244, r3234242);
double r3234253 = 0.0;
double r3234254 = r3234252 * r3234253;
double r3234255 = r3234251 + r3234254;
double r3234256 = r3234250 * r3234250;
double r3234257 = r3234253 * r3234253;
double r3234258 = r3234256 + r3234257;
double r3234259 = r3234255 / r3234258;
return r3234259;
}
double f(double re, double im, double base) {
double r3234260 = re;
double r3234261 = -5.235503805450076e+93;
bool r3234262 = r3234260 <= r3234261;
double r3234263 = -2.0;
double r3234264 = -1.0;
double r3234265 = r3234264 / r3234260;
double r3234266 = log(r3234265);
double r3234267 = r3234263 * r3234266;
double r3234268 = 0.5;
double r3234269 = r3234267 * r3234268;
double r3234270 = 1.0;
double r3234271 = base;
double r3234272 = log(r3234271);
double r3234273 = r3234270 / r3234272;
double r3234274 = r3234269 * r3234273;
double r3234275 = 3.913600501226428e+41;
bool r3234276 = r3234260 <= r3234275;
double r3234277 = r3234260 * r3234260;
double r3234278 = im;
double r3234279 = r3234278 * r3234278;
double r3234280 = r3234277 + r3234279;
double r3234281 = log(r3234280);
double r3234282 = r3234281 * r3234268;
double r3234283 = r3234282 / r3234272;
double r3234284 = log(r3234260);
double r3234285 = r3234284 / r3234272;
double r3234286 = r3234276 ? r3234283 : r3234285;
double r3234287 = r3234262 ? r3234274 : r3234286;
return r3234287;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.235503805450076e+93Initial program 48.4
Simplified48.3
rmApplied pow1/248.3
Applied log-pow48.3
rmApplied div-inv48.3
Taylor expanded around -inf 9.2
Simplified9.2
if -5.235503805450076e+93 < re < 3.913600501226428e+41Initial program 21.9
Simplified21.8
rmApplied pow1/221.8
Applied log-pow21.8
if 3.913600501226428e+41 < re Initial program 43.3
Simplified43.3
Taylor expanded around inf 11.8
Final simplification17.4
herbie shell --seed 2019163
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))