\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.306028001854704 \cdot 10^{91}:\\
\;\;\;\;\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le -5.86817855579856565 \cdot 10^{-226}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.0322374213733688 \cdot 10^{-184}:\\
\;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 9.218569920511639 \cdot 10^{129}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{{\left(\log base \cdot \log base\right)}^{3} + {\left(0.0 \cdot 0.0\right)}^{3}} \cdot \left(\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right) + \left(\left(0.0 \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0\right) - \left(\log base \cdot \log base\right) \cdot \left(0.0 \cdot 0.0\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\end{array}double f(double re, double im, double base) {
double r45325 = re;
double r45326 = r45325 * r45325;
double r45327 = im;
double r45328 = r45327 * r45327;
double r45329 = r45326 + r45328;
double r45330 = sqrt(r45329);
double r45331 = log(r45330);
double r45332 = base;
double r45333 = log(r45332);
double r45334 = r45331 * r45333;
double r45335 = atan2(r45327, r45325);
double r45336 = 0.0;
double r45337 = r45335 * r45336;
double r45338 = r45334 + r45337;
double r45339 = r45333 * r45333;
double r45340 = r45336 * r45336;
double r45341 = r45339 + r45340;
double r45342 = r45338 / r45341;
return r45342;
}
double f(double re, double im, double base) {
double r45343 = re;
double r45344 = -5.306028001854704e+91;
bool r45345 = r45343 <= r45344;
double r45346 = -1.0;
double r45347 = r45346 * r45343;
double r45348 = log(r45347);
double r45349 = base;
double r45350 = log(r45349);
double r45351 = r45348 * r45350;
double r45352 = im;
double r45353 = atan2(r45352, r45343);
double r45354 = 0.0;
double r45355 = r45353 * r45354;
double r45356 = r45351 + r45355;
double r45357 = r45350 * r45350;
double r45358 = r45354 * r45354;
double r45359 = r45357 + r45358;
double r45360 = r45356 / r45359;
double r45361 = -5.868178555798566e-226;
bool r45362 = r45343 <= r45361;
double r45363 = 1.0;
double r45364 = 2.0;
double r45365 = pow(r45350, r45364);
double r45366 = r45358 + r45365;
double r45367 = r45343 * r45343;
double r45368 = r45352 * r45352;
double r45369 = r45367 + r45368;
double r45370 = sqrt(r45369);
double r45371 = log(r45370);
double r45372 = r45371 * r45350;
double r45373 = r45372 + r45355;
double r45374 = r45366 / r45373;
double r45375 = r45363 / r45374;
double r45376 = 1.0322374213733688e-184;
bool r45377 = r45343 <= r45376;
double r45378 = log(r45352);
double r45379 = r45378 * r45350;
double r45380 = r45379 + r45355;
double r45381 = r45380 / r45359;
double r45382 = 9.218569920511639e+129;
bool r45383 = r45343 <= r45382;
double r45384 = 3.0;
double r45385 = pow(r45357, r45384);
double r45386 = pow(r45358, r45384);
double r45387 = r45385 + r45386;
double r45388 = r45373 / r45387;
double r45389 = r45357 * r45357;
double r45390 = r45358 * r45358;
double r45391 = r45357 * r45358;
double r45392 = r45390 - r45391;
double r45393 = r45389 + r45392;
double r45394 = r45388 * r45393;
double r45395 = sqrt(r45359);
double r45396 = r45363 / r45395;
double r45397 = log(r45343);
double r45398 = r45397 * r45350;
double r45399 = r45398 + r45355;
double r45400 = r45399 / r45395;
double r45401 = r45396 * r45400;
double r45402 = r45383 ? r45394 : r45401;
double r45403 = r45377 ? r45381 : r45402;
double r45404 = r45362 ? r45375 : r45403;
double r45405 = r45345 ? r45360 : r45404;
return r45405;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.306028001854704e+91Initial program 50.0
Taylor expanded around -inf 8.3
if -5.306028001854704e+91 < re < -5.868178555798566e-226Initial program 20.0
rmApplied clear-num20.1
Simplified20.1
if -5.868178555798566e-226 < re < 1.0322374213733688e-184Initial program 31.7
Taylor expanded around 0 34.9
if 1.0322374213733688e-184 < re < 9.218569920511639e+129Initial program 17.9
rmApplied flip3-+18.0
Applied associate-/r/18.0
if 9.218569920511639e+129 < re Initial program 57.5
rmApplied add-sqr-sqrt57.5
Applied *-un-lft-identity57.5
Applied times-frac57.5
Taylor expanded around inf 7.0
Final simplification18.2
herbie shell --seed 2020025
(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))))