\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 r48220 = re;
double r48221 = r48220 * r48220;
double r48222 = im;
double r48223 = r48222 * r48222;
double r48224 = r48221 + r48223;
double r48225 = sqrt(r48224);
double r48226 = log(r48225);
double r48227 = base;
double r48228 = log(r48227);
double r48229 = r48226 * r48228;
double r48230 = atan2(r48222, r48220);
double r48231 = 0.0;
double r48232 = r48230 * r48231;
double r48233 = r48229 + r48232;
double r48234 = r48228 * r48228;
double r48235 = r48231 * r48231;
double r48236 = r48234 + r48235;
double r48237 = r48233 / r48236;
return r48237;
}
double f(double re, double im, double base) {
double r48238 = re;
double r48239 = -8.682521958621949e+108;
bool r48240 = r48238 <= r48239;
double r48241 = -1.0;
double r48242 = r48241 * r48238;
double r48243 = log(r48242);
double r48244 = base;
double r48245 = log(r48244);
double r48246 = r48243 * r48245;
double r48247 = im;
double r48248 = atan2(r48247, r48238);
double r48249 = 0.0;
double r48250 = r48248 * r48249;
double r48251 = r48246 + r48250;
double r48252 = r48245 * r48245;
double r48253 = r48249 * r48249;
double r48254 = r48252 + r48253;
double r48255 = r48251 / r48254;
double r48256 = 3.6965442466504777e+31;
bool r48257 = r48238 <= r48256;
double r48258 = 1.0;
double r48259 = sqrt(r48254);
double r48260 = r48258 / r48259;
double r48261 = r48238 * r48238;
double r48262 = r48247 * r48247;
double r48263 = r48261 + r48262;
double r48264 = sqrt(r48263);
double r48265 = log(r48264);
double r48266 = r48265 * r48245;
double r48267 = r48266 + r48250;
double r48268 = 3.0;
double r48269 = pow(r48252, r48268);
double r48270 = pow(r48253, r48268);
double r48271 = r48269 + r48270;
double r48272 = sqrt(r48271);
double r48273 = r48267 / r48272;
double r48274 = r48252 * r48252;
double r48275 = r48253 * r48253;
double r48276 = r48252 * r48253;
double r48277 = r48275 - r48276;
double r48278 = r48274 + r48277;
double r48279 = sqrt(r48278);
double r48280 = r48273 * r48279;
double r48281 = r48260 * r48280;
double r48282 = r48258 / r48238;
double r48283 = log(r48282);
double r48284 = r48258 / r48244;
double r48285 = log(r48284);
double r48286 = r48283 / r48285;
double r48287 = r48257 ? r48281 : r48286;
double r48288 = r48240 ? r48255 : r48287;
return r48288;
}



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))))