Average Error: 31.9 → 17.7
Time: 7.5s
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 -1.22293834735768942 \cdot 10^{113}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.34635749740004983 \cdot 10^{136}:\\ \;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \frac{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \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 -1.22293834735768942 \cdot 10^{113}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\

\mathbf{elif}\;re \le 1.34635749740004983 \cdot 10^{136}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \frac{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\

\end{array}
double f(double re, double im, double base) {
        double r44059 = re;
        double r44060 = r44059 * r44059;
        double r44061 = im;
        double r44062 = r44061 * r44061;
        double r44063 = r44060 + r44062;
        double r44064 = sqrt(r44063);
        double r44065 = log(r44064);
        double r44066 = base;
        double r44067 = log(r44066);
        double r44068 = r44065 * r44067;
        double r44069 = atan2(r44061, r44059);
        double r44070 = 0.0;
        double r44071 = r44069 * r44070;
        double r44072 = r44068 + r44071;
        double r44073 = r44067 * r44067;
        double r44074 = r44070 * r44070;
        double r44075 = r44073 + r44074;
        double r44076 = r44072 / r44075;
        return r44076;
}

double f(double re, double im, double base) {
        double r44077 = re;
        double r44078 = -1.2229383473576894e+113;
        bool r44079 = r44077 <= r44078;
        double r44080 = 1.0;
        double r44081 = 0.0;
        double r44082 = r44081 * r44081;
        double r44083 = base;
        double r44084 = log(r44083);
        double r44085 = 2.0;
        double r44086 = pow(r44084, r44085);
        double r44087 = r44082 + r44086;
        double r44088 = -1.0;
        double r44089 = r44088 * r44077;
        double r44090 = log(r44089);
        double r44091 = r44090 * r44084;
        double r44092 = im;
        double r44093 = atan2(r44092, r44077);
        double r44094 = r44093 * r44081;
        double r44095 = r44091 + r44094;
        double r44096 = r44087 / r44095;
        double r44097 = r44080 / r44096;
        double r44098 = 1.3463574974000498e+136;
        bool r44099 = r44077 <= r44098;
        double r44100 = sqrt(r44087);
        double r44101 = r44077 * r44077;
        double r44102 = r44092 * r44092;
        double r44103 = r44101 + r44102;
        double r44104 = sqrt(r44103);
        double r44105 = log(r44104);
        double r44106 = r44105 * r44084;
        double r44107 = r44106 + r44094;
        double r44108 = r44100 / r44107;
        double r44109 = r44100 * r44108;
        double r44110 = r44080 / r44109;
        double r44111 = r44080 / r44077;
        double r44112 = log(r44111);
        double r44113 = r44080 / r44083;
        double r44114 = log(r44113);
        double r44115 = r44112 / r44114;
        double r44116 = r44099 ? r44110 : r44115;
        double r44117 = r44079 ? r44097 : r44116;
        return r44117;
}

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 3 regimes
  2. if re < -1.2229383473576894e+113

    1. Initial program 53.8

      \[\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 clear-num53.8

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

      \[\leadsto \frac{1}{\color{blue}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}}\]
    5. Taylor expanded around -inf 9.1

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

    if -1.2229383473576894e+113 < re < 1.3463574974000498e+136

    1. Initial program 21.7

      \[\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 clear-num21.7

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

      \[\leadsto \frac{1}{\color{blue}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity21.7

      \[\leadsto \frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\color{blue}{1 \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}}}\]
    7. Applied add-sqr-sqrt21.7

      \[\leadsto \frac{1}{\frac{\color{blue}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}}{1 \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}}\]
    8. Applied times-frac21.7

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

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

    if 1.3463574974000498e+136 < re

    1. Initial program 59.4

      \[\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 7.0

      \[\leadsto \color{blue}{\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.22293834735768942 \cdot 10^{113}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.34635749740004983 \cdot 10^{136}:\\ \;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \frac{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \end{array}\]

Reproduce

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