\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -3.912111704121843 \cdot 10^{+74}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le -1.610831336314797 \cdot 10^{-195}:\\
\;\;\;\;\frac{\log \left(\left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}}}\right) \cdot \sqrt[3]{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}}}\right)\right)}{\log base}\\
\mathbf{elif}\;re \le -4.64950550008063 \cdot 10^{-304}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 2.1214141144086502 \cdot 10^{+101}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r1947031 = re;
double r1947032 = r1947031 * r1947031;
double r1947033 = im;
double r1947034 = r1947033 * r1947033;
double r1947035 = r1947032 + r1947034;
double r1947036 = sqrt(r1947035);
double r1947037 = log(r1947036);
double r1947038 = base;
double r1947039 = log(r1947038);
double r1947040 = r1947037 * r1947039;
double r1947041 = atan2(r1947033, r1947031);
double r1947042 = 0.0;
double r1947043 = r1947041 * r1947042;
double r1947044 = r1947040 + r1947043;
double r1947045 = r1947039 * r1947039;
double r1947046 = r1947042 * r1947042;
double r1947047 = r1947045 + r1947046;
double r1947048 = r1947044 / r1947047;
return r1947048;
}
double f(double re, double im, double base) {
double r1947049 = re;
double r1947050 = -3.912111704121843e+74;
bool r1947051 = r1947049 <= r1947050;
double r1947052 = -r1947049;
double r1947053 = log(r1947052);
double r1947054 = base;
double r1947055 = log(r1947054);
double r1947056 = r1947053 / r1947055;
double r1947057 = -1.610831336314797e-195;
bool r1947058 = r1947049 <= r1947057;
double r1947059 = im;
double r1947060 = r1947059 * r1947059;
double r1947061 = r1947049 * r1947049;
double r1947062 = r1947060 + r1947061;
double r1947063 = sqrt(r1947062);
double r1947064 = cbrt(r1947063);
double r1947065 = r1947064 * r1947064;
double r1947066 = cbrt(r1947064);
double r1947067 = r1947066 * r1947066;
double r1947068 = r1947067 * r1947066;
double r1947069 = r1947065 * r1947068;
double r1947070 = log(r1947069);
double r1947071 = r1947070 / r1947055;
double r1947072 = -4.64950550008063e-304;
bool r1947073 = r1947049 <= r1947072;
double r1947074 = log(r1947059);
double r1947075 = r1947074 / r1947055;
double r1947076 = 2.1214141144086502e+101;
bool r1947077 = r1947049 <= r1947076;
double r1947078 = log(r1947063);
double r1947079 = r1947055 * r1947078;
double r1947080 = atan2(r1947059, r1947049);
double r1947081 = 0.0;
double r1947082 = r1947080 * r1947081;
double r1947083 = r1947079 + r1947082;
double r1947084 = r1947055 * r1947055;
double r1947085 = r1947083 / r1947084;
double r1947086 = log(r1947049);
double r1947087 = r1947086 / r1947055;
double r1947088 = r1947077 ? r1947085 : r1947087;
double r1947089 = r1947073 ? r1947075 : r1947088;
double r1947090 = r1947058 ? r1947071 : r1947089;
double r1947091 = r1947051 ? r1947056 : r1947090;
return r1947091;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.912111704121843e+74Initial program 45.6
Simplified45.6
Taylor expanded around -inf 10.2
Simplified10.2
if -3.912111704121843e+74 < re < -1.610831336314797e-195Initial program 17.5
Simplified17.4
rmApplied add-cube-cbrt17.4
rmApplied add-cube-cbrt17.4
if -1.610831336314797e-195 < re < -4.64950550008063e-304Initial program 28.4
Simplified28.3
Taylor expanded around 0 34.1
if -4.64950550008063e-304 < re < 2.1214141144086502e+101Initial program 21.2
if 2.1214141144086502e+101 < re Initial program 50.1
Simplified50.1
Taylor expanded around inf 8.6
Final simplification17.3
herbie shell --seed 2019162
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))