\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 -6023378.701296393759548664093017578125:\\
\;\;\;\;\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{\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{elif}\;re \le 3.069046101288486435656587842370266310752 \cdot 10^{71}:\\
\;\;\;\;\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{\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{\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}}\\
\end{array}double f(double re, double im, double base) {
double r47230 = re;
double r47231 = r47230 * r47230;
double r47232 = im;
double r47233 = r47232 * r47232;
double r47234 = r47231 + r47233;
double r47235 = sqrt(r47234);
double r47236 = log(r47235);
double r47237 = base;
double r47238 = log(r47237);
double r47239 = r47236 * r47238;
double r47240 = atan2(r47232, r47230);
double r47241 = 0.0;
double r47242 = r47240 * r47241;
double r47243 = r47239 + r47242;
double r47244 = r47238 * r47238;
double r47245 = r47241 * r47241;
double r47246 = r47244 + r47245;
double r47247 = r47243 / r47246;
return r47247;
}
double f(double re, double im, double base) {
double r47248 = re;
double r47249 = -6023378.701296394;
bool r47250 = r47248 <= r47249;
double r47251 = -1.0;
double r47252 = r47251 * r47248;
double r47253 = log(r47252);
double r47254 = base;
double r47255 = log(r47254);
double r47256 = r47253 * r47255;
double r47257 = im;
double r47258 = atan2(r47257, r47248);
double r47259 = 0.0;
double r47260 = r47258 * r47259;
double r47261 = r47256 + r47260;
double r47262 = r47255 * r47255;
double r47263 = r47259 * r47259;
double r47264 = r47262 + r47263;
double r47265 = sqrt(r47264);
double r47266 = r47261 / r47265;
double r47267 = 2.0;
double r47268 = cbrt(r47254);
double r47269 = log(r47268);
double r47270 = r47267 * r47269;
double r47271 = r47255 * r47270;
double r47272 = r47255 * r47269;
double r47273 = r47271 + r47272;
double r47274 = r47273 + r47263;
double r47275 = sqrt(r47274);
double r47276 = r47266 / r47275;
double r47277 = 3.0690461012884864e+71;
bool r47278 = r47248 <= r47277;
double r47279 = r47248 * r47248;
double r47280 = r47257 * r47257;
double r47281 = r47279 + r47280;
double r47282 = sqrt(r47281);
double r47283 = log(r47282);
double r47284 = r47283 * r47255;
double r47285 = r47284 + r47260;
double r47286 = r47285 / r47265;
double r47287 = r47286 / r47275;
double r47288 = log(r47248);
double r47289 = r47288 * r47255;
double r47290 = r47289 + r47260;
double r47291 = r47290 / r47265;
double r47292 = r47291 / r47275;
double r47293 = r47278 ? r47287 : r47292;
double r47294 = r47250 ? r47276 : r47293;
return r47294;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -6023378.701296394Initial program 40.9
rmApplied add-sqr-sqrt40.9
Applied associate-/r*40.9
rmApplied add-cube-cbrt40.9
Applied log-prod40.9
Applied distribute-lft-in40.9
Simplified40.9
Taylor expanded around -inf 13.4
if -6023378.701296394 < re < 3.0690461012884864e+71Initial program 22.7
rmApplied add-sqr-sqrt22.7
Applied associate-/r*22.6
rmApplied add-cube-cbrt22.6
Applied log-prod22.6
Applied distribute-lft-in22.6
Simplified22.6
if 3.0690461012884864e+71 < re Initial program 48.0
rmApplied add-sqr-sqrt48.0
Applied associate-/r*48.0
rmApplied add-cube-cbrt48.0
Applied log-prod48.0
Applied distribute-lft-in48.0
Simplified48.0
Taylor expanded around inf 9.5
Final simplification17.8
herbie shell --seed 2019344
(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))))