\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 -4.0303141568877995 \cdot 10^{+114}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le 1.945423092678915 \cdot 10^{+111}:\\
\;\;\;\;\frac{\log \left(\sqrt{\sqrt[3]{im \cdot im + re \cdot re} \cdot \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot {\left(im \cdot im + re \cdot re\right)}^{\frac{1}{3}}\right)}\right)}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log re \cdot 2}}\\
\end{array}double f(double re, double im, double base) {
double r757259 = re;
double r757260 = r757259 * r757259;
double r757261 = im;
double r757262 = r757261 * r757261;
double r757263 = r757260 + r757262;
double r757264 = sqrt(r757263);
double r757265 = log(r757264);
double r757266 = base;
double r757267 = log(r757266);
double r757268 = r757265 * r757267;
double r757269 = atan2(r757261, r757259);
double r757270 = 0.0;
double r757271 = r757269 * r757270;
double r757272 = r757268 + r757271;
double r757273 = r757267 * r757267;
double r757274 = r757270 * r757270;
double r757275 = r757273 + r757274;
double r757276 = r757272 / r757275;
return r757276;
}
double f(double re, double im, double base) {
double r757277 = re;
double r757278 = -4.0303141568877995e+114;
bool r757279 = r757277 <= r757278;
double r757280 = -r757277;
double r757281 = log(r757280);
double r757282 = base;
double r757283 = log(r757282);
double r757284 = r757281 / r757283;
double r757285 = 1.945423092678915e+111;
bool r757286 = r757277 <= r757285;
double r757287 = im;
double r757288 = r757287 * r757287;
double r757289 = r757277 * r757277;
double r757290 = r757288 + r757289;
double r757291 = cbrt(r757290);
double r757292 = 0.3333333333333333;
double r757293 = pow(r757290, r757292);
double r757294 = r757291 * r757293;
double r757295 = r757291 * r757294;
double r757296 = sqrt(r757295);
double r757297 = log(r757296);
double r757298 = r757297 / r757283;
double r757299 = 0.5;
double r757300 = log(r757277);
double r757301 = 2.0;
double r757302 = r757300 * r757301;
double r757303 = r757283 / r757302;
double r757304 = r757299 / r757303;
double r757305 = r757286 ? r757298 : r757304;
double r757306 = r757279 ? r757284 : r757305;
return r757306;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.0303141568877995e+114Initial program 52.3
Simplified52.3
rmApplied add-cube-cbrt52.3
rmApplied pow1/352.3
Taylor expanded around -inf 7.6
Simplified7.6
if -4.0303141568877995e+114 < re < 1.945423092678915e+111Initial program 20.4
Simplified20.3
rmApplied add-cube-cbrt20.3
rmApplied pow1/320.3
if 1.945423092678915e+111 < re Initial program 52.4
Simplified52.3
rmApplied pow1/252.3
Applied log-pow52.3
Applied associate-/l*52.3
Taylor expanded around inf 8.7
Simplified8.7
Final simplification16.5
herbie shell --seed 2019152
(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))))