\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\begin{array}{l}
\mathbf{if}\;re \le -2.178124817795752902398331940971666652664 \cdot 10^{114}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 9.38505452091062154296414227123138742096 \cdot 10^{137}:\\
\;\;\;\;\frac{\frac{\frac{1}{4} \cdot \left(\left(\log \left(re \cdot re + im \cdot im\right) \cdot \log \left(re \cdot re + im \cdot im\right)\right) \cdot {\left(\log base\right)}^{2}\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right) - \tan^{-1}_* \frac{im}{re} \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r45479 = re;
double r45480 = r45479 * r45479;
double r45481 = im;
double r45482 = r45481 * r45481;
double r45483 = r45480 + r45482;
double r45484 = sqrt(r45483);
double r45485 = log(r45484);
double r45486 = base;
double r45487 = log(r45486);
double r45488 = r45485 * r45487;
double r45489 = atan2(r45481, r45479);
double r45490 = 0.0;
double r45491 = r45489 * r45490;
double r45492 = r45488 + r45491;
double r45493 = r45487 * r45487;
double r45494 = r45490 * r45490;
double r45495 = r45493 + r45494;
double r45496 = r45492 / r45495;
return r45496;
}
double f(double re, double im, double base) {
double r45497 = re;
double r45498 = -2.178124817795753e+114;
bool r45499 = r45497 <= r45498;
double r45500 = -1.0;
double r45501 = r45500 / r45497;
double r45502 = log(r45501);
double r45503 = -r45502;
double r45504 = base;
double r45505 = log(r45504);
double r45506 = r45503 / r45505;
double r45507 = 9.385054520910622e+137;
bool r45508 = r45497 <= r45507;
double r45509 = 0.25;
double r45510 = r45497 * r45497;
double r45511 = im;
double r45512 = r45511 * r45511;
double r45513 = r45510 + r45512;
double r45514 = log(r45513);
double r45515 = r45514 * r45514;
double r45516 = 2.0;
double r45517 = pow(r45505, r45516);
double r45518 = r45515 * r45517;
double r45519 = r45509 * r45518;
double r45520 = atan2(r45511, r45497);
double r45521 = 0.0;
double r45522 = r45520 * r45521;
double r45523 = r45522 * r45522;
double r45524 = r45519 - r45523;
double r45525 = r45521 * r45521;
double r45526 = r45525 + r45517;
double r45527 = r45524 / r45526;
double r45528 = 0.5;
double r45529 = r45514 * r45505;
double r45530 = r45528 * r45529;
double r45531 = r45530 - r45522;
double r45532 = r45527 / r45531;
double r45533 = log(r45497);
double r45534 = -r45533;
double r45535 = -r45505;
double r45536 = r45534 / r45535;
double r45537 = r45508 ? r45532 : r45536;
double r45538 = r45499 ? r45506 : r45537;
return r45538;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.178124817795753e+114Initial program 54.8
rmApplied pow1/254.8
Applied log-pow54.8
Applied associate-*l*54.8
Taylor expanded around -inf 64.0
Simplified8.5
if -2.178124817795753e+114 < re < 9.385054520910622e+137Initial program 21.5
rmApplied pow1/221.5
Applied log-pow21.5
Applied associate-*l*21.5
rmApplied div-inv21.5
Simplified21.5
rmApplied flip-+21.5
Applied associate-*l/21.5
Simplified21.5
if 9.385054520910622e+137 < re Initial program 60.1
Taylor expanded around inf 7.0
Simplified7.0
Final simplification17.5
herbie shell --seed 2019323
(FPCore (re im base)
:name "math.log/2 on complex, real part"
:precision binary64
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))