\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.151888904100587124379023402396569343398 \cdot 10^{58}:\\
\;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 9.450669110711002207218388065050424546591 \cdot 10^{-302}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{elif}\;re \le 6.665470315389402134305579687920046870896 \cdot 10^{-268}:\\
\;\;\;\;\frac{\log im \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 5.168286053687553277469579473627394075561 \cdot 10^{91}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\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.1518889041005871e+58;
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 = r43095 / r43094;
double r43097 = 9.450669110711002e-302;
bool r43098 = r43076 <= r43097;
double r43099 = r43076 * r43076;
double r43100 = r43086 * r43086;
double r43101 = r43099 + r43100;
double r43102 = sqrt(r43101);
double r43103 = log(r43102);
double r43104 = r43103 * r43084;
double r43105 = r43104 + r43089;
double r43106 = 3.0;
double r43107 = pow(r43088, r43106);
double r43108 = -r43107;
double r43109 = r43108 * r43088;
double r43110 = 4.0;
double r43111 = pow(r43084, r43110);
double r43112 = r43109 + r43111;
double r43113 = r43105 / r43112;
double r43114 = r43091 - r43092;
double r43115 = r43113 * r43114;
double r43116 = 6.665470315389402e-268;
bool r43117 = r43076 <= r43116;
double r43118 = log(r43086);
double r43119 = r43118 * r43084;
double r43120 = r43119 + r43089;
double r43121 = r43120 / r43093;
double r43122 = 5.168286053687553e+91;
bool r43123 = r43076 <= r43122;
double r43124 = 1.0;
double r43125 = r43124 / r43076;
double r43126 = log(r43125);
double r43127 = r43124 / r43083;
double r43128 = log(r43127);
double r43129 = r43126 * r43128;
double r43130 = r43129 + r43089;
double r43131 = r43130 / r43093;
double r43132 = r43123 ? r43115 : r43131;
double r43133 = r43117 ? r43121 : r43132;
double r43134 = r43098 ? r43115 : r43133;
double r43135 = r43078 ? r43096 : r43134;
return r43135;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.1518889041005871e+58Initial program 45.0
rmApplied add-sqr-sqrt45.0
Applied associate-/r*45.0
Taylor expanded around -inf 64.0
Simplified10.4
if -1.1518889041005871e+58 < re < 9.450669110711002e-302 or 6.665470315389402e-268 < re < 5.168286053687553e+91Initial program 22.3
rmApplied flip-+22.3
Applied associate-/r/22.3
Simplified22.3
if 9.450669110711002e-302 < re < 6.665470315389402e-268Initial program 30.3
Taylor expanded around 0 32.4
if 5.168286053687553e+91 < re Initial program 49.5
Taylor expanded around inf 9.4
Final simplification17.9
herbie shell --seed 2019353
(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))))