\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.5784955224792795 \cdot 10^{101}:\\
\;\;\;\;\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\sqrt[3]{1}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le -8.530611376341098 \cdot 10^{-225}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\sqrt[3]{1}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 8.52811240134291878 \cdot 10^{-191}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 4.29856860282582336 \cdot 10^{106}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\sqrt[3]{1}}{\sqrt{\log base \cdot \log base + 0.0 \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 r43058 = re;
double r43059 = r43058 * r43058;
double r43060 = im;
double r43061 = r43060 * r43060;
double r43062 = r43059 + r43061;
double r43063 = sqrt(r43062);
double r43064 = log(r43063);
double r43065 = base;
double r43066 = log(r43065);
double r43067 = r43064 * r43066;
double r43068 = atan2(r43060, r43058);
double r43069 = 0.0;
double r43070 = r43068 * r43069;
double r43071 = r43067 + r43070;
double r43072 = r43066 * r43066;
double r43073 = r43069 * r43069;
double r43074 = r43072 + r43073;
double r43075 = r43071 / r43074;
return r43075;
}
double f(double re, double im, double base) {
double r43076 = re;
double r43077 = -1.5784955224792795e+101;
bool r43078 = r43076 <= r43077;
double r43079 = -1.0;
double r43080 = r43079 / r43076;
double r43081 = log(r43080);
double r43082 = r43079 * r43081;
double r43083 = base;
double r43084 = log(r43083);
double r43085 = r43082 * r43084;
double r43086 = im;
double r43087 = atan2(r43086, r43076);
double r43088 = 0.0;
double r43089 = r43087 * r43088;
double r43090 = r43085 + r43089;
double r43091 = r43084 * r43084;
double r43092 = r43088 * r43088;
double r43093 = r43091 + r43092;
double r43094 = sqrt(r43093);
double r43095 = r43090 / r43094;
double r43096 = 1.0;
double r43097 = cbrt(r43096);
double r43098 = r43097 / r43094;
double r43099 = r43095 * r43098;
double r43100 = -8.530611376341098e-225;
bool r43101 = r43076 <= r43100;
double r43102 = r43076 * r43076;
double r43103 = r43086 * r43086;
double r43104 = r43102 + r43103;
double r43105 = sqrt(r43104);
double r43106 = log(r43105);
double r43107 = r43106 * r43084;
double r43108 = r43107 + r43089;
double r43109 = r43108 / r43094;
double r43110 = r43109 * r43098;
double r43111 = 8.528112401342919e-191;
bool r43112 = r43076 <= r43111;
double r43113 = log(r43086);
double r43114 = r43113 / r43084;
double r43115 = 4.298568602825823e+106;
bool r43116 = r43076 <= r43115;
double r43117 = r43096 / r43076;
double r43118 = log(r43117);
double r43119 = r43096 / r43083;
double r43120 = log(r43119);
double r43121 = r43118 / r43120;
double r43122 = r43116 ? r43110 : r43121;
double r43123 = r43112 ? r43114 : r43122;
double r43124 = r43101 ? r43110 : r43123;
double r43125 = r43078 ? r43099 : r43124;
return r43125;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.5784955224792795e+101Initial program 52.1
rmApplied div-inv52.1
rmApplied add-sqr-sqrt52.1
Applied add-cube-cbrt52.1
Applied times-frac52.1
Applied associate-*r*52.1
Simplified52.1
Taylor expanded around -inf 64.0
Simplified8.0
if -1.5784955224792795e+101 < re < -8.530611376341098e-225 or 8.528112401342919e-191 < re < 4.298568602825823e+106Initial program 18.5
rmApplied div-inv18.5
rmApplied add-sqr-sqrt18.5
Applied add-cube-cbrt18.5
Applied times-frac18.6
Applied associate-*r*18.6
Simplified18.5
if -8.530611376341098e-225 < re < 8.528112401342919e-191Initial program 32.1
Taylor expanded around 0 34.5
if 4.298568602825823e+106 < re Initial program 53.2
Taylor expanded around inf 8.5
Final simplification17.6
herbie shell --seed 2020047
(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))))