\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 r38142 = re;
double r38143 = r38142 * r38142;
double r38144 = im;
double r38145 = r38144 * r38144;
double r38146 = r38143 + r38145;
double r38147 = sqrt(r38146);
double r38148 = log(r38147);
double r38149 = base;
double r38150 = log(r38149);
double r38151 = r38148 * r38150;
double r38152 = atan2(r38144, r38142);
double r38153 = 0.0;
double r38154 = r38152 * r38153;
double r38155 = r38151 + r38154;
double r38156 = r38150 * r38150;
double r38157 = r38153 * r38153;
double r38158 = r38156 + r38157;
double r38159 = r38155 / r38158;
return r38159;
}
double f(double re, double im, double base) {
double r38160 = re;
double r38161 = -4.716637846399996e+89;
bool r38162 = r38160 <= r38161;
double r38163 = -1.0;
double r38164 = r38163 / r38160;
double r38165 = log(r38164);
double r38166 = -r38165;
double r38167 = base;
double r38168 = log(r38167);
double r38169 = r38166 / r38168;
double r38170 = -2.2053249985564832e-213;
bool r38171 = r38160 <= r38170;
double r38172 = r38160 * r38160;
double r38173 = im;
double r38174 = r38173 * r38173;
double r38175 = r38172 + r38174;
double r38176 = sqrt(r38175);
double r38177 = log(r38176);
double r38178 = r38177 * r38168;
double r38179 = atan2(r38173, r38160);
double r38180 = 0.0;
double r38181 = r38179 * r38180;
double r38182 = r38178 + r38181;
double r38183 = 2.0;
double r38184 = pow(r38168, r38183);
double r38185 = r38180 * r38180;
double r38186 = r38184 + r38185;
double r38187 = sqrt(r38186);
double r38188 = r38182 / r38187;
double r38189 = r38168 * r38168;
double r38190 = r38189 + r38185;
double r38191 = sqrt(r38190);
double r38192 = r38188 / r38191;
double r38193 = 1.9547532014272984e-192;
bool r38194 = r38160 <= r38193;
double r38195 = log(r38173);
double r38196 = r38195 / r38168;
double r38197 = 1.6681351351351405e+72;
bool r38198 = r38160 <= r38197;
double r38199 = log(r38160);
double r38200 = -r38199;
double r38201 = -r38168;
double r38202 = r38200 / r38201;
double r38203 = r38198 ? r38192 : r38202;
double r38204 = r38194 ? r38196 : r38203;
double r38205 = r38171 ? r38192 : r38204;
double r38206 = r38162 ? r38169 : r38205;
return r38206;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.716637846399996e+89Initial program 50.5
rmApplied add-sqr-sqrt50.5
Applied *-un-lft-identity50.5
Applied times-frac50.5
Simplified50.5
Simplified50.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))))