\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 -1.144600521445903 \cdot 10^{+98}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(-re\right)}}\\
\mathbf{elif}\;re \le -2.7249016889670465 \cdot 10^{-212}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\
\mathbf{elif}\;re \le -9.044826970858667 \cdot 10^{-305}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 6.270425502185955 \cdot 10^{+140}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1313110 = re;
double r1313111 = r1313110 * r1313110;
double r1313112 = im;
double r1313113 = r1313112 * r1313112;
double r1313114 = r1313111 + r1313113;
double r1313115 = sqrt(r1313114);
double r1313116 = log(r1313115);
double r1313117 = base;
double r1313118 = log(r1313117);
double r1313119 = r1313116 * r1313118;
double r1313120 = atan2(r1313112, r1313110);
double r1313121 = 0.0;
double r1313122 = r1313120 * r1313121;
double r1313123 = r1313119 + r1313122;
double r1313124 = r1313118 * r1313118;
double r1313125 = r1313121 * r1313121;
double r1313126 = r1313124 + r1313125;
double r1313127 = r1313123 / r1313126;
return r1313127;
}
double f(double re, double im, double base) {
double r1313128 = re;
double r1313129 = -1.144600521445903e+98;
bool r1313130 = r1313128 <= r1313129;
double r1313131 = 1.0;
double r1313132 = base;
double r1313133 = log(r1313132);
double r1313134 = -r1313128;
double r1313135 = log(r1313134);
double r1313136 = r1313133 / r1313135;
double r1313137 = r1313131 / r1313136;
double r1313138 = -2.7249016889670465e-212;
bool r1313139 = r1313128 <= r1313138;
double r1313140 = im;
double r1313141 = r1313140 * r1313140;
double r1313142 = r1313128 * r1313128;
double r1313143 = r1313141 + r1313142;
double r1313144 = sqrt(r1313143);
double r1313145 = log(r1313144);
double r1313146 = r1313133 / r1313145;
double r1313147 = r1313131 / r1313146;
double r1313148 = -9.044826970858667e-305;
bool r1313149 = r1313128 <= r1313148;
double r1313150 = log(r1313140);
double r1313151 = r1313150 / r1313133;
double r1313152 = 6.270425502185955e+140;
bool r1313153 = r1313128 <= r1313152;
double r1313154 = log(r1313128);
double r1313155 = -r1313154;
double r1313156 = -r1313133;
double r1313157 = r1313155 / r1313156;
double r1313158 = r1313153 ? r1313147 : r1313157;
double r1313159 = r1313149 ? r1313151 : r1313158;
double r1313160 = r1313139 ? r1313147 : r1313159;
double r1313161 = r1313130 ? r1313137 : r1313160;
return r1313161;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.144600521445903e+98Initial program 49.3
Simplified49.3
rmApplied clear-num49.3
Simplified49.2
Taylor expanded around -inf 8.6
Simplified8.6
if -1.144600521445903e+98 < re < -2.7249016889670465e-212 or -9.044826970858667e-305 < re < 6.270425502185955e+140Initial program 19.6
Simplified19.6
rmApplied clear-num19.6
Simplified19.6
rmApplied add-cbrt-cube19.7
rmApplied frac-times19.7
Applied frac-times19.7
Applied cbrt-div19.8
Simplified19.7
Simplified19.6
if -2.7249016889670465e-212 < re < -9.044826970858667e-305Initial program 32.1
Simplified32.1
rmApplied clear-num32.1
Simplified32.0
Taylor expanded around 0 32.7
if 6.270425502185955e+140 < re Initial program 58.6
Simplified58.6
rmApplied clear-num58.6
Simplified58.6
rmApplied div-inv58.6
Applied associate-/r*58.6
Taylor expanded around inf 6.5
Simplified6.5
Final simplification16.9
herbie shell --seed 2019151
(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))))