\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 -7.514082888019677398791758729267083410018 \cdot 10^{82}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 470151434408140391610360774262784:\\
\;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r39439 = re;
double r39440 = r39439 * r39439;
double r39441 = im;
double r39442 = r39441 * r39441;
double r39443 = r39440 + r39442;
double r39444 = sqrt(r39443);
double r39445 = log(r39444);
double r39446 = base;
double r39447 = log(r39446);
double r39448 = r39445 * r39447;
double r39449 = atan2(r39441, r39439);
double r39450 = 0.0;
double r39451 = r39449 * r39450;
double r39452 = r39448 + r39451;
double r39453 = r39447 * r39447;
double r39454 = r39450 * r39450;
double r39455 = r39453 + r39454;
double r39456 = r39452 / r39455;
return r39456;
}
double f(double re, double im, double base) {
double r39457 = re;
double r39458 = -7.514082888019677e+82;
bool r39459 = r39457 <= r39458;
double r39460 = -1.0;
double r39461 = r39460 / r39457;
double r39462 = log(r39461);
double r39463 = -r39462;
double r39464 = base;
double r39465 = log(r39464);
double r39466 = r39463 / r39465;
double r39467 = 4.701514344081404e+32;
bool r39468 = r39457 <= r39467;
double r39469 = r39457 * r39457;
double r39470 = im;
double r39471 = r39470 * r39470;
double r39472 = r39469 + r39471;
double r39473 = sqrt(r39472);
double r39474 = log(r39473);
double r39475 = r39474 * r39465;
double r39476 = atan2(r39470, r39457);
double r39477 = 0.0;
double r39478 = r39476 * r39477;
double r39479 = r39475 + r39478;
double r39480 = 1.0;
double r39481 = 2.0;
double r39482 = pow(r39465, r39481);
double r39483 = r39477 * r39477;
double r39484 = r39482 + r39483;
double r39485 = r39480 / r39484;
double r39486 = r39479 * r39485;
double r39487 = log(r39457);
double r39488 = -r39487;
double r39489 = -r39465;
double r39490 = r39488 / r39489;
double r39491 = r39468 ? r39486 : r39490;
double r39492 = r39459 ? r39466 : r39491;
return r39492;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -7.514082888019677e+82Initial program 49.3
rmApplied div-inv49.4
Simplified49.4
Taylor expanded around -inf 64.0
Simplified9.4
if -7.514082888019677e+82 < re < 4.701514344081404e+32Initial program 22.5
rmApplied div-inv22.5
Simplified22.5
if 4.701514344081404e+32 < re Initial program 44.5
Taylor expanded around inf 12.6
Simplified12.6
Final simplification17.9
herbie shell --seed 2019350
(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))))