\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.3460069031813118 \cdot 10^{+154}:\\
\;\;\;\;\frac{\left(\sqrt{\log \left(-re\right)} \cdot \log base\right) \cdot \sqrt{\log \left(-re\right)}}{\log base \cdot \log base}\\
\mathbf{elif}\;im \le -5.570962160288898 \cdot 10^{-157}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \left(\log \left(\sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)}\\
\mathbf{elif}\;im \le 4.1911202162953755 \cdot 10^{-45}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(-re\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log base \cdot \log im}{\log base \cdot \log base}\\
\end{array}double f(double re, double im, double base) {
double r2101410 = re;
double r2101411 = r2101410 * r2101410;
double r2101412 = im;
double r2101413 = r2101412 * r2101412;
double r2101414 = r2101411 + r2101413;
double r2101415 = sqrt(r2101414);
double r2101416 = log(r2101415);
double r2101417 = base;
double r2101418 = log(r2101417);
double r2101419 = r2101416 * r2101418;
double r2101420 = atan2(r2101412, r2101410);
double r2101421 = 0.0;
double r2101422 = r2101420 * r2101421;
double r2101423 = r2101419 + r2101422;
double r2101424 = r2101418 * r2101418;
double r2101425 = r2101421 * r2101421;
double r2101426 = r2101424 + r2101425;
double r2101427 = r2101423 / r2101426;
return r2101427;
}
double f(double re, double im, double base) {
double r2101428 = im;
double r2101429 = -1.3460069031813118e+154;
bool r2101430 = r2101428 <= r2101429;
double r2101431 = re;
double r2101432 = -r2101431;
double r2101433 = log(r2101432);
double r2101434 = sqrt(r2101433);
double r2101435 = base;
double r2101436 = log(r2101435);
double r2101437 = r2101434 * r2101436;
double r2101438 = r2101437 * r2101434;
double r2101439 = r2101436 * r2101436;
double r2101440 = r2101438 / r2101439;
double r2101441 = -5.570962160288898e-157;
bool r2101442 = r2101428 <= r2101441;
double r2101443 = r2101431 * r2101431;
double r2101444 = r2101428 * r2101428;
double r2101445 = r2101443 + r2101444;
double r2101446 = sqrt(r2101445);
double r2101447 = log(r2101446);
double r2101448 = r2101436 * r2101447;
double r2101449 = cbrt(r2101435);
double r2101450 = log(r2101449);
double r2101451 = r2101436 * r2101450;
double r2101452 = r2101450 + r2101450;
double r2101453 = r2101436 * r2101452;
double r2101454 = r2101451 + r2101453;
double r2101455 = r2101448 / r2101454;
double r2101456 = 4.1911202162953755e-45;
bool r2101457 = r2101428 <= r2101456;
double r2101458 = 1.0;
double r2101459 = r2101436 / r2101433;
double r2101460 = r2101458 / r2101459;
double r2101461 = log(r2101428);
double r2101462 = r2101436 * r2101461;
double r2101463 = r2101462 / r2101439;
double r2101464 = r2101457 ? r2101460 : r2101463;
double r2101465 = r2101442 ? r2101455 : r2101464;
double r2101466 = r2101430 ? r2101440 : r2101465;
return r2101466;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if im < -1.3460069031813118e+154Initial program 62.0
Simplified62.0
Taylor expanded around -inf 51.3
Simplified51.3
rmApplied add-sqr-sqrt51.2
Applied associate-*l*51.2
if -1.3460069031813118e+154 < im < -5.570962160288898e-157Initial program 15.5
Simplified15.5
rmApplied add-cube-cbrt15.5
Applied log-prod15.5
Applied distribute-lft-in15.5
Simplified15.5
if -5.570962160288898e-157 < im < 4.1911202162953755e-45Initial program 26.9
Simplified26.9
Taylor expanded around -inf 9.7
Simplified9.7
rmApplied clear-num9.8
Simplified9.7
if 4.1911202162953755e-45 < im Initial program 36.3
Simplified36.3
Taylor expanded around 0 16.8
Final simplification18.7
herbie shell --seed 2019135
(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))))