\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}\;re \le -4.976637077884882 \cdot 10^{+106}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le 1.9754095442502022 \cdot 10^{+118}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r2035476 = re;
double r2035477 = r2035476 * r2035476;
double r2035478 = im;
double r2035479 = r2035478 * r2035478;
double r2035480 = r2035477 + r2035479;
double r2035481 = sqrt(r2035480);
double r2035482 = log(r2035481);
double r2035483 = base;
double r2035484 = log(r2035483);
double r2035485 = r2035482 * r2035484;
double r2035486 = atan2(r2035478, r2035476);
double r2035487 = 0.0;
double r2035488 = r2035486 * r2035487;
double r2035489 = r2035485 + r2035488;
double r2035490 = r2035484 * r2035484;
double r2035491 = r2035487 * r2035487;
double r2035492 = r2035490 + r2035491;
double r2035493 = r2035489 / r2035492;
return r2035493;
}
double f(double re, double im, double base) {
double r2035494 = re;
double r2035495 = -4.976637077884882e+106;
bool r2035496 = r2035494 <= r2035495;
double r2035497 = -r2035494;
double r2035498 = log(r2035497);
double r2035499 = base;
double r2035500 = log(r2035499);
double r2035501 = r2035498 / r2035500;
double r2035502 = 1.9754095442502022e+118;
bool r2035503 = r2035494 <= r2035502;
double r2035504 = 1.0;
double r2035505 = im;
double r2035506 = r2035505 * r2035505;
double r2035507 = r2035494 * r2035494;
double r2035508 = r2035506 + r2035507;
double r2035509 = sqrt(r2035508);
double r2035510 = log(r2035509);
double r2035511 = r2035500 / r2035510;
double r2035512 = r2035504 / r2035511;
double r2035513 = log(r2035494);
double r2035514 = r2035513 / r2035500;
double r2035515 = r2035503 ? r2035512 : r2035514;
double r2035516 = r2035496 ? r2035501 : r2035515;
return r2035516;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.976637077884882e+106Initial program 52.4
Simplified52.4
Taylor expanded around -inf 9.6
Simplified9.6
if -4.976637077884882e+106 < re < 1.9754095442502022e+118Initial program 21.0
Simplified20.9
rmApplied clear-num20.9
if 1.9754095442502022e+118 < re Initial program 53.8
Simplified53.8
Taylor expanded around inf 8.4
Final simplification17.2
herbie shell --seed 2019164
(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))))