Average Error: 32.6 → 17.9
Time: 8.4s
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 -3.9103492295191627 \cdot 10^{69}:\\ \;\;\;\;\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 2.69396852746052055 \cdot 10^{50}:\\ \;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}\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{\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 -3.9103492295191627 \cdot 10^{69}:\\
\;\;\;\;\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 2.69396852746052055 \cdot 10^{50}:\\
\;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}\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{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\

\end{array}
double f(double re, double im, double base) {
        double r46758 = re;
        double r46759 = r46758 * r46758;
        double r46760 = im;
        double r46761 = r46760 * r46760;
        double r46762 = r46759 + r46761;
        double r46763 = sqrt(r46762);
        double r46764 = log(r46763);
        double r46765 = base;
        double r46766 = log(r46765);
        double r46767 = r46764 * r46766;
        double r46768 = atan2(r46760, r46758);
        double r46769 = 0.0;
        double r46770 = r46768 * r46769;
        double r46771 = r46767 + r46770;
        double r46772 = r46766 * r46766;
        double r46773 = r46769 * r46769;
        double r46774 = r46772 + r46773;
        double r46775 = r46771 / r46774;
        return r46775;
}

double f(double re, double im, double base) {
        double r46776 = re;
        double r46777 = -3.910349229519163e+69;
        bool r46778 = r46776 <= r46777;
        double r46779 = -1.0;
        double r46780 = r46779 * r46776;
        double r46781 = log(r46780);
        double r46782 = base;
        double r46783 = log(r46782);
        double r46784 = r46781 * r46783;
        double r46785 = im;
        double r46786 = atan2(r46785, r46776);
        double r46787 = 0.0;
        double r46788 = r46786 * r46787;
        double r46789 = r46784 + r46788;
        double r46790 = r46783 * r46783;
        double r46791 = r46787 * r46787;
        double r46792 = r46790 + r46791;
        double r46793 = r46789 / r46792;
        double r46794 = 2.6939685274605205e+50;
        bool r46795 = r46776 <= r46794;
        double r46796 = r46776 * r46776;
        double r46797 = r46785 * r46785;
        double r46798 = r46796 + r46797;
        double r46799 = cbrt(r46798);
        double r46800 = fabs(r46799);
        double r46801 = 0.3333333333333333;
        double r46802 = pow(r46798, r46801);
        double r46803 = sqrt(r46802);
        double r46804 = r46800 * r46803;
        double r46805 = log(r46804);
        double r46806 = r46805 * r46783;
        double r46807 = r46806 + r46788;
        double r46808 = sqrt(r46792);
        double r46809 = r46807 / r46808;
        double r46810 = r46809 / r46808;
        double r46811 = 1.0;
        double r46812 = r46811 / r46776;
        double r46813 = log(r46812);
        double r46814 = r46811 / r46782;
        double r46815 = log(r46814);
        double r46816 = r46813 / r46815;
        double r46817 = r46795 ? r46810 : r46816;
        double r46818 = r46778 ? r46793 : r46817;
        return r46818;
}

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 < -3.910349229519163e+69

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

      \[\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.910349229519163e+69 < re < 2.6939685274605205e+50

    1. Initial program 22.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-sqrt22.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*22.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. Using strategy rm
    6. Applied add-cube-cbrt22.4

      \[\leadsto \frac{\frac{\log \left(\sqrt{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{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}}\]
    7. Applied sqrt-prod22.4

      \[\leadsto \frac{\frac{\log \color{blue}{\left(\sqrt{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt[3]{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}}\]
    8. Simplified22.4

      \[\leadsto \frac{\frac{\log \left(\color{blue}{\left|\sqrt[3]{re \cdot re + im \cdot im}\right|} \cdot \sqrt{\sqrt[3]{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}}\]
    9. Using strategy rm
    10. Applied pow1/322.4

      \[\leadsto \frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}}\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 2.6939685274605205e+50 < re

    1. Initial program 45.9

      \[\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.1

      \[\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.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -3.9103492295191627 \cdot 10^{69}:\\ \;\;\;\;\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 2.69396852746052055 \cdot 10^{50}:\\ \;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}\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{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \end{array}\]

Reproduce

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