\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 -4.770818586350099100842053924431423433583 \cdot 10^{91}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.80475852115182665718096204373417743265 \cdot 10^{92}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\log \left(\frac{1}{base}\right)}{\log \left(\frac{1}{re}\right)}}\\
\end{array}double f(double re, double im, double base) {
double r100248 = re;
double r100249 = r100248 * r100248;
double r100250 = im;
double r100251 = r100250 * r100250;
double r100252 = r100249 + r100251;
double r100253 = sqrt(r100252);
double r100254 = log(r100253);
double r100255 = base;
double r100256 = log(r100255);
double r100257 = r100254 * r100256;
double r100258 = atan2(r100250, r100248);
double r100259 = 0.0;
double r100260 = r100258 * r100259;
double r100261 = r100257 + r100260;
double r100262 = r100256 * r100256;
double r100263 = r100259 * r100259;
double r100264 = r100262 + r100263;
double r100265 = r100261 / r100264;
return r100265;
}
double f(double re, double im, double base) {
double r100266 = re;
double r100267 = -4.770818586350099e+91;
bool r100268 = r100266 <= r100267;
double r100269 = 1.0;
double r100270 = 0.0;
double r100271 = r100270 * r100270;
double r100272 = base;
double r100273 = log(r100272);
double r100274 = 2.0;
double r100275 = pow(r100273, r100274);
double r100276 = r100271 + r100275;
double r100277 = -1.0;
double r100278 = r100277 * r100266;
double r100279 = log(r100278);
double r100280 = r100279 * r100273;
double r100281 = im;
double r100282 = atan2(r100281, r100266);
double r100283 = r100282 * r100270;
double r100284 = r100280 + r100283;
double r100285 = r100276 / r100284;
double r100286 = r100269 / r100285;
double r100287 = 1.8047585211518267e+92;
bool r100288 = r100266 <= r100287;
double r100289 = r100266 * r100266;
double r100290 = r100281 * r100281;
double r100291 = r100289 + r100290;
double r100292 = sqrt(r100291);
double r100293 = log(r100292);
double r100294 = r100293 * r100273;
double r100295 = r100294 + r100283;
double r100296 = r100273 * r100273;
double r100297 = r100296 + r100271;
double r100298 = sqrt(r100297);
double r100299 = r100295 / r100298;
double r100300 = r100299 / r100298;
double r100301 = r100269 / r100272;
double r100302 = log(r100301);
double r100303 = r100269 / r100266;
double r100304 = log(r100303);
double r100305 = r100302 / r100304;
double r100306 = r100269 / r100305;
double r100307 = r100288 ? r100300 : r100306;
double r100308 = r100268 ? r100286 : r100307;
return r100308;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.770818586350099e+91Initial program 49.4
rmApplied clear-num49.4
Simplified49.4
Taylor expanded around -inf 8.6
if -4.770818586350099e+91 < re < 1.8047585211518267e+92Initial program 21.8
rmApplied add-sqr-sqrt21.8
Applied associate-/r*21.7
if 1.8047585211518267e+92 < re Initial program 50.3
rmApplied clear-num50.3
Simplified50.3
Taylor expanded around inf 7.8
Final simplification17.0
herbie shell --seed 2019356
(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))))