\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.678553877806604 \cdot 10^{41}:\\
\;\;\;\;\frac{1}{\frac{-\log base}{\log \left(\frac{-1}{re}\right)}}\\
\mathbf{elif}\;re \le 4.69081280904729871 \cdot 10^{-246}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{elif}\;re \le 4.4235180232042555 \cdot 10^{-227} \lor \neg \left(re \le 6.589229227697289 \cdot 10^{74}\right):\\
\;\;\;\;\frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\end{array}double f(double re, double im, double base) {
double r53448 = re;
double r53449 = r53448 * r53448;
double r53450 = im;
double r53451 = r53450 * r53450;
double r53452 = r53449 + r53451;
double r53453 = sqrt(r53452);
double r53454 = log(r53453);
double r53455 = base;
double r53456 = log(r53455);
double r53457 = r53454 * r53456;
double r53458 = atan2(r53450, r53448);
double r53459 = 0.0;
double r53460 = r53458 * r53459;
double r53461 = r53457 + r53460;
double r53462 = r53456 * r53456;
double r53463 = r53459 * r53459;
double r53464 = r53462 + r53463;
double r53465 = r53461 / r53464;
return r53465;
}
double f(double re, double im, double base) {
double r53466 = re;
double r53467 = -3.6785538778066045e+41;
bool r53468 = r53466 <= r53467;
double r53469 = 1.0;
double r53470 = base;
double r53471 = log(r53470);
double r53472 = -r53471;
double r53473 = -1.0;
double r53474 = r53473 / r53466;
double r53475 = log(r53474);
double r53476 = r53472 / r53475;
double r53477 = r53469 / r53476;
double r53478 = 4.690812809047299e-246;
bool r53479 = r53466 <= r53478;
double r53480 = 0.0;
double r53481 = r53480 * r53480;
double r53482 = 2.0;
double r53483 = pow(r53471, r53482);
double r53484 = r53481 + r53483;
double r53485 = r53466 * r53466;
double r53486 = im;
double r53487 = r53486 * r53486;
double r53488 = r53485 + r53487;
double r53489 = sqrt(r53488);
double r53490 = log(r53489);
double r53491 = r53490 * r53471;
double r53492 = atan2(r53486, r53466);
double r53493 = r53492 * r53480;
double r53494 = r53491 + r53493;
double r53495 = r53484 / r53494;
double r53496 = r53469 / r53495;
double r53497 = 4.423518023204255e-227;
bool r53498 = r53466 <= r53497;
double r53499 = 6.589229227697289e+74;
bool r53500 = r53466 <= r53499;
double r53501 = !r53500;
bool r53502 = r53498 || r53501;
double r53503 = log(r53466);
double r53504 = r53503 * r53471;
double r53505 = r53504 + r53493;
double r53506 = cbrt(r53470);
double r53507 = log(r53506);
double r53508 = r53482 * r53507;
double r53509 = r53471 * r53508;
double r53510 = r53471 * r53507;
double r53511 = r53509 + r53510;
double r53512 = r53511 + r53481;
double r53513 = r53505 / r53512;
double r53514 = r53494 / r53512;
double r53515 = r53502 ? r53513 : r53514;
double r53516 = r53479 ? r53496 : r53515;
double r53517 = r53468 ? r53477 : r53516;
return r53517;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.6785538778066045e+41Initial program 43.6
rmApplied clear-num43.6
Simplified43.6
Taylor expanded around -inf 64.0
Simplified11.4
if -3.6785538778066045e+41 < re < 4.690812809047299e-246Initial program 23.8
rmApplied clear-num23.8
Simplified23.8
if 4.690812809047299e-246 < re < 4.423518023204255e-227 or 6.589229227697289e+74 < re Initial program 46.5
rmApplied add-cube-cbrt46.6
Applied log-prod46.6
Applied distribute-lft-in46.6
Simplified46.6
Taylor expanded around inf 13.5
if 4.423518023204255e-227 < re < 6.589229227697289e+74Initial program 20.4
rmApplied add-cube-cbrt20.4
Applied log-prod20.4
Applied distribute-lft-in20.4
Simplified20.4
Final simplification18.1
herbie shell --seed 2020046
(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))))