\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 r1912596 = re;
double r1912597 = r1912596 * r1912596;
double r1912598 = im;
double r1912599 = r1912598 * r1912598;
double r1912600 = r1912597 + r1912599;
double r1912601 = sqrt(r1912600);
double r1912602 = log(r1912601);
double r1912603 = base;
double r1912604 = log(r1912603);
double r1912605 = r1912602 * r1912604;
double r1912606 = atan2(r1912598, r1912596);
double r1912607 = 0.0;
double r1912608 = r1912606 * r1912607;
double r1912609 = r1912605 + r1912608;
double r1912610 = r1912604 * r1912604;
double r1912611 = r1912607 * r1912607;
double r1912612 = r1912610 + r1912611;
double r1912613 = r1912609 / r1912612;
return r1912613;
}
double f(double re, double im, double base) {
double r1912614 = im;
double r1912615 = -1.3319832853049099e+154;
bool r1912616 = r1912614 <= r1912615;
double r1912617 = base;
double r1912618 = log(r1912617);
double r1912619 = re;
double r1912620 = -r1912619;
double r1912621 = log(r1912620);
double r1912622 = r1912618 * r1912621;
double r1912623 = r1912618 * r1912618;
double r1912624 = r1912622 / r1912623;
double r1912625 = -3.342038672369277e-80;
bool r1912626 = r1912614 <= r1912625;
double r1912627 = 0.5;
double r1912628 = r1912619 * r1912619;
double r1912629 = r1912614 * r1912614;
double r1912630 = r1912628 + r1912629;
double r1912631 = log(r1912630);
double r1912632 = r1912618 / r1912631;
double r1912633 = r1912627 / r1912632;
double r1912634 = 2.373529375665528e-90;
bool r1912635 = r1912614 <= r1912634;
double r1912636 = r1912621 / r1912618;
double r1912637 = 1.3521426037961752e+99;
bool r1912638 = r1912614 <= r1912637;
double r1912639 = log(r1912614);
double r1912640 = r1912639 / r1912618;
double r1912641 = r1912638 ? r1912633 : r1912640;
double r1912642 = r1912635 ? r1912636 : r1912641;
double r1912643 = r1912626 ? r1912633 : r1912642;
double r1912644 = r1912616 ? r1912624 : r1912643;
return r1912644;
}



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))))