\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 -5.275254560101559411462175113471681690049 \cdot 10^{107}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le -5.075294385511086403393669137145321198483 \cdot 10^{-260}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\
\mathbf{elif}\;re \le 5.119261304077865872839096447879067070764 \cdot 10^{-247}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 9.068500290519522939903073339631522775892 \cdot 10^{138}:\\
\;\;\;\;\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot {\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\frac{1}{3}}\right) \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\
\mathbf{else}:\\
\;\;\;\;-\frac{\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1915473 = re;
double r1915474 = r1915473 * r1915473;
double r1915475 = im;
double r1915476 = r1915475 * r1915475;
double r1915477 = r1915474 + r1915476;
double r1915478 = sqrt(r1915477);
double r1915479 = log(r1915478);
double r1915480 = base;
double r1915481 = log(r1915480);
double r1915482 = r1915479 * r1915481;
double r1915483 = atan2(r1915475, r1915473);
double r1915484 = 0.0;
double r1915485 = r1915483 * r1915484;
double r1915486 = r1915482 + r1915485;
double r1915487 = r1915481 * r1915481;
double r1915488 = r1915484 * r1915484;
double r1915489 = r1915487 + r1915488;
double r1915490 = r1915486 / r1915489;
return r1915490;
}
double f(double re, double im, double base) {
double r1915491 = re;
double r1915492 = -5.2752545601015594e+107;
bool r1915493 = r1915491 <= r1915492;
double r1915494 = -1.0;
double r1915495 = r1915494 / r1915491;
double r1915496 = log(r1915495);
double r1915497 = base;
double r1915498 = log(r1915497);
double r1915499 = r1915496 / r1915498;
double r1915500 = -r1915499;
double r1915501 = -5.0752943855110864e-260;
bool r1915502 = r1915491 <= r1915501;
double r1915503 = 0.0;
double r1915504 = im;
double r1915505 = atan2(r1915504, r1915491);
double r1915506 = r1915503 * r1915505;
double r1915507 = r1915491 * r1915491;
double r1915508 = r1915504 * r1915504;
double r1915509 = r1915507 + r1915508;
double r1915510 = sqrt(r1915509);
double r1915511 = cbrt(r1915510);
double r1915512 = r1915511 * r1915511;
double r1915513 = r1915512 * r1915511;
double r1915514 = log(r1915513);
double r1915515 = r1915498 * r1915514;
double r1915516 = r1915506 + r1915515;
double r1915517 = r1915503 * r1915503;
double r1915518 = r1915498 * r1915498;
double r1915519 = r1915517 + r1915518;
double r1915520 = sqrt(r1915519);
double r1915521 = r1915516 / r1915520;
double r1915522 = 1.0;
double r1915523 = r1915522 / r1915520;
double r1915524 = r1915521 * r1915523;
double r1915525 = 5.119261304077866e-247;
bool r1915526 = r1915491 <= r1915525;
double r1915527 = log(r1915504);
double r1915528 = r1915527 / r1915498;
double r1915529 = 9.068500290519523e+138;
bool r1915530 = r1915491 <= r1915529;
double r1915531 = 0.3333333333333333;
double r1915532 = pow(r1915510, r1915531);
double r1915533 = r1915512 * r1915532;
double r1915534 = log(r1915533);
double r1915535 = r1915534 * r1915498;
double r1915536 = r1915535 + r1915506;
double r1915537 = r1915536 / r1915520;
double r1915538 = r1915537 * r1915523;
double r1915539 = log(r1915491);
double r1915540 = -r1915498;
double r1915541 = r1915539 / r1915540;
double r1915542 = -r1915541;
double r1915543 = r1915530 ? r1915538 : r1915542;
double r1915544 = r1915526 ? r1915528 : r1915543;
double r1915545 = r1915502 ? r1915524 : r1915544;
double r1915546 = r1915493 ? r1915500 : r1915545;
return r1915546;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.2752545601015594e+107Initial program 52.9
Taylor expanded around -inf 64.0
Simplified8.4
if -5.2752545601015594e+107 < re < -5.0752943855110864e-260Initial program 19.9
rmApplied add-sqr-sqrt19.9
Applied *-un-lft-identity19.9
Applied times-frac19.9
rmApplied add-cube-cbrt19.9
if -5.0752943855110864e-260 < re < 5.119261304077866e-247Initial program 32.0
Taylor expanded around 0 33.2
if 5.119261304077866e-247 < re < 9.068500290519523e+138Initial program 19.5
rmApplied add-sqr-sqrt19.5
Applied *-un-lft-identity19.5
Applied times-frac19.5
rmApplied add-cube-cbrt19.5
rmApplied pow1/319.5
if 9.068500290519523e+138 < re Initial program 59.9
Taylor expanded around inf 7.9
Simplified7.9
Final simplification17.5
herbie shell --seed 2019179
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))