\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 -8.2529321969344202 \cdot 10^{97}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{elif}\;re \le -7.7296027907141122 \cdot 10^{-226}:\\
\;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}\\
\mathbf{elif}\;re \le 6.31099625192104387 \cdot 10^{-197}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 3.1293650531822621 \cdot 10^{107}:\\
\;\;\;\;\frac{\frac{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)\right) \cdot {\left(\log base\right)}^{2} - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r106157 = re;
double r106158 = r106157 * r106157;
double r106159 = im;
double r106160 = r106159 * r106159;
double r106161 = r106158 + r106160;
double r106162 = sqrt(r106161);
double r106163 = log(r106162);
double r106164 = base;
double r106165 = log(r106164);
double r106166 = r106163 * r106165;
double r106167 = atan2(r106159, r106157);
double r106168 = 0.0;
double r106169 = r106167 * r106168;
double r106170 = r106166 + r106169;
double r106171 = r106165 * r106165;
double r106172 = r106168 * r106168;
double r106173 = r106171 + r106172;
double r106174 = r106170 / r106173;
return r106174;
}
double f(double re, double im, double base) {
double r106175 = re;
double r106176 = -8.25293219693442e+97;
bool r106177 = r106175 <= r106176;
double r106178 = 1.0;
double r106179 = 0.0;
double r106180 = r106179 * r106179;
double r106181 = base;
double r106182 = log(r106181);
double r106183 = 2.0;
double r106184 = pow(r106182, r106183);
double r106185 = r106180 + r106184;
double r106186 = sqrt(r106185);
double r106187 = r106178 / r106186;
double r106188 = im;
double r106189 = atan2(r106188, r106175);
double r106190 = r106189 * r106179;
double r106191 = -r106175;
double r106192 = log(r106191);
double r106193 = r106182 * r106192;
double r106194 = r106190 + r106193;
double r106195 = r106194 / r106186;
double r106196 = r106187 * r106195;
double r106197 = -7.729602790714112e-226;
bool r106198 = r106175 <= r106197;
double r106199 = r106175 * r106175;
double r106200 = r106188 * r106188;
double r106201 = r106199 + r106200;
double r106202 = sqrt(r106201);
double r106203 = log(r106202);
double r106204 = r106203 * r106182;
double r106205 = r106204 + r106190;
double r106206 = r106178 / r106185;
double r106207 = r106205 * r106206;
double r106208 = 6.310996251921044e-197;
bool r106209 = r106175 <= r106208;
double r106210 = log(r106188);
double r106211 = r106210 / r106182;
double r106212 = 3.129365053182262e+107;
bool r106213 = r106175 <= r106212;
double r106214 = r106203 * r106203;
double r106215 = r106214 * r106184;
double r106216 = r106190 * r106190;
double r106217 = r106215 - r106216;
double r106218 = r106217 / r106185;
double r106219 = r106204 - r106190;
double r106220 = r106218 / r106219;
double r106221 = log(r106175);
double r106222 = -r106221;
double r106223 = -r106182;
double r106224 = r106222 / r106223;
double r106225 = r106213 ? r106220 : r106224;
double r106226 = r106209 ? r106211 : r106225;
double r106227 = r106198 ? r106207 : r106226;
double r106228 = r106177 ? r106196 : r106227;
return r106228;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -8.25293219693442e+97Initial program 51.4
rmApplied add-sqr-sqrt51.4
Applied *-un-lft-identity51.4
Applied times-frac51.4
Simplified51.4
Simplified51.4
Taylor expanded around -inf 8.1
Simplified8.1
if -8.25293219693442e+97 < re < -7.729602790714112e-226Initial program 20.2
rmApplied div-inv20.3
Simplified20.3
if -7.729602790714112e-226 < re < 6.310996251921044e-197Initial program 32.3
Taylor expanded around 0 34.5
if 6.310996251921044e-197 < re < 3.129365053182262e+107Initial program 17.0
rmApplied div-inv17.1
Simplified17.1
rmApplied flip-+17.1
Applied associate-*l/17.1
Simplified17.1
if 3.129365053182262e+107 < re Initial program 53.3
Taylor expanded around inf 8.4
Simplified8.4
Final simplification17.6
herbie shell --seed 2020047
(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))))