\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.477980765554152890668180029680723006559 \cdot 10^{121}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 5.925540416458275309943000169806911367311 \cdot 10^{52}:\\
\;\;\;\;\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{\sqrt[3]{{\left(\log base\right)}^{6}} + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r95191 = re;
double r95192 = r95191 * r95191;
double r95193 = im;
double r95194 = r95193 * r95193;
double r95195 = r95192 + r95194;
double r95196 = sqrt(r95195);
double r95197 = log(r95196);
double r95198 = base;
double r95199 = log(r95198);
double r95200 = r95197 * r95199;
double r95201 = atan2(r95193, r95191);
double r95202 = 0.0;
double r95203 = r95201 * r95202;
double r95204 = r95200 + r95203;
double r95205 = r95199 * r95199;
double r95206 = r95202 * r95202;
double r95207 = r95205 + r95206;
double r95208 = r95204 / r95207;
return r95208;
}
double f(double re, double im, double base) {
double r95209 = re;
double r95210 = -1.477980765554153e+121;
bool r95211 = r95209 <= r95210;
double r95212 = -1.0;
double r95213 = r95212 / r95209;
double r95214 = log(r95213);
double r95215 = -r95214;
double r95216 = base;
double r95217 = log(r95216);
double r95218 = r95215 / r95217;
double r95219 = 5.925540416458275e+52;
bool r95220 = r95209 <= r95219;
double r95221 = 1.0;
double r95222 = 2.0;
double r95223 = pow(r95217, r95222);
double r95224 = 0.0;
double r95225 = r95224 * r95224;
double r95226 = r95223 + r95225;
double r95227 = sqrt(r95226);
double r95228 = r95221 / r95227;
double r95229 = r95209 * r95209;
double r95230 = im;
double r95231 = r95230 * r95230;
double r95232 = r95229 + r95231;
double r95233 = sqrt(r95232);
double r95234 = log(r95233);
double r95235 = r95234 * r95217;
double r95236 = atan2(r95230, r95209);
double r95237 = r95236 * r95224;
double r95238 = r95235 + r95237;
double r95239 = 6.0;
double r95240 = pow(r95217, r95239);
double r95241 = cbrt(r95240);
double r95242 = r95241 + r95225;
double r95243 = sqrt(r95242);
double r95244 = r95238 / r95243;
double r95245 = r95228 * r95244;
double r95246 = log(r95209);
double r95247 = -r95246;
double r95248 = -r95217;
double r95249 = r95247 / r95248;
double r95250 = r95220 ? r95245 : r95249;
double r95251 = r95211 ? r95218 : r95250;
return r95251;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.477980765554153e+121Initial program 55.4
rmApplied add-sqr-sqrt55.4
Applied *-un-lft-identity55.4
Applied times-frac55.4
Simplified55.4
Simplified55.4
Taylor expanded around -inf 64.0
Simplified7.9
if -1.477980765554153e+121 < re < 5.925540416458275e+52Initial program 21.9
rmApplied add-sqr-sqrt21.9
Applied *-un-lft-identity21.9
Applied times-frac21.9
Simplified21.9
Simplified21.9
rmApplied add-cbrt-cube22.0
Simplified21.9
if 5.925540416458275e+52 < re Initial program 45.0
Taylor expanded around inf 11.3
Simplified11.3
Final simplification17.7
herbie shell --seed 2019325
(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))))