\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.716637846399996097489746475942839452177 \cdot 10^{89}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le -2.205324998556483236155843263778022896956 \cdot 10^{-213}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.954753201427298447121007035735344988274 \cdot 10^{-192}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.668135135135140487797926891515850101405 \cdot 10^{72}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r38227 = re;
double r38228 = r38227 * r38227;
double r38229 = im;
double r38230 = r38229 * r38229;
double r38231 = r38228 + r38230;
double r38232 = sqrt(r38231);
double r38233 = log(r38232);
double r38234 = base;
double r38235 = log(r38234);
double r38236 = r38233 * r38235;
double r38237 = atan2(r38229, r38227);
double r38238 = 0.0;
double r38239 = r38237 * r38238;
double r38240 = r38236 + r38239;
double r38241 = r38235 * r38235;
double r38242 = r38238 * r38238;
double r38243 = r38241 + r38242;
double r38244 = r38240 / r38243;
return r38244;
}
double f(double re, double im, double base) {
double r38245 = re;
double r38246 = -4.716637846399996e+89;
bool r38247 = r38245 <= r38246;
double r38248 = -1.0;
double r38249 = r38248 / r38245;
double r38250 = log(r38249);
double r38251 = -r38250;
double r38252 = base;
double r38253 = log(r38252);
double r38254 = r38251 / r38253;
double r38255 = -2.2053249985564832e-213;
bool r38256 = r38245 <= r38255;
double r38257 = r38245 * r38245;
double r38258 = im;
double r38259 = r38258 * r38258;
double r38260 = r38257 + r38259;
double r38261 = sqrt(r38260);
double r38262 = log(r38261);
double r38263 = r38262 * r38253;
double r38264 = atan2(r38258, r38245);
double r38265 = 0.0;
double r38266 = r38264 * r38265;
double r38267 = r38263 + r38266;
double r38268 = 2.0;
double r38269 = pow(r38253, r38268);
double r38270 = r38265 * r38265;
double r38271 = r38269 + r38270;
double r38272 = sqrt(r38271);
double r38273 = r38267 / r38272;
double r38274 = r38253 * r38253;
double r38275 = r38274 + r38270;
double r38276 = sqrt(r38275);
double r38277 = r38273 / r38276;
double r38278 = 1.9547532014272984e-192;
bool r38279 = r38245 <= r38278;
double r38280 = log(r38258);
double r38281 = r38280 / r38253;
double r38282 = 1.6681351351351405e+72;
bool r38283 = r38245 <= r38282;
double r38284 = log(r38245);
double r38285 = -r38284;
double r38286 = -r38253;
double r38287 = r38285 / r38286;
double r38288 = r38283 ? r38277 : r38287;
double r38289 = r38279 ? r38281 : r38288;
double r38290 = r38256 ? r38277 : r38289;
double r38291 = r38247 ? r38254 : r38290;
return r38291;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.716637846399996e+89Initial program 50.5
Taylor expanded around -inf 64.0
Simplified10.1
if -4.716637846399996e+89 < re < -2.2053249985564832e-213 or 1.9547532014272984e-192 < re < 1.6681351351351405e+72Initial program 18.3
rmApplied add-sqr-sqrt18.3
Applied associate-/r*18.2
Simplified18.2
if -2.2053249985564832e-213 < re < 1.9547532014272984e-192Initial program 31.1
Taylor expanded around 0 34.4
if 1.6681351351351405e+72 < re Initial program 47.4
Taylor expanded around inf 10.4
Simplified10.4
Final simplification18.1
herbie shell --seed 2019326
(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))))