\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.038377890163373031226407676473996374442 \cdot 10^{105}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le -5.466683203640612131523745400056625038937 \cdot 10^{-192}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\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 8.706440568089371297402288589381159059454 \cdot 10^{-287}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.336901952420293660317523855842402518014 \cdot 10^{126}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\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 re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r2907514 = re;
double r2907515 = r2907514 * r2907514;
double r2907516 = im;
double r2907517 = r2907516 * r2907516;
double r2907518 = r2907515 + r2907517;
double r2907519 = sqrt(r2907518);
double r2907520 = log(r2907519);
double r2907521 = base;
double r2907522 = log(r2907521);
double r2907523 = r2907520 * r2907522;
double r2907524 = atan2(r2907516, r2907514);
double r2907525 = 0.0;
double r2907526 = r2907524 * r2907525;
double r2907527 = r2907523 + r2907526;
double r2907528 = r2907522 * r2907522;
double r2907529 = r2907525 * r2907525;
double r2907530 = r2907528 + r2907529;
double r2907531 = r2907527 / r2907530;
return r2907531;
}
double f(double re, double im, double base) {
double r2907532 = re;
double r2907533 = -1.038377890163373e+105;
bool r2907534 = r2907532 <= r2907533;
double r2907535 = -1.0;
double r2907536 = r2907535 / r2907532;
double r2907537 = log(r2907536);
double r2907538 = base;
double r2907539 = log(r2907538);
double r2907540 = r2907537 / r2907539;
double r2907541 = -r2907540;
double r2907542 = -5.466683203640612e-192;
bool r2907543 = r2907532 <= r2907542;
double r2907544 = r2907532 * r2907532;
double r2907545 = im;
double r2907546 = r2907545 * r2907545;
double r2907547 = r2907544 + r2907546;
double r2907548 = sqrt(r2907547);
double r2907549 = log(r2907548);
double r2907550 = r2907549 * r2907539;
double r2907551 = 0.0;
double r2907552 = atan2(r2907545, r2907532);
double r2907553 = r2907551 * r2907552;
double r2907554 = r2907550 + r2907553;
double r2907555 = r2907539 * r2907539;
double r2907556 = r2907551 * r2907551;
double r2907557 = r2907555 + r2907556;
double r2907558 = sqrt(r2907557);
double r2907559 = r2907554 / r2907558;
double r2907560 = r2907559 / r2907558;
double r2907561 = 8.706440568089371e-287;
bool r2907562 = r2907532 <= r2907561;
double r2907563 = log(r2907545);
double r2907564 = r2907563 / r2907539;
double r2907565 = 1.3369019524202937e+126;
bool r2907566 = r2907532 <= r2907565;
double r2907567 = log(r2907532);
double r2907568 = -r2907567;
double r2907569 = -r2907539;
double r2907570 = r2907568 / r2907569;
double r2907571 = r2907566 ? r2907560 : r2907570;
double r2907572 = r2907562 ? r2907564 : r2907571;
double r2907573 = r2907543 ? r2907560 : r2907572;
double r2907574 = r2907534 ? r2907541 : r2907573;
return r2907574;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.038377890163373e+105Initial program 52.9
rmApplied div-inv52.9
Taylor expanded around -inf 64.0
Simplified8.4
if -1.038377890163373e+105 < re < -5.466683203640612e-192 or 8.706440568089371e-287 < re < 1.3369019524202937e+126Initial program 19.8
rmApplied add-sqr-sqrt19.8
Applied associate-/r*19.8
if -5.466683203640612e-192 < re < 8.706440568089371e-287Initial program 33.2
Taylor expanded around 0 33.0
if 1.3369019524202937e+126 < re Initial program 57.8
rmApplied div-inv57.8
Taylor expanded around inf 8.2
Simplified8.1
Final simplification17.6
herbie shell --seed 2019200
(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))))