\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 -1.4788027677282785 \cdot 10^{+98}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le 3.5461239328384627 \cdot 10^{+84}:\\
\;\;\;\;\frac{\log \left(im \cdot im + re \cdot re\right)}{\log base} \cdot \frac{1}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r1751336 = re;
double r1751337 = r1751336 * r1751336;
double r1751338 = im;
double r1751339 = r1751338 * r1751338;
double r1751340 = r1751337 + r1751339;
double r1751341 = sqrt(r1751340);
double r1751342 = log(r1751341);
double r1751343 = base;
double r1751344 = log(r1751343);
double r1751345 = r1751342 * r1751344;
double r1751346 = atan2(r1751338, r1751336);
double r1751347 = 0.0;
double r1751348 = r1751346 * r1751347;
double r1751349 = r1751345 + r1751348;
double r1751350 = r1751344 * r1751344;
double r1751351 = r1751347 * r1751347;
double r1751352 = r1751350 + r1751351;
double r1751353 = r1751349 / r1751352;
return r1751353;
}
double f(double re, double im, double base) {
double r1751354 = re;
double r1751355 = -1.4788027677282785e+98;
bool r1751356 = r1751354 <= r1751355;
double r1751357 = -r1751354;
double r1751358 = log(r1751357);
double r1751359 = base;
double r1751360 = log(r1751359);
double r1751361 = r1751358 / r1751360;
double r1751362 = 3.5461239328384627e+84;
bool r1751363 = r1751354 <= r1751362;
double r1751364 = im;
double r1751365 = r1751364 * r1751364;
double r1751366 = r1751354 * r1751354;
double r1751367 = r1751365 + r1751366;
double r1751368 = log(r1751367);
double r1751369 = r1751368 / r1751360;
double r1751370 = 0.5;
double r1751371 = r1751369 * r1751370;
double r1751372 = log(r1751354);
double r1751373 = r1751372 / r1751360;
double r1751374 = r1751363 ? r1751371 : r1751373;
double r1751375 = r1751356 ? r1751361 : r1751374;
return r1751375;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.4788027677282785e+98Initial program 49.5
Simplified49.5
Taylor expanded around -inf 8.6
Simplified8.6
if -1.4788027677282785e+98 < re < 3.5461239328384627e+84Initial program 21.4
Simplified21.3
rmApplied pow1/221.3
Applied log-pow21.3
Applied associate-/l*21.3
rmApplied div-inv21.3
Simplified21.3
if 3.5461239328384627e+84 < re Initial program 48.5
Simplified48.5
Taylor expanded around inf 10.1
Final simplification17.1
herbie shell --seed 2019168
(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))))