\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.1406590383503345 \cdot 10^{+137}:\\
\;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\
\mathbf{elif}\;im \le -1.7993253634961135:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\
\mathbf{elif}\;im \le 5.015026311023701 \cdot 10^{-89}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;im \le 1410980.4508963278:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\
\mathbf{elif}\;im \le 208838648906585.78:\\
\;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r1455475 = re;
double r1455476 = r1455475 * r1455475;
double r1455477 = im;
double r1455478 = r1455477 * r1455477;
double r1455479 = r1455476 + r1455478;
double r1455480 = sqrt(r1455479);
double r1455481 = log(r1455480);
double r1455482 = base;
double r1455483 = log(r1455482);
double r1455484 = r1455481 * r1455483;
double r1455485 = atan2(r1455477, r1455475);
double r1455486 = 0.0;
double r1455487 = r1455485 * r1455486;
double r1455488 = r1455484 + r1455487;
double r1455489 = r1455483 * r1455483;
double r1455490 = r1455486 * r1455486;
double r1455491 = r1455489 + r1455490;
double r1455492 = r1455488 / r1455491;
return r1455492;
}
double f(double re, double im, double base) {
double r1455493 = im;
double r1455494 = -1.1406590383503345e+137;
bool r1455495 = r1455493 <= r1455494;
double r1455496 = re;
double r1455497 = -r1455496;
double r1455498 = log(r1455497);
double r1455499 = sqrt(r1455498);
double r1455500 = base;
double r1455501 = log(r1455500);
double r1455502 = r1455501 / r1455499;
double r1455503 = r1455499 / r1455502;
double r1455504 = -1.7993253634961135;
bool r1455505 = r1455493 <= r1455504;
double r1455506 = r1455496 * r1455496;
double r1455507 = r1455493 * r1455493;
double r1455508 = r1455506 + r1455507;
double r1455509 = sqrt(r1455508);
double r1455510 = log(r1455509);
double r1455511 = r1455510 / r1455501;
double r1455512 = 5.015026311023701e-89;
bool r1455513 = r1455493 <= r1455512;
double r1455514 = r1455498 / r1455501;
double r1455515 = 1410980.4508963278;
bool r1455516 = r1455493 <= r1455515;
double r1455517 = 208838648906585.78;
bool r1455518 = r1455493 <= r1455517;
double r1455519 = log(r1455493);
double r1455520 = r1455519 / r1455501;
double r1455521 = r1455518 ? r1455503 : r1455520;
double r1455522 = r1455516 ? r1455511 : r1455521;
double r1455523 = r1455513 ? r1455514 : r1455522;
double r1455524 = r1455505 ? r1455511 : r1455523;
double r1455525 = r1455495 ? r1455503 : r1455524;
return r1455525;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if im < -1.1406590383503345e+137 or 1410980.4508963278 < im < 208838648906585.78Initial program 55.5
Simplified55.5
Taylor expanded around -inf 49.2
Simplified49.2
rmApplied associate-/r*49.2
Simplified49.2
rmApplied add-sqr-sqrt49.1
Applied associate-/l*49.1
if -1.1406590383503345e+137 < im < -1.7993253634961135 or 5.015026311023701e-89 < im < 1410980.4508963278Initial program 15.9
Simplified15.9
rmApplied associate-/r*15.8
Simplified15.8
if -1.7993253634961135 < im < 5.015026311023701e-89Initial program 25.0
Simplified25.0
Taylor expanded around -inf 12.0
Simplified12.0
rmApplied associate-/r*12.0
Simplified11.9
if 208838648906585.78 < im Initial program 40.3
Simplified40.3
Taylor expanded around 0 13.0
Final simplification18.4
herbie shell --seed 2019132
(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))))