\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 r44059 = re;
double r44060 = r44059 * r44059;
double r44061 = im;
double r44062 = r44061 * r44061;
double r44063 = r44060 + r44062;
double r44064 = sqrt(r44063);
double r44065 = log(r44064);
double r44066 = base;
double r44067 = log(r44066);
double r44068 = r44065 * r44067;
double r44069 = atan2(r44061, r44059);
double r44070 = 0.0;
double r44071 = r44069 * r44070;
double r44072 = r44068 + r44071;
double r44073 = r44067 * r44067;
double r44074 = r44070 * r44070;
double r44075 = r44073 + r44074;
double r44076 = r44072 / r44075;
return r44076;
}
double f(double re, double im, double base) {
double r44077 = re;
double r44078 = -1.2229383473576894e+113;
bool r44079 = r44077 <= r44078;
double r44080 = 1.0;
double r44081 = 0.0;
double r44082 = r44081 * r44081;
double r44083 = base;
double r44084 = log(r44083);
double r44085 = 2.0;
double r44086 = pow(r44084, r44085);
double r44087 = r44082 + r44086;
double r44088 = -1.0;
double r44089 = r44088 * r44077;
double r44090 = log(r44089);
double r44091 = r44090 * r44084;
double r44092 = im;
double r44093 = atan2(r44092, r44077);
double r44094 = r44093 * r44081;
double r44095 = r44091 + r44094;
double r44096 = r44087 / r44095;
double r44097 = r44080 / r44096;
double r44098 = 1.3463574974000498e+136;
bool r44099 = r44077 <= r44098;
double r44100 = sqrt(r44087);
double r44101 = r44077 * r44077;
double r44102 = r44092 * r44092;
double r44103 = r44101 + r44102;
double r44104 = sqrt(r44103);
double r44105 = log(r44104);
double r44106 = r44105 * r44084;
double r44107 = r44106 + r44094;
double r44108 = r44100 / r44107;
double r44109 = r44100 * r44108;
double r44110 = r44080 / r44109;
double r44111 = r44080 / r44077;
double r44112 = log(r44111);
double r44113 = r44080 / r44083;
double r44114 = log(r44113);
double r44115 = r44112 / r44114;
double r44116 = r44099 ? r44110 : r44115;
double r44117 = r44079 ? r44097 : r44116;
return r44117;
}



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))))