\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 -3.27704547278454974 \cdot 10^{100}:\\
\;\;\;\;\frac{\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.5707996749315065 \cdot 10^{114}:\\
\;\;\;\;\frac{\frac{\log \left(\left|{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}\right| \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r45602 = re;
double r45603 = r45602 * r45602;
double r45604 = im;
double r45605 = r45604 * r45604;
double r45606 = r45603 + r45605;
double r45607 = sqrt(r45606);
double r45608 = log(r45607);
double r45609 = base;
double r45610 = log(r45609);
double r45611 = r45608 * r45610;
double r45612 = atan2(r45604, r45602);
double r45613 = 0.0;
double r45614 = r45612 * r45613;
double r45615 = r45611 + r45614;
double r45616 = r45610 * r45610;
double r45617 = r45613 * r45613;
double r45618 = r45616 + r45617;
double r45619 = r45615 / r45618;
return r45619;
}
double f(double re, double im, double base) {
double r45620 = re;
double r45621 = -3.2770454727845497e+100;
bool r45622 = r45620 <= r45621;
double r45623 = -1.0;
double r45624 = r45623 * r45620;
double r45625 = log(r45624);
double r45626 = base;
double r45627 = log(r45626);
double r45628 = r45625 * r45627;
double r45629 = im;
double r45630 = atan2(r45629, r45620);
double r45631 = 0.0;
double r45632 = r45630 * r45631;
double r45633 = r45628 + r45632;
double r45634 = r45627 * r45627;
double r45635 = r45631 * r45631;
double r45636 = r45634 + r45635;
double r45637 = sqrt(r45636);
double r45638 = r45633 / r45637;
double r45639 = r45638 / r45637;
double r45640 = 1.5707996749315065e+114;
bool r45641 = r45620 <= r45640;
double r45642 = r45620 * r45620;
double r45643 = r45629 * r45629;
double r45644 = r45642 + r45643;
double r45645 = 0.3333333333333333;
double r45646 = pow(r45644, r45645);
double r45647 = fabs(r45646);
double r45648 = cbrt(r45644);
double r45649 = sqrt(r45648);
double r45650 = r45647 * r45649;
double r45651 = log(r45650);
double r45652 = r45651 * r45627;
double r45653 = r45652 + r45632;
double r45654 = r45653 / r45637;
double r45655 = r45654 / r45637;
double r45656 = 1.0;
double r45657 = r45656 / r45620;
double r45658 = log(r45657);
double r45659 = r45656 / r45626;
double r45660 = log(r45659);
double r45661 = r45658 / r45660;
double r45662 = r45641 ? r45655 : r45661;
double r45663 = r45622 ? r45639 : r45662;
return r45663;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.2770454727845497e+100Initial program 51.6
rmApplied add-sqr-sqrt51.6
Applied associate-/r*51.6
Taylor expanded around -inf 8.6
if -3.2770454727845497e+100 < re < 1.5707996749315065e+114Initial program 22.3
rmApplied add-sqr-sqrt22.3
Applied associate-/r*22.3
rmApplied add-cube-cbrt22.3
Applied sqrt-prod22.3
Simplified22.3
rmApplied pow1/322.3
if 1.5707996749315065e+114 < re Initial program 53.8
Taylor expanded around inf 7.7
Final simplification17.8
herbie shell --seed 2020003
(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))))