Average Error: 32.2 → 17.9
Time: 7.6s
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 -3430107507575859710:\\ \;\;\;\;\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 -1.8970684490263893 \cdot 10^{-253}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{elif}\;re \le 5.99350299604991836 \cdot 10^{-196}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.1632720701534676 \cdot 10^{72}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \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 -3430107507575859710:\\
\;\;\;\;\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 -1.8970684490263893 \cdot 10^{-253}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\

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

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

\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 r44764 = re;
        double r44765 = r44764 * r44764;
        double r44766 = im;
        double r44767 = r44766 * r44766;
        double r44768 = r44765 + r44767;
        double r44769 = sqrt(r44768);
        double r44770 = log(r44769);
        double r44771 = base;
        double r44772 = log(r44771);
        double r44773 = r44770 * r44772;
        double r44774 = atan2(r44766, r44764);
        double r44775 = 0.0;
        double r44776 = r44774 * r44775;
        double r44777 = r44773 + r44776;
        double r44778 = r44772 * r44772;
        double r44779 = r44775 * r44775;
        double r44780 = r44778 + r44779;
        double r44781 = r44777 / r44780;
        return r44781;
}

double f(double re, double im, double base) {
        double r44782 = re;
        double r44783 = -3.4301075075758597e+18;
        bool r44784 = r44782 <= r44783;
        double r44785 = -1.0;
        double r44786 = r44785 * r44782;
        double r44787 = log(r44786);
        double r44788 = base;
        double r44789 = log(r44788);
        double r44790 = r44787 * r44789;
        double r44791 = im;
        double r44792 = atan2(r44791, r44782);
        double r44793 = 0.0;
        double r44794 = r44792 * r44793;
        double r44795 = r44790 + r44794;
        double r44796 = r44789 * r44789;
        double r44797 = r44793 * r44793;
        double r44798 = r44796 + r44797;
        double r44799 = r44795 / r44798;
        double r44800 = -1.8970684490263893e-253;
        bool r44801 = r44782 <= r44800;
        double r44802 = r44782 * r44782;
        double r44803 = r44791 * r44791;
        double r44804 = r44802 + r44803;
        double r44805 = sqrt(r44804);
        double r44806 = log(r44805);
        double r44807 = r44806 * r44789;
        double r44808 = r44807 + r44794;
        double r44809 = 3.0;
        double r44810 = pow(r44793, r44809);
        double r44811 = -r44810;
        double r44812 = r44811 * r44793;
        double r44813 = 4.0;
        double r44814 = pow(r44789, r44813);
        double r44815 = r44812 + r44814;
        double r44816 = r44808 / r44815;
        double r44817 = r44796 - r44797;
        double r44818 = r44816 * r44817;
        double r44819 = 5.993502996049918e-196;
        bool r44820 = r44782 <= r44819;
        double r44821 = log(r44791);
        double r44822 = r44821 / r44789;
        double r44823 = 1.1632720701534676e+72;
        bool r44824 = r44782 <= r44823;
        double r44825 = 1.0;
        double r44826 = r44825 / r44782;
        double r44827 = log(r44826);
        double r44828 = r44825 / r44788;
        double r44829 = log(r44828);
        double r44830 = r44827 / r44829;
        double r44831 = r44824 ? r44818 : r44830;
        double r44832 = r44820 ? r44822 : r44831;
        double r44833 = r44801 ? r44818 : r44832;
        double r44834 = r44784 ? r44799 : r44833;
        return r44834;
}

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 < -3.4301075075758597e+18

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

      \[\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 -3.4301075075758597e+18 < re < -1.8970684490263893e-253 or 5.993502996049918e-196 < re < 1.1632720701534676e+72

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

      \[\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}{\frac{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right) - \left(0.0 \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0\right)}{\log base \cdot \log base - 0.0 \cdot 0.0}}}\]
    4. Applied associate-/r/19.6

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

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

    if -1.8970684490263893e-253 < re < 5.993502996049918e-196

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

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

    if 1.1632720701534676e+72 < re

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -3430107507575859710:\\ \;\;\;\;\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 -1.8970684490263893 \cdot 10^{-253}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{elif}\;re \le 5.99350299604991836 \cdot 10^{-196}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.1632720701534676 \cdot 10^{72}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \end{array}\]

Reproduce

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