\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.03956723925942709 \cdot 10^{103}:\\
\;\;\;\;\frac{1}{\sqrt{\sqrt[3]{{\left(\log base\right)}^{6}} + 0.0 \cdot 0.0}} \cdot \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}}\\
\mathbf{elif}\;re \le -6.37440255965590493 \cdot 10^{-279}:\\
\;\;\;\;\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}\\
\mathbf{elif}\;re \le 8.0032969337860817 \cdot 10^{-168}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.0657693485277471 \cdot 10^{114}:\\
\;\;\;\;\frac{1}{\sqrt{\sqrt[3]{{\left(\log base\right)}^{6}} + 0.0 \cdot 0.0}} \cdot \frac{\log \left(\sqrt{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}}\\
\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 r47419 = re;
double r47420 = r47419 * r47419;
double r47421 = im;
double r47422 = r47421 * r47421;
double r47423 = r47420 + r47422;
double r47424 = sqrt(r47423);
double r47425 = log(r47424);
double r47426 = base;
double r47427 = log(r47426);
double r47428 = r47425 * r47427;
double r47429 = atan2(r47421, r47419);
double r47430 = 0.0;
double r47431 = r47429 * r47430;
double r47432 = r47428 + r47431;
double r47433 = r47427 * r47427;
double r47434 = r47430 * r47430;
double r47435 = r47433 + r47434;
double r47436 = r47432 / r47435;
return r47436;
}
double f(double re, double im, double base) {
double r47437 = re;
double r47438 = -1.039567239259427e+103;
bool r47439 = r47437 <= r47438;
double r47440 = 1.0;
double r47441 = base;
double r47442 = log(r47441);
double r47443 = 6.0;
double r47444 = pow(r47442, r47443);
double r47445 = cbrt(r47444);
double r47446 = 0.0;
double r47447 = r47446 * r47446;
double r47448 = r47445 + r47447;
double r47449 = sqrt(r47448);
double r47450 = r47440 / r47449;
double r47451 = -1.0;
double r47452 = r47451 * r47437;
double r47453 = log(r47452);
double r47454 = r47453 * r47442;
double r47455 = im;
double r47456 = atan2(r47455, r47437);
double r47457 = r47456 * r47446;
double r47458 = r47454 + r47457;
double r47459 = r47442 * r47442;
double r47460 = r47459 + r47447;
double r47461 = sqrt(r47460);
double r47462 = r47458 / r47461;
double r47463 = r47450 * r47462;
double r47464 = -6.374402559655905e-279;
bool r47465 = r47437 <= r47464;
double r47466 = r47437 * r47437;
double r47467 = r47455 * r47455;
double r47468 = r47466 + r47467;
double r47469 = sqrt(r47468);
double r47470 = log(r47469);
double r47471 = r47470 * r47442;
double r47472 = r47471 + r47457;
double r47473 = 2.0;
double r47474 = cbrt(r47441);
double r47475 = log(r47474);
double r47476 = r47473 * r47475;
double r47477 = r47442 * r47476;
double r47478 = r47442 * r47475;
double r47479 = r47477 + r47478;
double r47480 = r47479 + r47447;
double r47481 = r47472 / r47480;
double r47482 = 8.003296933786082e-168;
bool r47483 = r47437 <= r47482;
double r47484 = log(r47455);
double r47485 = r47484 / r47442;
double r47486 = 1.0657693485277471e+114;
bool r47487 = r47437 <= r47486;
double r47488 = r47472 / r47461;
double r47489 = r47450 * r47488;
double r47490 = r47440 / r47437;
double r47491 = log(r47490);
double r47492 = r47440 / r47441;
double r47493 = log(r47492);
double r47494 = r47491 / r47493;
double r47495 = r47487 ? r47489 : r47494;
double r47496 = r47483 ? r47485 : r47495;
double r47497 = r47465 ? r47481 : r47496;
double r47498 = r47439 ? r47463 : r47497;
return r47498;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.039567239259427e+103Initial program 52.6
rmApplied add-sqr-sqrt52.6
Applied *-un-lft-identity52.6
Applied times-frac52.6
rmApplied add-cbrt-cube52.6
Applied add-cbrt-cube52.6
Applied cbrt-unprod52.6
Simplified52.6
Taylor expanded around -inf 9.5
if -1.039567239259427e+103 < re < -6.374402559655905e-279Initial program 21.1
rmApplied add-cube-cbrt21.1
Applied log-prod21.1
Applied distribute-lft-in21.1
Simplified21.1
if -6.374402559655905e-279 < re < 8.003296933786082e-168Initial program 31.9
Taylor expanded around 0 36.3
if 8.003296933786082e-168 < re < 1.0657693485277471e+114Initial program 17.1
rmApplied add-sqr-sqrt17.1
Applied *-un-lft-identity17.1
Applied times-frac17.1
rmApplied add-cbrt-cube17.2
Applied add-cbrt-cube17.3
Applied cbrt-unprod17.2
Simplified17.2
if 1.0657693485277471e+114 < re Initial program 55.7
Taylor expanded around inf 9.1
Final simplification18.4
herbie shell --seed 2020039
(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))))