\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}\;im \le -1.3319832853049099 \cdot 10^{+154}:\\
\;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\
\mathbf{elif}\;im \le -3.342038672369277 \cdot 10^{-80}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(re \cdot re + im \cdot im\right)}}\\
\mathbf{elif}\;im \le 2.373529375665528 \cdot 10^{-90}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;im \le 1.3521426037961752 \cdot 10^{+99}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(re \cdot re + im \cdot im\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r1912591 = re;
double r1912592 = r1912591 * r1912591;
double r1912593 = im;
double r1912594 = r1912593 * r1912593;
double r1912595 = r1912592 + r1912594;
double r1912596 = sqrt(r1912595);
double r1912597 = log(r1912596);
double r1912598 = base;
double r1912599 = log(r1912598);
double r1912600 = r1912597 * r1912599;
double r1912601 = atan2(r1912593, r1912591);
double r1912602 = 0.0;
double r1912603 = r1912601 * r1912602;
double r1912604 = r1912600 + r1912603;
double r1912605 = r1912599 * r1912599;
double r1912606 = r1912602 * r1912602;
double r1912607 = r1912605 + r1912606;
double r1912608 = r1912604 / r1912607;
return r1912608;
}
double f(double re, double im, double base) {
double r1912609 = im;
double r1912610 = -1.3319832853049099e+154;
bool r1912611 = r1912609 <= r1912610;
double r1912612 = base;
double r1912613 = log(r1912612);
double r1912614 = re;
double r1912615 = -r1912614;
double r1912616 = log(r1912615);
double r1912617 = r1912613 * r1912616;
double r1912618 = r1912613 * r1912613;
double r1912619 = r1912617 / r1912618;
double r1912620 = -3.342038672369277e-80;
bool r1912621 = r1912609 <= r1912620;
double r1912622 = 0.5;
double r1912623 = r1912614 * r1912614;
double r1912624 = r1912609 * r1912609;
double r1912625 = r1912623 + r1912624;
double r1912626 = log(r1912625);
double r1912627 = r1912613 / r1912626;
double r1912628 = r1912622 / r1912627;
double r1912629 = 2.373529375665528e-90;
bool r1912630 = r1912609 <= r1912629;
double r1912631 = r1912616 / r1912613;
double r1912632 = 1.3521426037961752e+99;
bool r1912633 = r1912609 <= r1912632;
double r1912634 = log(r1912609);
double r1912635 = r1912634 / r1912613;
double r1912636 = r1912633 ? r1912628 : r1912635;
double r1912637 = r1912630 ? r1912631 : r1912636;
double r1912638 = r1912621 ? r1912628 : r1912637;
double r1912639 = r1912611 ? r1912619 : r1912638;
return r1912639;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if im < -1.3319832853049099e+154Initial program 62.0
Simplified62.0
Taylor expanded around -inf 51.8
Simplified51.8
if -1.3319832853049099e+154 < im < -3.342038672369277e-80 or 2.373529375665528e-90 < im < 1.3521426037961752e+99Initial program 15.6
Simplified15.6
rmApplied times-frac15.5
Simplified15.5
rmApplied pow1/215.5
Applied log-pow15.5
Applied associate-/l*15.5
if -3.342038672369277e-80 < im < 2.373529375665528e-90Initial program 25.3
Simplified25.3
rmApplied times-frac25.2
Simplified25.2
Taylor expanded around -inf 9.5
Simplified9.5
if 1.3521426037961752e+99 < im Initial program 49.6
Simplified49.6
Taylor expanded around 0 9.3
Final simplification16.9
herbie shell --seed 2019107
(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))))