\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 -8.6825219586219489 \cdot 10^{108}:\\
\;\;\;\;\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 3.6965442466504777 \cdot 10^{31}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \left(\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base \cdot \log base\right)}^{3} + {\left(0.0 \cdot 0.0\right)}^{3}}} \cdot \sqrt{\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{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r48272 = re;
double r48273 = r48272 * r48272;
double r48274 = im;
double r48275 = r48274 * r48274;
double r48276 = r48273 + r48275;
double r48277 = sqrt(r48276);
double r48278 = log(r48277);
double r48279 = base;
double r48280 = log(r48279);
double r48281 = r48278 * r48280;
double r48282 = atan2(r48274, r48272);
double r48283 = 0.0;
double r48284 = r48282 * r48283;
double r48285 = r48281 + r48284;
double r48286 = r48280 * r48280;
double r48287 = r48283 * r48283;
double r48288 = r48286 + r48287;
double r48289 = r48285 / r48288;
return r48289;
}
double f(double re, double im, double base) {
double r48290 = re;
double r48291 = -8.682521958621949e+108;
bool r48292 = r48290 <= r48291;
double r48293 = -1.0;
double r48294 = r48293 * r48290;
double r48295 = log(r48294);
double r48296 = base;
double r48297 = log(r48296);
double r48298 = r48295 * r48297;
double r48299 = im;
double r48300 = atan2(r48299, r48290);
double r48301 = 0.0;
double r48302 = r48300 * r48301;
double r48303 = r48298 + r48302;
double r48304 = r48297 * r48297;
double r48305 = r48301 * r48301;
double r48306 = r48304 + r48305;
double r48307 = r48303 / r48306;
double r48308 = 3.6965442466504777e+31;
bool r48309 = r48290 <= r48308;
double r48310 = 1.0;
double r48311 = sqrt(r48306);
double r48312 = r48310 / r48311;
double r48313 = r48290 * r48290;
double r48314 = r48299 * r48299;
double r48315 = r48313 + r48314;
double r48316 = sqrt(r48315);
double r48317 = log(r48316);
double r48318 = r48317 * r48297;
double r48319 = r48318 + r48302;
double r48320 = 3.0;
double r48321 = pow(r48304, r48320);
double r48322 = pow(r48305, r48320);
double r48323 = r48321 + r48322;
double r48324 = sqrt(r48323);
double r48325 = r48319 / r48324;
double r48326 = r48304 * r48304;
double r48327 = r48305 * r48305;
double r48328 = r48304 * r48305;
double r48329 = r48327 - r48328;
double r48330 = r48326 + r48329;
double r48331 = sqrt(r48330);
double r48332 = r48325 * r48331;
double r48333 = r48312 * r48332;
double r48334 = r48310 / r48290;
double r48335 = log(r48334);
double r48336 = r48310 / r48296;
double r48337 = log(r48336);
double r48338 = r48335 / r48337;
double r48339 = r48309 ? r48333 : r48338;
double r48340 = r48292 ? r48307 : r48339;
return r48340;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -8.682521958621949e+108Initial program 53.1
Taylor expanded around -inf 8.9
if -8.682521958621949e+108 < re < 3.6965442466504777e+31Initial program 22.1
rmApplied add-sqr-sqrt22.1
Applied *-un-lft-identity22.1
Applied times-frac22.1
rmApplied flip3-+22.2
Applied sqrt-div22.2
Applied associate-/r/22.2
if 3.6965442466504777e+31 < re Initial program 42.0
Taylor expanded around inf 12.9
Final simplification17.9
herbie shell --seed 2020056
(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))))