\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.21796865557664327 \cdot 10^{125}:\\
\;\;\;\;\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 -2.3495244626294698 \cdot 10^{-161}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \left({\left(\log base\right)}^{2} \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(0.0 \cdot 0.0 + {\left(\log base\right)}^{2}\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}\\
\mathbf{elif}\;re \le -9.88855865063237161 \cdot 10^{-243}:\\
\;\;\;\;\frac{\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}}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 6.97757305283699572 \cdot 10^{98}:\\
\;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r42173 = re;
double r42174 = r42173 * r42173;
double r42175 = im;
double r42176 = r42175 * r42175;
double r42177 = r42174 + r42176;
double r42178 = sqrt(r42177);
double r42179 = log(r42178);
double r42180 = base;
double r42181 = log(r42180);
double r42182 = r42179 * r42181;
double r42183 = atan2(r42175, r42173);
double r42184 = 0.0;
double r42185 = r42183 * r42184;
double r42186 = r42182 + r42185;
double r42187 = r42181 * r42181;
double r42188 = r42184 * r42184;
double r42189 = r42187 + r42188;
double r42190 = r42186 / r42189;
return r42190;
}
double f(double re, double im, double base) {
double r42191 = re;
double r42192 = -1.2179686555766433e+125;
bool r42193 = r42191 <= r42192;
double r42194 = -r42191;
double r42195 = log(r42194);
double r42196 = base;
double r42197 = log(r42196);
double r42198 = r42195 * r42197;
double r42199 = im;
double r42200 = atan2(r42199, r42191);
double r42201 = 0.0;
double r42202 = r42200 * r42201;
double r42203 = r42198 + r42202;
double r42204 = r42197 * r42197;
double r42205 = r42201 * r42201;
double r42206 = r42204 + r42205;
double r42207 = r42203 / r42206;
double r42208 = -2.3495244626294698e-161;
bool r42209 = r42191 <= r42208;
double r42210 = r42191 * r42191;
double r42211 = r42199 * r42199;
double r42212 = r42210 + r42211;
double r42213 = sqrt(r42212);
double r42214 = log(r42213);
double r42215 = 2.0;
double r42216 = pow(r42197, r42215);
double r42217 = r42216 * r42214;
double r42218 = r42214 * r42217;
double r42219 = r42202 * r42202;
double r42220 = r42218 - r42219;
double r42221 = r42205 + r42216;
double r42222 = r42214 * r42197;
double r42223 = r42222 - r42202;
double r42224 = r42221 * r42223;
double r42225 = r42220 / r42224;
double r42226 = -9.888558650632372e-243;
bool r42227 = r42191 <= r42226;
double r42228 = r42197 * r42195;
double r42229 = r42202 + r42228;
double r42230 = sqrt(r42221);
double r42231 = r42229 / r42230;
double r42232 = sqrt(r42206);
double r42233 = r42231 / r42232;
double r42234 = 6.977573052836996e+98;
bool r42235 = r42191 <= r42234;
double r42236 = r42197 * r42214;
double r42237 = r42202 + r42236;
double r42238 = r42237 / r42230;
double r42239 = r42238 / r42232;
double r42240 = log(r42191);
double r42241 = r42240 / r42197;
double r42242 = r42235 ? r42239 : r42241;
double r42243 = r42227 ? r42233 : r42242;
double r42244 = r42209 ? r42225 : r42243;
double r42245 = r42193 ? r42207 : r42244;
return r42245;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.2179686555766433e+125Initial program 56.7
Taylor expanded around -inf 7.9
Simplified7.9
if -1.2179686555766433e+125 < re < -2.3495244626294698e-161Initial program 16.5
rmApplied flip-+16.5
Applied associate-/l/16.5
Simplified16.5
rmApplied associate-*l*16.6
Simplified16.5
if -2.3495244626294698e-161 < re < -9.888558650632372e-243Initial program 34.0
rmApplied add-sqr-sqrt34.0
Applied associate-/r*33.9
Simplified33.9
Taylor expanded around -inf 48.1
Simplified48.1
if -9.888558650632372e-243 < re < 6.977573052836996e+98Initial program 23.5
rmApplied add-sqr-sqrt23.5
Applied associate-/r*23.4
Simplified23.4
if 6.977573052836996e+98 < re Initial program 51.1
rmApplied add-sqr-sqrt51.1
Applied associate-/r*51.1
Simplified51.1
Taylor expanded around 0 9.6
Final simplification18.7
herbie shell --seed 2020043
(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))))