\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.737740429468826036821242422394075266484 \cdot 10^{80}:\\
\;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\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 -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 7.657991494094246390438350357954836531877 \cdot 10^{-187}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log im}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 2.131041742296170553673284524057781052093 \cdot 10^{110}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log base - 0.0 \cdot 0.0\right) \cdot \left(\log base \cdot \log base + 0.0 \cdot 0.0\right)} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1526261 = re;
double r1526262 = r1526261 * r1526261;
double r1526263 = im;
double r1526264 = r1526263 * r1526263;
double r1526265 = r1526262 + r1526264;
double r1526266 = sqrt(r1526265);
double r1526267 = log(r1526266);
double r1526268 = base;
double r1526269 = log(r1526268);
double r1526270 = r1526267 * r1526269;
double r1526271 = atan2(r1526263, r1526261);
double r1526272 = 0.0;
double r1526273 = r1526271 * r1526272;
double r1526274 = r1526270 + r1526273;
double r1526275 = r1526269 * r1526269;
double r1526276 = r1526272 * r1526272;
double r1526277 = r1526275 + r1526276;
double r1526278 = r1526274 / r1526277;
return r1526278;
}
double f(double re, double im, double base) {
double r1526279 = re;
double r1526280 = -1.737740429468826e+80;
bool r1526281 = r1526279 <= r1526280;
double r1526282 = im;
double r1526283 = atan2(r1526282, r1526279);
double r1526284 = 0.0;
double r1526285 = r1526283 * r1526284;
double r1526286 = base;
double r1526287 = log(r1526286);
double r1526288 = -r1526279;
double r1526289 = log(r1526288);
double r1526290 = r1526287 * r1526289;
double r1526291 = r1526285 + r1526290;
double r1526292 = r1526287 * r1526287;
double r1526293 = r1526284 * r1526284;
double r1526294 = r1526292 + r1526293;
double r1526295 = sqrt(r1526294);
double r1526296 = r1526291 / r1526295;
double r1526297 = r1526296 / r1526295;
double r1526298 = -3.5661932702760735e-214;
bool r1526299 = r1526279 <= r1526298;
double r1526300 = r1526282 * r1526282;
double r1526301 = r1526279 * r1526279;
double r1526302 = r1526300 + r1526301;
double r1526303 = sqrt(r1526302);
double r1526304 = log(r1526303);
double r1526305 = r1526287 * r1526304;
double r1526306 = r1526305 + r1526285;
double r1526307 = cbrt(r1526286);
double r1526308 = log(r1526307);
double r1526309 = r1526287 * r1526308;
double r1526310 = r1526309 + r1526309;
double r1526311 = r1526309 + r1526310;
double r1526312 = r1526311 + r1526293;
double r1526313 = r1526306 / r1526312;
double r1526314 = 7.657991494094246e-187;
bool r1526315 = r1526279 <= r1526314;
double r1526316 = log(r1526282);
double r1526317 = r1526287 * r1526316;
double r1526318 = r1526285 + r1526317;
double r1526319 = r1526318 / r1526294;
double r1526320 = 2.1310417422961706e+110;
bool r1526321 = r1526279 <= r1526320;
double r1526322 = r1526292 - r1526293;
double r1526323 = r1526322 * r1526294;
double r1526324 = r1526306 / r1526323;
double r1526325 = r1526324 * r1526322;
double r1526326 = log(r1526279);
double r1526327 = -r1526326;
double r1526328 = -r1526287;
double r1526329 = r1526327 / r1526328;
double r1526330 = r1526321 ? r1526325 : r1526329;
double r1526331 = r1526315 ? r1526319 : r1526330;
double r1526332 = r1526299 ? r1526313 : r1526331;
double r1526333 = r1526281 ? r1526297 : r1526332;
return r1526333;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.737740429468826e+80Initial program 47.8
rmApplied add-sqr-sqrt47.8
Applied associate-/r*47.8
Taylor expanded around -inf 10.2
Simplified10.2
if -1.737740429468826e+80 < re < -3.5661932702760735e-214Initial program 19.2
rmApplied add-cube-cbrt19.2
Applied log-prod19.2
Applied distribute-rgt-in19.2
Simplified19.2
if -3.5661932702760735e-214 < re < 7.657991494094246e-187Initial program 31.5
Taylor expanded around 0 33.8
if 7.657991494094246e-187 < re < 2.1310417422961706e+110Initial program 18.0
rmApplied flip-+18.0
Applied associate-/r/18.1
Simplified18.1
if 2.1310417422961706e+110 < re Initial program 52.8
Taylor expanded around inf 8.1
Simplified8.1
Final simplification18.0
herbie shell --seed 2019172
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))