Average Error: 30.5 → 17.3
Time: 22.3s
Precision: 64
\[\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}\]
\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;
}

Error

Bits error versus re

Bits error versus im

Bits error versus base

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 5 regimes
  2. if re < -3.912111704121843e+74

    1. Initial program 45.6

      \[\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}\]
    2. Simplified45.6

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Taylor expanded around -inf 10.2

      \[\leadsto \frac{\log \color{blue}{\left(-1 \cdot re\right)}}{\log base}\]
    4. Simplified10.2

      \[\leadsto \frac{\log \color{blue}{\left(-re\right)}}{\log base}\]

    if -3.912111704121843e+74 < re < -1.610831336314797e-195

    1. Initial program 17.5

      \[\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}\]
    2. Simplified17.4

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt17.4

      \[\leadsto \frac{\log \color{blue}{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}}{\log base}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt17.4

      \[\leadsto \frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}}\right) \cdot \sqrt[3]{\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}}\right)}\right)}{\log base}\]

    if -1.610831336314797e-195 < re < -4.64950550008063e-304

    1. Initial program 28.4

      \[\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}\]
    2. Simplified28.3

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Taylor expanded around 0 34.1

      \[\leadsto \frac{\log \color{blue}{im}}{\log base}\]

    if -4.64950550008063e-304 < re < 2.1214141144086502e+101

    1. Initial program 21.2

      \[\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}\]

    if 2.1214141144086502e+101 < re

    1. Initial program 50.1

      \[\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}\]
    2. Simplified50.1

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Taylor expanded around inf 8.6

      \[\leadsto \frac{\log \color{blue}{re}}{\log base}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification17.3

    \[\leadsto \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}\]

Reproduce

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