\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 -2.178124817795752902398331940971666652664 \cdot 10^{114}:\\
\;\;\;\;\frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 9.38505452091062154296414227123138742096 \cdot 10^{137}:\\
\;\;\;\;\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{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r98139 = re;
double r98140 = r98139 * r98139;
double r98141 = im;
double r98142 = r98141 * r98141;
double r98143 = r98140 + r98142;
double r98144 = sqrt(r98143);
double r98145 = log(r98144);
double r98146 = base;
double r98147 = log(r98146);
double r98148 = r98145 * r98147;
double r98149 = atan2(r98141, r98139);
double r98150 = 0.0;
double r98151 = r98149 * r98150;
double r98152 = r98148 + r98151;
double r98153 = r98147 * r98147;
double r98154 = r98150 * r98150;
double r98155 = r98153 + r98154;
double r98156 = r98152 / r98155;
return r98156;
}
double f(double re, double im, double base) {
double r98157 = re;
double r98158 = -2.178124817795753e+114;
bool r98159 = r98157 <= r98158;
double r98160 = -r98157;
double r98161 = log(r98160);
double r98162 = base;
double r98163 = log(r98162);
double r98164 = r98161 * r98163;
double r98165 = im;
double r98166 = atan2(r98165, r98157);
double r98167 = 0.0;
double r98168 = r98166 * r98167;
double r98169 = r98164 + r98168;
double r98170 = r98163 * r98163;
double r98171 = r98167 * r98167;
double r98172 = r98170 + r98171;
double r98173 = r98169 / r98172;
double r98174 = 9.385054520910622e+137;
bool r98175 = r98157 <= r98174;
double r98176 = 1.0;
double r98177 = 2.0;
double r98178 = pow(r98163, r98177);
double r98179 = r98178 + r98171;
double r98180 = sqrt(r98179);
double r98181 = r98176 / r98180;
double r98182 = r98157 * r98157;
double r98183 = r98165 * r98165;
double r98184 = r98182 + r98183;
double r98185 = sqrt(r98184);
double r98186 = log(r98185);
double r98187 = r98186 * r98163;
double r98188 = r98187 + r98168;
double r98189 = r98188 / r98180;
double r98190 = r98181 * r98189;
double r98191 = log(r98157);
double r98192 = -r98191;
double r98193 = -r98163;
double r98194 = r98192 / r98193;
double r98195 = r98175 ? r98190 : r98194;
double r98196 = r98159 ? r98173 : r98195;
return r98196;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.178124817795753e+114Initial program 54.8
Taylor expanded around -inf 8.6
Simplified8.6
if -2.178124817795753e+114 < re < 9.385054520910622e+137Initial program 21.5
rmApplied add-sqr-sqrt21.5
Applied *-un-lft-identity21.5
Applied times-frac21.4
Simplified21.4
Simplified21.4
if 9.385054520910622e+137 < re Initial program 60.1
Taylor expanded around inf 7.0
Simplified7.0
Final simplification17.5
herbie shell --seed 2019323
(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))))