\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 -1.97688285622801022 \cdot 10^{55}:\\
\;\;\;\;\frac{\frac{\log \left(-1 \cdot re\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{elif}\;re \le -6.632251258880961 \cdot 10^{-245}:\\
\;\;\;\;\frac{\frac{{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right)}^{3} + {\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}^{3}}{\log base \cdot \log base + 0.0 \cdot 0.0}}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) + \left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) - \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)\right)}\\
\mathbf{elif}\;re \le -5.9140865977584641 \cdot 10^{-298}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 9.527329133926756 \cdot 10^{137}:\\
\;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\log re \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}}\\
\end{array}double f(double re, double im, double base) {
double r42258 = re;
double r42259 = r42258 * r42258;
double r42260 = im;
double r42261 = r42260 * r42260;
double r42262 = r42259 + r42261;
double r42263 = sqrt(r42262);
double r42264 = log(r42263);
double r42265 = base;
double r42266 = log(r42265);
double r42267 = r42264 * r42266;
double r42268 = atan2(r42260, r42258);
double r42269 = 0.0;
double r42270 = r42268 * r42269;
double r42271 = r42267 + r42270;
double r42272 = r42266 * r42266;
double r42273 = r42269 * r42269;
double r42274 = r42272 + r42273;
double r42275 = r42271 / r42274;
return r42275;
}
double f(double re, double im, double base) {
double r42276 = re;
double r42277 = -1.9768828562280102e+55;
bool r42278 = r42276 <= r42277;
double r42279 = -1.0;
double r42280 = r42279 * r42276;
double r42281 = log(r42280);
double r42282 = base;
double r42283 = log(r42282);
double r42284 = r42281 * r42283;
double r42285 = im;
double r42286 = atan2(r42285, r42276);
double r42287 = 0.0;
double r42288 = r42286 * r42287;
double r42289 = r42284 + r42288;
double r42290 = r42283 * r42283;
double r42291 = r42287 * r42287;
double r42292 = r42290 + r42291;
double r42293 = sqrt(r42292);
double r42294 = r42289 / r42293;
double r42295 = r42294 / r42293;
double r42296 = -6.632251258880961e-245;
bool r42297 = r42276 <= r42296;
double r42298 = r42276 * r42276;
double r42299 = r42285 * r42285;
double r42300 = r42298 + r42299;
double r42301 = sqrt(r42300);
double r42302 = log(r42301);
double r42303 = r42302 * r42283;
double r42304 = 3.0;
double r42305 = pow(r42303, r42304);
double r42306 = pow(r42288, r42304);
double r42307 = r42305 + r42306;
double r42308 = r42307 / r42292;
double r42309 = r42303 * r42303;
double r42310 = r42288 * r42288;
double r42311 = r42303 * r42288;
double r42312 = r42310 - r42311;
double r42313 = r42309 + r42312;
double r42314 = r42308 / r42313;
double r42315 = -5.914086597758464e-298;
bool r42316 = r42276 <= r42315;
double r42317 = log(r42285);
double r42318 = r42317 / r42283;
double r42319 = 9.527329133926756e+137;
bool r42320 = r42276 <= r42319;
double r42321 = r42303 + r42288;
double r42322 = 1.0;
double r42323 = 2.0;
double r42324 = cbrt(r42282);
double r42325 = log(r42324);
double r42326 = r42323 * r42325;
double r42327 = r42283 * r42326;
double r42328 = r42283 * r42325;
double r42329 = r42327 + r42328;
double r42330 = r42329 + r42291;
double r42331 = r42322 / r42330;
double r42332 = r42321 * r42331;
double r42333 = log(r42276);
double r42334 = r42333 * r42283;
double r42335 = r42334 + r42288;
double r42336 = r42335 / r42293;
double r42337 = r42336 / r42293;
double r42338 = r42320 ? r42332 : r42337;
double r42339 = r42316 ? r42318 : r42338;
double r42340 = r42297 ? r42314 : r42339;
double r42341 = r42278 ? r42295 : r42340;
return r42341;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.9768828562280102e+55Initial program 44.6
rmApplied add-sqr-sqrt44.6
Applied associate-/r*44.6
Taylor expanded around -inf 11.5
if -1.9768828562280102e+55 < re < -6.632251258880961e-245Initial program 20.6
rmApplied div-inv20.6
rmApplied flip3-+20.7
Applied associate-*l/20.7
Simplified20.7
if -6.632251258880961e-245 < re < -5.914086597758464e-298Initial program 30.4
Taylor expanded around 0 35.7
if -5.914086597758464e-298 < re < 9.527329133926756e+137Initial program 21.7
rmApplied div-inv21.7
rmApplied add-cube-cbrt21.7
Applied log-prod21.7
Applied distribute-lft-in21.8
Simplified21.8
if 9.527329133926756e+137 < re Initial program 59.4
rmApplied add-sqr-sqrt59.4
Applied associate-/r*59.4
Taylor expanded around inf 7.8
Final simplification18.1
herbie shell --seed 2020036
(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))))