\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -2.929915037932605 \cdot 10^{+116}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0 + \log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\
\mathbf{elif}\;re \le 3.688680909166565 \cdot 10^{-273}:\\
\;\;\;\;\frac{1}{\log base} \cdot \log \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right)\\
\mathbf{elif}\;re \le 1.483347789429306 \cdot 10^{-239}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.687660857647486 \cdot 10^{+127}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\log base} \cdot \log re\\
\end{array}double f(double re, double im, double base) {
double r2346977 = re;
double r2346978 = r2346977 * r2346977;
double r2346979 = im;
double r2346980 = r2346979 * r2346979;
double r2346981 = r2346978 + r2346980;
double r2346982 = sqrt(r2346981);
double r2346983 = log(r2346982);
double r2346984 = base;
double r2346985 = log(r2346984);
double r2346986 = r2346983 * r2346985;
double r2346987 = atan2(r2346979, r2346977);
double r2346988 = 0.0;
double r2346989 = r2346987 * r2346988;
double r2346990 = r2346986 + r2346989;
double r2346991 = r2346985 * r2346985;
double r2346992 = r2346988 * r2346988;
double r2346993 = r2346991 + r2346992;
double r2346994 = r2346990 / r2346993;
return r2346994;
}
double f(double re, double im, double base) {
double r2346995 = re;
double r2346996 = -2.929915037932605e+116;
bool r2346997 = r2346995 <= r2346996;
double r2346998 = im;
double r2346999 = atan2(r2346998, r2346995);
double r2347000 = 0.0;
double r2347001 = r2346999 * r2347000;
double r2347002 = base;
double r2347003 = log(r2347002);
double r2347004 = -r2346995;
double r2347005 = log(r2347004);
double r2347006 = r2347003 * r2347005;
double r2347007 = r2347001 + r2347006;
double r2347008 = r2347003 * r2347003;
double r2347009 = r2347007 / r2347008;
double r2347010 = 3.688680909166565e-273;
bool r2347011 = r2346995 <= r2347010;
double r2347012 = 1.0;
double r2347013 = r2347012 / r2347003;
double r2347014 = r2346998 * r2346998;
double r2347015 = r2346995 * r2346995;
double r2347016 = r2347014 + r2347015;
double r2347017 = sqrt(r2347016);
double r2347018 = sqrt(r2347017);
double r2347019 = r2347018 * r2347018;
double r2347020 = log(r2347019);
double r2347021 = r2347013 * r2347020;
double r2347022 = 1.483347789429306e-239;
bool r2347023 = r2346995 <= r2347022;
double r2347024 = log(r2346998);
double r2347025 = r2347024 / r2347003;
double r2347026 = 1.687660857647486e+127;
bool r2347027 = r2346995 <= r2347026;
double r2347028 = 0.5;
double r2347029 = log(r2347016);
double r2347030 = r2347003 / r2347029;
double r2347031 = r2347028 / r2347030;
double r2347032 = log(r2346995);
double r2347033 = r2347013 * r2347032;
double r2347034 = r2347027 ? r2347031 : r2347033;
double r2347035 = r2347023 ? r2347025 : r2347034;
double r2347036 = r2347011 ? r2347021 : r2347035;
double r2347037 = r2346997 ? r2347009 : r2347036;
return r2347037;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.929915037932605e+116Initial program 52.3
Taylor expanded around -inf 7.9
Simplified7.9
if -2.929915037932605e+116 < re < 3.688680909166565e-273Initial program 20.7
Simplified20.6
rmApplied add-sqr-sqrt20.6
Applied sqrt-prod20.6
rmApplied div-inv20.6
if 3.688680909166565e-273 < re < 1.483347789429306e-239Initial program 32.1
Simplified32.0
Taylor expanded around 0 31.2
if 1.483347789429306e-239 < re < 1.687660857647486e+127Initial program 19.2
Simplified19.1
rmApplied pow1/219.1
Applied log-pow19.1
Applied associate-/l*19.1
if 1.687660857647486e+127 < re Initial program 55.3
Simplified55.3
rmApplied add-sqr-sqrt55.3
Applied sqrt-prod55.3
rmApplied div-inv55.3
Taylor expanded around inf 8.6
Final simplification16.8
herbie shell --seed 2019158
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))