Average Error: 31.9 → 18.1
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 -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 r43773 = re;
        double r43774 = r43773 * r43773;
        double r43775 = im;
        double r43776 = r43775 * r43775;
        double r43777 = r43774 + r43776;
        double r43778 = sqrt(r43777);
        double r43779 = log(r43778);
        double r43780 = base;
        double r43781 = log(r43780);
        double r43782 = r43779 * r43781;
        double r43783 = atan2(r43775, r43773);
        double r43784 = 0.0;
        double r43785 = r43783 * r43784;
        double r43786 = r43782 + r43785;
        double r43787 = r43781 * r43781;
        double r43788 = r43784 * r43784;
        double r43789 = r43787 + r43788;
        double r43790 = r43786 / r43789;
        return r43790;
}

double f(double re, double im, double base) {
        double r43791 = re;
        double r43792 = -7.144500791031524e+147;
        bool r43793 = r43791 <= r43792;
        double r43794 = -1.0;
        double r43795 = r43794 * r43791;
        double r43796 = log(r43795);
        double r43797 = base;
        double r43798 = log(r43797);
        double r43799 = r43796 * r43798;
        double r43800 = im;
        double r43801 = atan2(r43800, r43791);
        double r43802 = 0.0;
        double r43803 = r43801 * r43802;
        double r43804 = r43799 + r43803;
        double r43805 = r43798 * r43798;
        double r43806 = r43802 * r43802;
        double r43807 = r43805 + r43806;
        double r43808 = r43804 / r43807;
        double r43809 = -4.364140895511951e-180;
        bool r43810 = r43791 <= r43809;
        double r43811 = r43791 * r43791;
        double r43812 = r43800 * r43800;
        double r43813 = r43811 + r43812;
        double r43814 = sqrt(r43813);
        double r43815 = log(r43814);
        double r43816 = r43815 * r43798;
        double r43817 = r43816 + r43803;
        double r43818 = sqrt(r43807);
        double r43819 = r43817 / r43818;
        double r43820 = r43819 / r43818;
        double r43821 = 1.7504457734233236e-212;
        bool r43822 = r43791 <= r43821;
        double r43823 = log(r43800);
        double r43824 = r43823 / r43798;
        double r43825 = 8.920902837436811e+18;
        bool r43826 = r43791 <= r43825;
        double r43827 = log(r43791);
        double r43828 = r43827 * r43798;
        double r43829 = r43828 + r43803;
        double r43830 = r43829 / r43818;
        double r43831 = r43830 / r43818;
        double r43832 = r43826 ? r43820 : r43831;
        double r43833 = r43822 ? r43824 : r43832;
        double r43834 = r43810 ? r43820 : r43833;
        double r43835 = r43793 ? r43808 : r43834;
        return r43835;
}

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))))