\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.4702290859562653754013000213245692038 \cdot 10^{113}:\\
\;\;\;\;\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 -1.607695456247534001972433141424386115394 \cdot 10^{-186}:\\
\;\;\;\;\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}} \cdot \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.791830782571059225299768583227875412425 \cdot 10^{-180}:\\
\;\;\;\;\frac{1}{\sqrt{{\left(\log base \cdot \log base\right)}^{3} + {\left(0.0 \cdot 0.0\right)}^{3}}} \cdot \left(\sqrt{\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)} \cdot \frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\right)\\
\mathbf{elif}\;re \le 1.230336623445155882199636404066337824284 \cdot 10^{145}:\\
\;\;\;\;\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 \cdot \log base\right) \cdot \left(\log base \cdot \log base\right) - \left(0.0 \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0\right)} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \sqrt{\log base \cdot \log base - 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 r43122 = re;
double r43123 = r43122 * r43122;
double r43124 = im;
double r43125 = r43124 * r43124;
double r43126 = r43123 + r43125;
double r43127 = sqrt(r43126);
double r43128 = log(r43127);
double r43129 = base;
double r43130 = log(r43129);
double r43131 = r43128 * r43130;
double r43132 = atan2(r43124, r43122);
double r43133 = 0.0;
double r43134 = r43132 * r43133;
double r43135 = r43131 + r43134;
double r43136 = r43130 * r43130;
double r43137 = r43133 * r43133;
double r43138 = r43136 + r43137;
double r43139 = r43135 / r43138;
return r43139;
}
double f(double re, double im, double base) {
double r43140 = re;
double r43141 = -1.4702290859562654e+113;
bool r43142 = r43140 <= r43141;
double r43143 = -1.0;
double r43144 = r43143 * r43140;
double r43145 = log(r43144);
double r43146 = base;
double r43147 = log(r43146);
double r43148 = r43145 * r43147;
double r43149 = im;
double r43150 = atan2(r43149, r43140);
double r43151 = 0.0;
double r43152 = r43150 * r43151;
double r43153 = r43148 + r43152;
double r43154 = r43147 * r43147;
double r43155 = r43151 * r43151;
double r43156 = r43154 + r43155;
double r43157 = r43153 / r43156;
double r43158 = -1.607695456247534e-186;
bool r43159 = r43140 <= r43158;
double r43160 = 1.0;
double r43161 = 2.0;
double r43162 = pow(r43147, r43161);
double r43163 = r43162 + r43155;
double r43164 = sqrt(r43163);
double r43165 = r43160 / r43164;
double r43166 = r43140 * r43140;
double r43167 = r43149 * r43149;
double r43168 = r43166 + r43167;
double r43169 = sqrt(r43168);
double r43170 = log(r43169);
double r43171 = r43170 * r43147;
double r43172 = r43171 + r43152;
double r43173 = sqrt(r43156);
double r43174 = r43172 / r43173;
double r43175 = r43165 * r43174;
double r43176 = 1.7918307825710592e-180;
bool r43177 = r43140 <= r43176;
double r43178 = 3.0;
double r43179 = pow(r43154, r43178);
double r43180 = pow(r43155, r43178);
double r43181 = r43179 + r43180;
double r43182 = sqrt(r43181);
double r43183 = r43160 / r43182;
double r43184 = r43154 * r43154;
double r43185 = r43155 * r43155;
double r43186 = r43154 * r43155;
double r43187 = r43185 - r43186;
double r43188 = r43184 + r43187;
double r43189 = sqrt(r43188);
double r43190 = log(r43149);
double r43191 = r43190 * r43147;
double r43192 = r43191 + r43152;
double r43193 = r43192 / r43173;
double r43194 = r43189 * r43193;
double r43195 = r43183 * r43194;
double r43196 = 1.2303366234451559e+145;
bool r43197 = r43140 <= r43196;
double r43198 = r43184 - r43185;
double r43199 = sqrt(r43198);
double r43200 = r43199 * r43173;
double r43201 = r43172 / r43200;
double r43202 = r43154 - r43155;
double r43203 = sqrt(r43202);
double r43204 = r43201 * r43203;
double r43205 = r43160 / r43140;
double r43206 = log(r43205);
double r43207 = r43160 / r43146;
double r43208 = log(r43207);
double r43209 = r43206 / r43208;
double r43210 = r43197 ? r43204 : r43209;
double r43211 = r43177 ? r43195 : r43210;
double r43212 = r43159 ? r43175 : r43211;
double r43213 = r43142 ? r43157 : r43212;
return r43213;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.4702290859562654e+113Initial program 54.9
Taylor expanded around -inf 9.1
if -1.4702290859562654e+113 < re < -1.607695456247534e-186Initial program 18.3
rmApplied add-sqr-sqrt18.3
Applied *-un-lft-identity18.3
Applied times-frac18.3
rmApplied pow118.3
Applied pow118.3
Applied pow-prod-up18.3
Simplified18.3
if -1.607695456247534e-186 < re < 1.7918307825710592e-180Initial program 31.6
rmApplied add-sqr-sqrt31.6
Applied *-un-lft-identity31.6
Applied times-frac31.6
rmApplied flip3-+31.7
Applied sqrt-div31.7
Applied associate-/r/31.7
Applied associate-*l*31.7
Taylor expanded around 0 35.0
if 1.7918307825710592e-180 < re < 1.2303366234451559e+145Initial program 16.5
rmApplied add-sqr-sqrt16.5
Applied *-un-lft-identity16.5
Applied times-frac16.5
rmApplied flip-+16.6
Applied sqrt-div16.6
Applied associate-/r/16.6
Applied associate-*r*16.6
Simplified16.6
if 1.2303366234451559e+145 < re Initial program 60.5
Taylor expanded around inf 6.6
Final simplification18.0
herbie shell --seed 2019294
(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))))