\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 -3.802827698926983671699748969749011047771 \cdot 10^{113}:\\
\;\;\;\;\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 9.811494851439250600834832921131634407951 \cdot 10^{135}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 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{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\end{array}double f(double re, double im, double base) {
double r48098 = re;
double r48099 = r48098 * r48098;
double r48100 = im;
double r48101 = r48100 * r48100;
double r48102 = r48099 + r48101;
double r48103 = sqrt(r48102);
double r48104 = log(r48103);
double r48105 = base;
double r48106 = log(r48105);
double r48107 = r48104 * r48106;
double r48108 = atan2(r48100, r48098);
double r48109 = 0.0;
double r48110 = r48108 * r48109;
double r48111 = r48107 + r48110;
double r48112 = r48106 * r48106;
double r48113 = r48109 * r48109;
double r48114 = r48112 + r48113;
double r48115 = r48111 / r48114;
return r48115;
}
double f(double re, double im, double base) {
double r48116 = re;
double r48117 = -3.802827698926984e+113;
bool r48118 = r48116 <= r48117;
double r48119 = -1.0;
double r48120 = r48119 * r48116;
double r48121 = log(r48120);
double r48122 = base;
double r48123 = log(r48122);
double r48124 = r48121 * r48123;
double r48125 = im;
double r48126 = atan2(r48125, r48116);
double r48127 = 0.0;
double r48128 = r48126 * r48127;
double r48129 = r48124 + r48128;
double r48130 = 2.0;
double r48131 = cbrt(r48122);
double r48132 = log(r48131);
double r48133 = r48130 * r48132;
double r48134 = r48123 * r48133;
double r48135 = r48123 * r48132;
double r48136 = r48134 + r48135;
double r48137 = r48127 * r48127;
double r48138 = r48136 + r48137;
double r48139 = r48129 / r48138;
double r48140 = 9.81149485143925e+135;
bool r48141 = r48116 <= r48140;
double r48142 = 1.0;
double r48143 = r48123 * r48123;
double r48144 = r48143 + r48137;
double r48145 = sqrt(r48144);
double r48146 = r48142 / r48145;
double r48147 = r48116 * r48116;
double r48148 = r48125 * r48125;
double r48149 = r48147 + r48148;
double r48150 = sqrt(r48149);
double r48151 = log(r48150);
double r48152 = r48151 * r48123;
double r48153 = r48152 + r48128;
double r48154 = r48153 / r48145;
double r48155 = r48146 * r48154;
double r48156 = log(r48116);
double r48157 = r48156 * r48123;
double r48158 = r48157 + r48128;
double r48159 = r48158 / r48145;
double r48160 = r48146 * r48159;
double r48161 = r48141 ? r48155 : r48160;
double r48162 = r48118 ? r48139 : r48161;
return r48162;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.802827698926984e+113Initial program 54.5
rmApplied add-cube-cbrt54.5
Applied log-prod54.5
Applied distribute-lft-in54.5
Simplified54.5
Taylor expanded around -inf 8.5
if -3.802827698926984e+113 < re < 9.81149485143925e+135Initial program 21.9
rmApplied add-sqr-sqrt21.9
Applied *-un-lft-identity21.9
Applied times-frac21.9
if 9.81149485143925e+135 < re Initial program 58.3
rmApplied add-sqr-sqrt58.3
Applied *-un-lft-identity58.3
Applied times-frac58.3
Taylor expanded around inf 8.0
Final simplification17.7
herbie shell --seed 2019308
(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))))