\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.22293834735768942 \cdot 10^{113}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{elif}\;re \le 1.34635749740004983 \cdot 10^{136}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \frac{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r44091 = re;
double r44092 = r44091 * r44091;
double r44093 = im;
double r44094 = r44093 * r44093;
double r44095 = r44092 + r44094;
double r44096 = sqrt(r44095);
double r44097 = log(r44096);
double r44098 = base;
double r44099 = log(r44098);
double r44100 = r44097 * r44099;
double r44101 = atan2(r44093, r44091);
double r44102 = 0.0;
double r44103 = r44101 * r44102;
double r44104 = r44100 + r44103;
double r44105 = r44099 * r44099;
double r44106 = r44102 * r44102;
double r44107 = r44105 + r44106;
double r44108 = r44104 / r44107;
return r44108;
}
double f(double re, double im, double base) {
double r44109 = re;
double r44110 = -1.2229383473576894e+113;
bool r44111 = r44109 <= r44110;
double r44112 = 1.0;
double r44113 = 0.0;
double r44114 = r44113 * r44113;
double r44115 = base;
double r44116 = log(r44115);
double r44117 = 2.0;
double r44118 = pow(r44116, r44117);
double r44119 = r44114 + r44118;
double r44120 = -1.0;
double r44121 = r44120 * r44109;
double r44122 = log(r44121);
double r44123 = r44122 * r44116;
double r44124 = im;
double r44125 = atan2(r44124, r44109);
double r44126 = r44125 * r44113;
double r44127 = r44123 + r44126;
double r44128 = r44119 / r44127;
double r44129 = r44112 / r44128;
double r44130 = 1.3463574974000498e+136;
bool r44131 = r44109 <= r44130;
double r44132 = sqrt(r44119);
double r44133 = r44109 * r44109;
double r44134 = r44124 * r44124;
double r44135 = r44133 + r44134;
double r44136 = sqrt(r44135);
double r44137 = log(r44136);
double r44138 = r44137 * r44116;
double r44139 = r44138 + r44126;
double r44140 = r44132 / r44139;
double r44141 = r44132 * r44140;
double r44142 = r44112 / r44141;
double r44143 = r44112 / r44109;
double r44144 = log(r44143);
double r44145 = r44112 / r44115;
double r44146 = log(r44145);
double r44147 = r44144 / r44146;
double r44148 = r44131 ? r44142 : r44147;
double r44149 = r44111 ? r44129 : r44148;
return r44149;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.2229383473576894e+113Initial program 53.8
rmApplied clear-num53.8
Simplified53.8
Taylor expanded around -inf 9.1
if -1.2229383473576894e+113 < re < 1.3463574974000498e+136Initial program 21.7
rmApplied clear-num21.7
Simplified21.7
rmApplied *-un-lft-identity21.7
Applied add-sqr-sqrt21.7
Applied times-frac21.7
Simplified21.7
if 1.3463574974000498e+136 < re Initial program 59.4
Taylor expanded around inf 7.0
Final simplification17.7
herbie shell --seed 2020060
(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))))