\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 -5.306028001854704 \cdot 10^{91}:\\
\;\;\;\;\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 -5.86817855579856565 \cdot 10^{-226}:\\
\;\;\;\;\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{elif}\;re \le 1.0322374213733688 \cdot 10^{-184}:\\
\;\;\;\;\frac{\log im \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 9.218569920511639 \cdot 10^{129}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{{\left(\log base \cdot \log base\right)}^{3} + {\left(0.0 \cdot 0.0\right)}^{3}} \cdot \left(\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{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \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}}\\
\end{array}double f(double re, double im, double base) {
double r222 = re;
double r223 = r222 * r222;
double r224 = im;
double r225 = r224 * r224;
double r226 = r223 + r225;
double r227 = sqrt(r226);
double r228 = log(r227);
double r229 = base;
double r230 = log(r229);
double r231 = r228 * r230;
double r232 = atan2(r224, r222);
double r233 = 0.0;
double r234 = r232 * r233;
double r235 = r231 + r234;
double r236 = r230 * r230;
double r237 = r233 * r233;
double r238 = r236 + r237;
double r239 = r235 / r238;
return r239;
}
double f(double re, double im, double base) {
double r240 = re;
double r241 = -5.306028001854704e+91;
bool r242 = r240 <= r241;
double r243 = -1.0;
double r244 = r243 * r240;
double r245 = log(r244);
double r246 = base;
double r247 = log(r246);
double r248 = r245 * r247;
double r249 = im;
double r250 = atan2(r249, r240);
double r251 = 0.0;
double r252 = r250 * r251;
double r253 = r248 + r252;
double r254 = r247 * r247;
double r255 = r251 * r251;
double r256 = r254 + r255;
double r257 = r253 / r256;
double r258 = -5.868178555798566e-226;
bool r259 = r240 <= r258;
double r260 = 1.0;
double r261 = 2.0;
double r262 = pow(r247, r261);
double r263 = r255 + r262;
double r264 = r240 * r240;
double r265 = r249 * r249;
double r266 = r264 + r265;
double r267 = sqrt(r266);
double r268 = log(r267);
double r269 = r268 * r247;
double r270 = r269 + r252;
double r271 = r263 / r270;
double r272 = r260 / r271;
double r273 = 1.0322374213733688e-184;
bool r274 = r240 <= r273;
double r275 = log(r249);
double r276 = r275 * r247;
double r277 = r276 + r252;
double r278 = r277 / r256;
double r279 = 9.218569920511639e+129;
bool r280 = r240 <= r279;
double r281 = 3.0;
double r282 = pow(r254, r281);
double r283 = pow(r255, r281);
double r284 = r282 + r283;
double r285 = r270 / r284;
double r286 = r254 * r254;
double r287 = r255 * r255;
double r288 = r254 * r255;
double r289 = r287 - r288;
double r290 = r286 + r289;
double r291 = r285 * r290;
double r292 = sqrt(r256);
double r293 = r260 / r292;
double r294 = log(r240);
double r295 = r294 * r247;
double r296 = r295 + r252;
double r297 = r296 / r292;
double r298 = r293 * r297;
double r299 = r280 ? r291 : r298;
double r300 = r274 ? r278 : r299;
double r301 = r259 ? r272 : r300;
double r302 = r242 ? r257 : r301;
return r302;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.306028001854704e+91Initial program 50.0
Taylor expanded around -inf 8.3
if -5.306028001854704e+91 < re < -5.868178555798566e-226Initial program 20.0
rmApplied clear-num20.1
Simplified20.1
if -5.868178555798566e-226 < re < 1.0322374213733688e-184Initial program 31.7
Taylor expanded around 0 34.9
if 1.0322374213733688e-184 < re < 9.218569920511639e+129Initial program 17.9
rmApplied flip3-+18.0
Applied associate-/r/18.0
if 9.218569920511639e+129 < re Initial program 57.5
rmApplied add-sqr-sqrt57.5
Applied *-un-lft-identity57.5
Applied times-frac57.5
Taylor expanded around inf 7.0
Final simplification18.2
herbie shell --seed 2020025
(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))))