Average Error: 31.9 → 18.1
Time: 7.7s
Precision: 64
\[\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 -7.144500791031523614501840815340230406496 \cdot 10^{147}:\\ \;\;\;\;\frac{\log \left(-1 \cdot re\right) \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 -4.364140895511950642465986845068438631581 \cdot 10^{-180}:\\ \;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.750445773423323613698564574317628521107 \cdot 10^{-212}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 8920902837436811264:\\ \;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \end{array}\]
\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 -7.144500791031523614501840815340230406496 \cdot 10^{147}:\\
\;\;\;\;\frac{\log \left(-1 \cdot re\right) \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 -4.364140895511950642465986845068438631581 \cdot 10^{-180}:\\
\;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{elif}\;re \le 1.750445773423323613698564574317628521107 \cdot 10^{-212}:\\
\;\;\;\;\frac{\log im}{\log base}\\

\mathbf{elif}\;re \le 8920902837436811264:\\
\;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\end{array}
double f(double re, double im, double base) {
        double r43045 = re;
        double r43046 = r43045 * r43045;
        double r43047 = im;
        double r43048 = r43047 * r43047;
        double r43049 = r43046 + r43048;
        double r43050 = sqrt(r43049);
        double r43051 = log(r43050);
        double r43052 = base;
        double r43053 = log(r43052);
        double r43054 = r43051 * r43053;
        double r43055 = atan2(r43047, r43045);
        double r43056 = 0.0;
        double r43057 = r43055 * r43056;
        double r43058 = r43054 + r43057;
        double r43059 = r43053 * r43053;
        double r43060 = r43056 * r43056;
        double r43061 = r43059 + r43060;
        double r43062 = r43058 / r43061;
        return r43062;
}

double f(double re, double im, double base) {
        double r43063 = re;
        double r43064 = -7.144500791031524e+147;
        bool r43065 = r43063 <= r43064;
        double r43066 = -1.0;
        double r43067 = r43066 * r43063;
        double r43068 = log(r43067);
        double r43069 = base;
        double r43070 = log(r43069);
        double r43071 = r43068 * r43070;
        double r43072 = im;
        double r43073 = atan2(r43072, r43063);
        double r43074 = 0.0;
        double r43075 = r43073 * r43074;
        double r43076 = r43071 + r43075;
        double r43077 = r43070 * r43070;
        double r43078 = r43074 * r43074;
        double r43079 = r43077 + r43078;
        double r43080 = r43076 / r43079;
        double r43081 = -4.364140895511951e-180;
        bool r43082 = r43063 <= r43081;
        double r43083 = r43063 * r43063;
        double r43084 = r43072 * r43072;
        double r43085 = r43083 + r43084;
        double r43086 = sqrt(r43085);
        double r43087 = log(r43086);
        double r43088 = r43087 * r43070;
        double r43089 = r43088 + r43075;
        double r43090 = sqrt(r43079);
        double r43091 = r43089 / r43090;
        double r43092 = r43091 / r43090;
        double r43093 = 1.7504457734233236e-212;
        bool r43094 = r43063 <= r43093;
        double r43095 = log(r43072);
        double r43096 = r43095 / r43070;
        double r43097 = 8.920902837436811e+18;
        bool r43098 = r43063 <= r43097;
        double r43099 = log(r43063);
        double r43100 = r43099 * r43070;
        double r43101 = r43100 + r43075;
        double r43102 = r43101 / r43090;
        double r43103 = r43102 / r43090;
        double r43104 = r43098 ? r43092 : r43103;
        double r43105 = r43094 ? r43096 : r43104;
        double r43106 = r43082 ? r43092 : r43105;
        double r43107 = r43065 ? r43080 : r43106;
        return r43107;
}

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 4 regimes
  2. if re < -7.144500791031524e+147

    1. Initial program 62.6

      \[\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}\]
    2. Taylor expanded around -inf 8.3

      \[\leadsto \frac{\log \color{blue}{\left(-1 \cdot re\right)} \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]

    if -7.144500791031524e+147 < re < -4.364140895511951e-180 or 1.7504457734233236e-212 < re < 8.920902837436811e+18

    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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt17.5

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\color{blue}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    4. Applied associate-/r*17.4

      \[\leadsto \color{blue}{\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]

    if -4.364140895511951e-180 < re < 1.7504457734233236e-212

    1. Initial program 31.5

      \[\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}\]
    2. Taylor expanded around 0 34.1

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

    if 8.920902837436811e+18 < re

    1. Initial program 42.3

      \[\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}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt42.3

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\color{blue}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    4. Applied associate-/r*42.3

      \[\leadsto \color{blue}{\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    5. Taylor expanded around inf 12.6

      \[\leadsto \frac{\frac{\log \color{blue}{re} \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}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification18.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -7.144500791031523614501840815340230406496 \cdot 10^{147}:\\ \;\;\;\;\frac{\log \left(-1 \cdot re\right) \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 -4.364140895511950642465986845068438631581 \cdot 10^{-180}:\\ \;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.750445773423323613698564574317628521107 \cdot 10^{-212}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 8920902837436811264:\\ \;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020001 
(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))))