\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.058032265545680570459296008987666803769 \cdot 10^{110}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 5.03357404896189331385202691146888528845 \cdot 10^{141}:\\
\;\;\;\;\frac{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left({\left(\log base\right)}^{2} + 0.0 \cdot 0.0\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r104595 = re;
double r104596 = r104595 * r104595;
double r104597 = im;
double r104598 = r104597 * r104597;
double r104599 = r104596 + r104598;
double r104600 = sqrt(r104599);
double r104601 = log(r104600);
double r104602 = base;
double r104603 = log(r104602);
double r104604 = r104601 * r104603;
double r104605 = atan2(r104597, r104595);
double r104606 = 0.0;
double r104607 = r104605 * r104606;
double r104608 = r104604 + r104607;
double r104609 = r104603 * r104603;
double r104610 = r104606 * r104606;
double r104611 = r104609 + r104610;
double r104612 = r104608 / r104611;
return r104612;
}
double f(double re, double im, double base) {
double r104613 = re;
double r104614 = -2.0580322655456806e+110;
bool r104615 = r104613 <= r104614;
double r104616 = -1.0;
double r104617 = r104616 / r104613;
double r104618 = log(r104617);
double r104619 = -r104618;
double r104620 = base;
double r104621 = log(r104620);
double r104622 = r104619 / r104621;
double r104623 = 5.033574048961893e+141;
bool r104624 = r104613 <= r104623;
double r104625 = r104613 * r104613;
double r104626 = im;
double r104627 = r104626 * r104626;
double r104628 = r104625 + r104627;
double r104629 = sqrt(r104628);
double r104630 = log(r104629);
double r104631 = r104630 * r104621;
double r104632 = r104631 * r104631;
double r104633 = atan2(r104626, r104613);
double r104634 = 0.0;
double r104635 = r104633 * r104634;
double r104636 = r104635 * r104635;
double r104637 = r104632 - r104636;
double r104638 = r104631 - r104635;
double r104639 = 2.0;
double r104640 = pow(r104621, r104639);
double r104641 = r104634 * r104634;
double r104642 = r104640 + r104641;
double r104643 = r104638 * r104642;
double r104644 = r104637 / r104643;
double r104645 = log(r104613);
double r104646 = -r104645;
double r104647 = -r104621;
double r104648 = r104646 / r104647;
double r104649 = r104624 ? r104644 : r104648;
double r104650 = r104615 ? r104622 : r104649;
return r104650;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.0580322655456806e+110Initial program 53.7
rmApplied pow153.7
Applied pow153.7
Applied pow-prod-down53.7
Simplified53.7
rmApplied add-sqr-sqrt53.7
Applied *-un-lft-identity53.7
Applied times-frac53.7
Simplified53.7
Simplified53.7
Taylor expanded around -inf 64.0
Simplified8.8
if -2.0580322655456806e+110 < re < 5.033574048961893e+141Initial program 21.5
rmApplied flip-+21.5
Applied associate-/l/21.5
Simplified21.5
if 5.033574048961893e+141 < re Initial program 60.7
Taylor expanded around inf 6.9
Simplified6.9
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))))