\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 -9.5072677535921829 \cdot 10^{141}:\\
\;\;\;\;\frac{\log \left(-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 1.9789961358533681 \cdot 10^{145}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\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 r44298 = re;
double r44299 = r44298 * r44298;
double r44300 = im;
double r44301 = r44300 * r44300;
double r44302 = r44299 + r44301;
double r44303 = sqrt(r44302);
double r44304 = log(r44303);
double r44305 = base;
double r44306 = log(r44305);
double r44307 = r44304 * r44306;
double r44308 = atan2(r44300, r44298);
double r44309 = 0.0;
double r44310 = r44308 * r44309;
double r44311 = r44307 + r44310;
double r44312 = r44306 * r44306;
double r44313 = r44309 * r44309;
double r44314 = r44312 + r44313;
double r44315 = r44311 / r44314;
return r44315;
}
double f(double re, double im, double base) {
double r44316 = re;
double r44317 = -9.507267753592183e+141;
bool r44318 = r44316 <= r44317;
double r44319 = -r44316;
double r44320 = log(r44319);
double r44321 = base;
double r44322 = log(r44321);
double r44323 = r44320 * r44322;
double r44324 = im;
double r44325 = atan2(r44324, r44316);
double r44326 = 0.0;
double r44327 = r44325 * r44326;
double r44328 = r44323 + r44327;
double r44329 = r44322 * r44322;
double r44330 = r44326 * r44326;
double r44331 = r44329 + r44330;
double r44332 = r44328 / r44331;
double r44333 = 1.978996135853368e+145;
bool r44334 = r44316 <= r44333;
double r44335 = 1.0;
double r44336 = 2.0;
double r44337 = pow(r44322, r44336);
double r44338 = r44330 + r44337;
double r44339 = r44316 * r44316;
double r44340 = r44324 * r44324;
double r44341 = r44339 + r44340;
double r44342 = sqrt(r44341);
double r44343 = log(r44342);
double r44344 = r44343 * r44322;
double r44345 = r44344 + r44327;
double r44346 = r44338 / r44345;
double r44347 = r44335 / r44346;
double r44348 = log(r44316);
double r44349 = -r44348;
double r44350 = -r44322;
double r44351 = r44349 / r44350;
double r44352 = r44334 ? r44347 : r44351;
double r44353 = r44318 ? r44332 : r44352;
return r44353;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -9.507267753592183e+141Initial program 60.0
Taylor expanded around -inf 7.1
Simplified7.1
if -9.507267753592183e+141 < re < 1.978996135853368e+145Initial program 21.0
rmApplied clear-num21.0
Simplified21.0
if 1.978996135853368e+145 < re Initial program 61.6
Taylor expanded around inf 7.3
Simplified7.3
Final simplification17.2
herbie shell --seed 2020042
(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))))