\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.376053604410897067220854648545447952557 \cdot 10^{96}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le -1.03440523195821972327383930959574559256 \cdot 10^{-234}:\\
\;\;\;\;\frac{1}{\frac{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}{\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 4.104056990699004851788340312269317657369 \cdot 10^{-290}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 2.796818833373207130964587750200495922462 \cdot 10^{113}:\\
\;\;\;\;\frac{1}{\frac{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r39380 = re;
double r39381 = r39380 * r39380;
double r39382 = im;
double r39383 = r39382 * r39382;
double r39384 = r39381 + r39383;
double r39385 = sqrt(r39384);
double r39386 = log(r39385);
double r39387 = base;
double r39388 = log(r39387);
double r39389 = r39386 * r39388;
double r39390 = atan2(r39382, r39380);
double r39391 = 0.0;
double r39392 = r39390 * r39391;
double r39393 = r39389 + r39392;
double r39394 = r39388 * r39388;
double r39395 = r39391 * r39391;
double r39396 = r39394 + r39395;
double r39397 = r39393 / r39396;
return r39397;
}
double f(double re, double im, double base) {
double r39398 = re;
double r39399 = -5.376053604410897e+96;
bool r39400 = r39398 <= r39399;
double r39401 = -1.0;
double r39402 = r39401 / r39398;
double r39403 = log(r39402);
double r39404 = -r39403;
double r39405 = base;
double r39406 = log(r39405);
double r39407 = r39404 / r39406;
double r39408 = -1.0344052319582197e-234;
bool r39409 = r39398 <= r39408;
double r39410 = 1.0;
double r39411 = 2.0;
double r39412 = pow(r39406, r39411);
double r39413 = 0.0;
double r39414 = r39413 * r39413;
double r39415 = r39412 + r39414;
double r39416 = r39398 * r39398;
double r39417 = im;
double r39418 = r39417 * r39417;
double r39419 = r39416 + r39418;
double r39420 = sqrt(r39419);
double r39421 = log(r39420);
double r39422 = r39421 * r39406;
double r39423 = atan2(r39417, r39398);
double r39424 = r39423 * r39413;
double r39425 = r39422 + r39424;
double r39426 = r39415 / r39425;
double r39427 = r39410 / r39426;
double r39428 = 4.104056990699005e-290;
bool r39429 = r39398 <= r39428;
double r39430 = log(r39417);
double r39431 = r39430 / r39406;
double r39432 = 2.796818833373207e+113;
bool r39433 = r39398 <= r39432;
double r39434 = log(r39398);
double r39435 = -r39434;
double r39436 = -r39406;
double r39437 = r39435 / r39436;
double r39438 = r39433 ? r39427 : r39437;
double r39439 = r39429 ? r39431 : r39438;
double r39440 = r39409 ? r39427 : r39439;
double r39441 = r39400 ? r39407 : r39440;
return r39441;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.376053604410897e+96Initial program 51.3
Taylor expanded around -inf 64.0
Simplified9.0
if -5.376053604410897e+96 < re < -1.0344052319582197e-234 or 4.104056990699005e-290 < re < 2.796818833373207e+113Initial program 21.1
rmApplied clear-num21.2
Simplified21.2
if -1.0344052319582197e-234 < re < 4.104056990699005e-290Initial program 30.7
Taylor expanded around 0 34.7
if 2.796818833373207e+113 < re Initial program 53.0
Taylor expanded around inf 7.6
Simplified7.6
Final simplification18.0
herbie shell --seed 2019212
(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))))