Average Error: 31.7 → 17.2
Time: 24.3s
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 -9.737457083335623306804331892125968495215 \cdot 10^{91}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{elif}\;re \le 2.190589872393484084231686358672553467985 \cdot 10^{99}:\\ \;\;\;\;\frac{\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}
\begin{array}{l}
\mathbf{if}\;re \le -9.737457083335623306804331892125968495215 \cdot 10^{91}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\

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

\mathbf{else}:\\
\;\;\;\;\frac{\log re \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \log base}\\

\end{array}
double f(double re, double im, double base) {
        double r52981 = re;
        double r52982 = r52981 * r52981;
        double r52983 = im;
        double r52984 = r52983 * r52983;
        double r52985 = r52982 + r52984;
        double r52986 = sqrt(r52985);
        double r52987 = log(r52986);
        double r52988 = base;
        double r52989 = log(r52988);
        double r52990 = r52987 * r52989;
        double r52991 = atan2(r52983, r52981);
        double r52992 = 0.0;
        double r52993 = r52991 * r52992;
        double r52994 = r52990 + r52993;
        double r52995 = r52989 * r52989;
        double r52996 = r52992 * r52992;
        double r52997 = r52995 + r52996;
        double r52998 = r52994 / r52997;
        return r52998;
}

double f(double re, double im, double base) {
        double r52999 = re;
        double r53000 = -9.737457083335623e+91;
        bool r53001 = r52999 <= r53000;
        double r53002 = 0.0;
        double r53003 = im;
        double r53004 = atan2(r53003, r52999);
        double r53005 = r53002 * r53004;
        double r53006 = base;
        double r53007 = log(r53006);
        double r53008 = -r52999;
        double r53009 = log(r53008);
        double r53010 = r53007 * r53009;
        double r53011 = r53005 + r53010;
        double r53012 = r53002 * r53002;
        double r53013 = 2.0;
        double r53014 = pow(r53007, r53013);
        double r53015 = r53012 + r53014;
        double r53016 = sqrt(r53015);
        double r53017 = r53011 / r53016;
        double r53018 = 1.0;
        double r53019 = r53018 / r53016;
        double r53020 = r53017 * r53019;
        double r53021 = 2.190589872393484e+99;
        bool r53022 = r52999 <= r53021;
        double r53023 = r53003 * r53003;
        double r53024 = r52999 * r52999;
        double r53025 = r53023 + r53024;
        double r53026 = sqrt(r53025);
        double r53027 = log(r53026);
        double r53028 = r53007 * r53027;
        double r53029 = r53005 + r53028;
        double r53030 = r53029 / r53016;
        double r53031 = r53007 * r53007;
        double r53032 = r53012 + r53031;
        double r53033 = sqrt(r53032);
        double r53034 = r53030 / r53033;
        double r53035 = log(r52999);
        double r53036 = r53035 * r53007;
        double r53037 = r53036 + r53005;
        double r53038 = r53037 / r53032;
        double r53039 = r53022 ? r53034 : r53038;
        double r53040 = r53001 ? r53020 : r53039;
        return r53040;
}

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 < -9.737457083335623e+91

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

      \[\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 *-un-lft-identity50.1

      \[\leadsto \frac{\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)}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    5. Applied times-frac50.1

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}} \cdot \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}}\]
    7. Simplified50.1

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

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

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

    if -9.737457083335623e+91 < re < 2.190589872393484e+99

    1. Initial program 21.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. Using strategy rm
    3. Applied add-sqr-sqrt21.4

      \[\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*21.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}}}\]
    5. Simplified21.4

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

    if 2.190589872393484e+99 < re

    1. Initial program 51.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. Taylor expanded around inf 9.9

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

      \[\leadsto \frac{\color{blue}{\left(-\log re\right) \cdot \left(-\log base\right)} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.2

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

Reproduce

herbie shell --seed 2019196 
(FPCore (re im base)
  :name "math.log/2 on complex, real part"
  (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))