\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 -1.44194331363359153898722401376547239722 \cdot 10^{97}:\\
\;\;\;\;\frac{\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.890586554266742844142806421639049501373 \cdot 10^{52}:\\
\;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r56473 = re;
double r56474 = r56473 * r56473;
double r56475 = im;
double r56476 = r56475 * r56475;
double r56477 = r56474 + r56476;
double r56478 = sqrt(r56477);
double r56479 = log(r56478);
double r56480 = base;
double r56481 = log(r56480);
double r56482 = r56479 * r56481;
double r56483 = atan2(r56475, r56473);
double r56484 = 0.0;
double r56485 = r56483 * r56484;
double r56486 = r56482 + r56485;
double r56487 = r56481 * r56481;
double r56488 = r56484 * r56484;
double r56489 = r56487 + r56488;
double r56490 = r56486 / r56489;
return r56490;
}
double f(double re, double im, double base) {
double r56491 = re;
double r56492 = -1.4419433136335915e+97;
bool r56493 = r56491 <= r56492;
double r56494 = -1.0;
double r56495 = r56494 * r56491;
double r56496 = log(r56495);
double r56497 = base;
double r56498 = log(r56497);
double r56499 = r56496 * r56498;
double r56500 = im;
double r56501 = atan2(r56500, r56491);
double r56502 = 0.0;
double r56503 = r56501 * r56502;
double r56504 = r56499 + r56503;
double r56505 = r56498 * r56498;
double r56506 = r56502 * r56502;
double r56507 = r56505 + r56506;
double r56508 = sqrt(r56507);
double r56509 = r56504 / r56508;
double r56510 = r56509 / r56508;
double r56511 = 1.8905865542667428e+52;
bool r56512 = r56491 <= r56511;
double r56513 = r56491 * r56491;
double r56514 = r56500 * r56500;
double r56515 = r56513 + r56514;
double r56516 = cbrt(r56515);
double r56517 = fabs(r56516);
double r56518 = sqrt(r56516);
double r56519 = r56517 * r56518;
double r56520 = log(r56519);
double r56521 = r56520 * r56498;
double r56522 = r56521 + r56503;
double r56523 = r56522 / r56508;
double r56524 = r56523 / r56508;
double r56525 = 1.0;
double r56526 = r56525 / r56491;
double r56527 = log(r56526);
double r56528 = r56525 / r56497;
double r56529 = log(r56528);
double r56530 = r56527 / r56529;
double r56531 = r56512 ? r56524 : r56530;
double r56532 = r56493 ? r56510 : r56531;
return r56532;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.4419433136335915e+97Initial program 50.7
rmApplied add-sqr-sqrt50.7
Applied associate-/r*50.7
Taylor expanded around -inf 9.0
if -1.4419433136335915e+97 < re < 1.8905865542667428e+52Initial program 21.6
rmApplied add-sqr-sqrt21.6
Applied associate-/r*21.5
rmApplied add-cube-cbrt21.5
Applied sqrt-prod21.5
Simplified21.5
if 1.8905865542667428e+52 < re Initial program 44.6
Taylor expanded around inf 11.2
Final simplification17.4
herbie shell --seed 2019303
(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))))