\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 -7.372567035776090427164126120743111128469 \cdot 10^{124}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 5.828695856258045788380832205806950804563 \cdot 10^{93}:\\
\;\;\;\;\frac{1}{\frac{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{-\log base}{-\log re}}\\
\end{array}double f(double re, double im, double base) {
double r97227 = re;
double r97228 = r97227 * r97227;
double r97229 = im;
double r97230 = r97229 * r97229;
double r97231 = r97228 + r97230;
double r97232 = sqrt(r97231);
double r97233 = log(r97232);
double r97234 = base;
double r97235 = log(r97234);
double r97236 = r97233 * r97235;
double r97237 = atan2(r97229, r97227);
double r97238 = 0.0;
double r97239 = r97237 * r97238;
double r97240 = r97236 + r97239;
double r97241 = r97235 * r97235;
double r97242 = r97238 * r97238;
double r97243 = r97241 + r97242;
double r97244 = r97240 / r97243;
return r97244;
}
double f(double re, double im, double base) {
double r97245 = re;
double r97246 = -7.37256703577609e+124;
bool r97247 = r97245 <= r97246;
double r97248 = -1.0;
double r97249 = r97248 / r97245;
double r97250 = log(r97249);
double r97251 = -r97250;
double r97252 = base;
double r97253 = log(r97252);
double r97254 = r97251 / r97253;
double r97255 = 5.828695856258046e+93;
bool r97256 = r97245 <= r97255;
double r97257 = 1.0;
double r97258 = 2.0;
double r97259 = pow(r97253, r97258);
double r97260 = 0.0;
double r97261 = r97260 * r97260;
double r97262 = r97259 + r97261;
double r97263 = r97245 * r97245;
double r97264 = im;
double r97265 = r97264 * r97264;
double r97266 = r97263 + r97265;
double r97267 = sqrt(r97266);
double r97268 = log(r97267);
double r97269 = r97268 * r97253;
double r97270 = atan2(r97264, r97245);
double r97271 = r97270 * r97260;
double r97272 = r97269 + r97271;
double r97273 = r97262 / r97272;
double r97274 = r97257 / r97273;
double r97275 = -r97253;
double r97276 = log(r97245);
double r97277 = -r97276;
double r97278 = r97275 / r97277;
double r97279 = r97257 / r97278;
double r97280 = r97256 ? r97274 : r97279;
double r97281 = r97247 ? r97254 : r97280;
return r97281;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -7.37256703577609e+124Initial program 56.6
Taylor expanded around -inf 64.0
Simplified7.7
if -7.37256703577609e+124 < re < 5.828695856258046e+93Initial program 21.6
rmApplied clear-num21.6
Simplified21.6
if 5.828695856258046e+93 < re Initial program 50.0
rmApplied clear-num50.0
Simplified50.0
Taylor expanded around inf 9.0
Simplified9.0
Final simplification17.3
herbie shell --seed 2019347
(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))))