Average Error: 31.1 → 16.9
Time: 25.2s
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 -1.144600521445903 \cdot 10^{+98}:\\ \;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\ \mathbf{elif}\;re \le -2.7249016889670465 \cdot 10^{-212}:\\ \;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{elif}\;re \le -9.044826970858667 \cdot 10^{-305}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 6.270425502185955 \cdot 10^{+140}:\\ \;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\ \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 -1.144600521445903 \cdot 10^{+98}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\

\mathbf{elif}\;re \le -2.7249016889670465 \cdot 10^{-212}:\\
\;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\

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

\mathbf{elif}\;re \le 6.270425502185955 \cdot 10^{+140}:\\
\;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\

\end{array}
double f(double re, double im, double base) {
        double r768975 = re;
        double r768976 = r768975 * r768975;
        double r768977 = im;
        double r768978 = r768977 * r768977;
        double r768979 = r768976 + r768978;
        double r768980 = sqrt(r768979);
        double r768981 = log(r768980);
        double r768982 = base;
        double r768983 = log(r768982);
        double r768984 = r768981 * r768983;
        double r768985 = atan2(r768977, r768975);
        double r768986 = 0.0;
        double r768987 = r768985 * r768986;
        double r768988 = r768984 + r768987;
        double r768989 = r768983 * r768983;
        double r768990 = r768986 * r768986;
        double r768991 = r768989 + r768990;
        double r768992 = r768988 / r768991;
        return r768992;
}

double f(double re, double im, double base) {
        double r768993 = re;
        double r768994 = -1.144600521445903e+98;
        bool r768995 = r768993 <= r768994;
        double r768996 = 0.5;
        double r768997 = base;
        double r768998 = log(r768997);
        double r768999 = -1.0;
        double r769000 = r768999 / r768993;
        double r769001 = log(r769000);
        double r769002 = -2.0;
        double r769003 = r769001 * r769002;
        double r769004 = r768998 / r769003;
        double r769005 = r768996 / r769004;
        double r769006 = -2.7249016889670465e-212;
        bool r769007 = r768993 <= r769006;
        double r769008 = 1.0;
        double r769009 = im;
        double r769010 = r769009 * r769009;
        double r769011 = r768993 * r768993;
        double r769012 = r769010 + r769011;
        double r769013 = log(r769012);
        double r769014 = r769008 / r769013;
        double r769015 = r768998 * r769014;
        double r769016 = r768996 / r769015;
        double r769017 = -9.044826970858667e-305;
        bool r769018 = r768993 <= r769017;
        double r769019 = log(r769009);
        double r769020 = r769019 / r768998;
        double r769021 = 6.270425502185955e+140;
        bool r769022 = r768993 <= r769021;
        double r769023 = log(r768993);
        double r769024 = r769023 / r768998;
        double r769025 = r769022 ? r769016 : r769024;
        double r769026 = r769018 ? r769020 : r769025;
        double r769027 = r769007 ? r769016 : r769026;
        double r769028 = r768995 ? r769005 : r769027;
        return r769028;
}

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 < -1.144600521445903e+98

    1. Initial program 49.3

      \[\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. Simplified49.2

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied pow1/249.2

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\log base}\]
    5. Applied log-pow49.2

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log base}\]
    6. Applied associate-/l*49.2

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

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

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

    if -1.144600521445903e+98 < re < -2.7249016889670465e-212 or -9.044826970858667e-305 < re < 6.270425502185955e+140

    1. Initial program 19.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. Simplified19.5

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied pow1/219.5

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\log base}\]
    5. Applied log-pow19.5

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log base}\]
    6. Applied associate-/l*19.6

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\frac{\log base}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    7. Using strategy rm
    8. Applied clear-num19.6

      \[\leadsto \frac{\frac{1}{2}}{\color{blue}{\frac{1}{\frac{\log \left(re \cdot re + im \cdot im\right)}{\log base}}}}\]
    9. Using strategy rm
    10. Applied associate-/r/19.6

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

    if -2.7249016889670465e-212 < re < -9.044826970858667e-305

    1. Initial program 32.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. Simplified32.0

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied pow1/232.0

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\log base}\]
    5. Applied log-pow32.0

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log base}\]
    6. Applied associate-/l*32.0

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\frac{\log base}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    7. Using strategy rm
    8. Applied clear-num32.0

      \[\leadsto \frac{\frac{1}{2}}{\color{blue}{\frac{1}{\frac{\log \left(re \cdot re + im \cdot im\right)}{\log base}}}}\]
    9. Taylor expanded around 0 32.7

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

    if 6.270425502185955e+140 < re

    1. Initial program 58.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. Simplified58.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.144600521445903 \cdot 10^{+98}:\\ \;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\ \mathbf{elif}\;re \le -2.7249016889670465 \cdot 10^{-212}:\\ \;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{elif}\;re \le -9.044826970858667 \cdot 10^{-305}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 6.270425502185955 \cdot 10^{+140}:\\ \;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re}{\log base}\\ \end{array}\]

Reproduce

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