\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.7042958239457753 \cdot 10^{88}:\\
\;\;\;\;\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 7.9040050084905754 \cdot 10^{120}:\\
\;\;\;\;\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 \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{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r50088 = re;
double r50089 = r50088 * r50088;
double r50090 = im;
double r50091 = r50090 * r50090;
double r50092 = r50089 + r50091;
double r50093 = sqrt(r50092);
double r50094 = log(r50093);
double r50095 = base;
double r50096 = log(r50095);
double r50097 = r50094 * r50096;
double r50098 = atan2(r50090, r50088);
double r50099 = 0.0;
double r50100 = r50098 * r50099;
double r50101 = r50097 + r50100;
double r50102 = r50096 * r50096;
double r50103 = r50099 * r50099;
double r50104 = r50102 + r50103;
double r50105 = r50101 / r50104;
return r50105;
}
double f(double re, double im, double base) {
double r50106 = re;
double r50107 = -1.7042958239457753e+88;
bool r50108 = r50106 <= r50107;
double r50109 = -1.0;
double r50110 = r50109 * r50106;
double r50111 = log(r50110);
double r50112 = base;
double r50113 = log(r50112);
double r50114 = r50111 * r50113;
double r50115 = im;
double r50116 = atan2(r50115, r50106);
double r50117 = 0.0;
double r50118 = r50116 * r50117;
double r50119 = r50114 + r50118;
double r50120 = r50113 * r50113;
double r50121 = r50117 * r50117;
double r50122 = r50120 + r50121;
double r50123 = r50119 / r50122;
double r50124 = 7.904005008490575e+120;
bool r50125 = r50106 <= r50124;
double r50126 = r50106 * r50106;
double r50127 = r50115 * r50115;
double r50128 = r50126 + r50127;
double r50129 = sqrt(r50128);
double r50130 = log(r50129);
double r50131 = r50130 * r50113;
double r50132 = r50131 + r50118;
double r50133 = 2.0;
double r50134 = cbrt(r50112);
double r50135 = log(r50134);
double r50136 = r50133 * r50135;
double r50137 = r50113 * r50136;
double r50138 = r50113 * r50135;
double r50139 = r50137 + r50138;
double r50140 = r50139 + r50121;
double r50141 = r50132 / r50140;
double r50142 = 1.0;
double r50143 = r50142 / r50106;
double r50144 = log(r50143);
double r50145 = r50142 / r50112;
double r50146 = log(r50145);
double r50147 = r50144 / r50146;
double r50148 = r50125 ? r50141 : r50147;
double r50149 = r50108 ? r50123 : r50148;
return r50149;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.7042958239457753e+88Initial program 51.0
Taylor expanded around -inf 10.1
if -1.7042958239457753e+88 < re < 7.904005008490575e+120Initial program 21.8
rmApplied add-cube-cbrt21.8
Applied log-prod21.8
Applied distribute-lft-in21.8
Simplified21.8
if 7.904005008490575e+120 < re Initial program 55.1
Taylor expanded around inf 7.7
Final simplification17.6
herbie shell --seed 2020062
(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))))