Average Error: 32.3 → 17.8
Time: 49.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 -1.7816411661937366 \cdot 10^{+118}:\\ \;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -3.60594831894126 \cdot 10^{-205}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{elif}\;re \le -6.019878598432241 \cdot 10^{-287}:\\ \;\;\;\;\frac{\log im \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \log base}\\ \mathbf{elif}\;re \le 7.02389227678964 \cdot 10^{+119}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}
\begin{array}{l}
\mathbf{if}\;re \le -1.7816411661937366 \cdot 10^{+118}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\

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

\mathbf{elif}\;re \le -6.019878598432241 \cdot 10^{-287}:\\
\;\;\;\;\frac{\log im \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r1807697 = re;
        double r1807698 = r1807697 * r1807697;
        double r1807699 = im;
        double r1807700 = r1807699 * r1807699;
        double r1807701 = r1807698 + r1807700;
        double r1807702 = sqrt(r1807701);
        double r1807703 = log(r1807702);
        double r1807704 = base;
        double r1807705 = log(r1807704);
        double r1807706 = r1807703 * r1807705;
        double r1807707 = atan2(r1807699, r1807697);
        double r1807708 = 0.0;
        double r1807709 = r1807707 * r1807708;
        double r1807710 = r1807706 + r1807709;
        double r1807711 = r1807705 * r1807705;
        double r1807712 = r1807708 * r1807708;
        double r1807713 = r1807711 + r1807712;
        double r1807714 = r1807710 / r1807713;
        return r1807714;
}

double f(double re, double im, double base) {
        double r1807715 = re;
        double r1807716 = -1.7816411661937366e+118;
        bool r1807717 = r1807715 <= r1807716;
        double r1807718 = -1.0;
        double r1807719 = r1807718 / r1807715;
        double r1807720 = log(r1807719);
        double r1807721 = base;
        double r1807722 = log(r1807721);
        double r1807723 = r1807720 / r1807722;
        double r1807724 = -r1807723;
        double r1807725 = -3.60594831894126e-205;
        bool r1807726 = r1807715 <= r1807725;
        double r1807727 = 0.0;
        double r1807728 = im;
        double r1807729 = atan2(r1807728, r1807715);
        double r1807730 = r1807727 * r1807729;
        double r1807731 = r1807715 * r1807715;
        double r1807732 = r1807728 * r1807728;
        double r1807733 = r1807731 + r1807732;
        double r1807734 = sqrt(r1807733);
        double r1807735 = cbrt(r1807734);
        double r1807736 = r1807735 * r1807735;
        double r1807737 = r1807736 * r1807735;
        double r1807738 = log(r1807737);
        double r1807739 = r1807738 * r1807722;
        double r1807740 = r1807730 + r1807739;
        double r1807741 = r1807727 * r1807727;
        double r1807742 = r1807722 * r1807722;
        double r1807743 = r1807741 + r1807742;
        double r1807744 = sqrt(r1807743);
        double r1807745 = r1807740 / r1807744;
        double r1807746 = 1.0;
        double r1807747 = r1807746 / r1807744;
        double r1807748 = r1807745 * r1807747;
        double r1807749 = -6.019878598432241e-287;
        bool r1807750 = r1807715 <= r1807749;
        double r1807751 = log(r1807728);
        double r1807752 = r1807751 * r1807722;
        double r1807753 = r1807752 + r1807730;
        double r1807754 = r1807753 / r1807743;
        double r1807755 = 7.02389227678964e+119;
        bool r1807756 = r1807715 <= r1807755;
        double r1807757 = log(r1807715);
        double r1807758 = -r1807757;
        double r1807759 = -r1807722;
        double r1807760 = r1807758 / r1807759;
        double r1807761 = r1807756 ? r1807748 : r1807760;
        double r1807762 = r1807750 ? r1807754 : r1807761;
        double r1807763 = r1807726 ? r1807748 : r1807762;
        double r1807764 = r1807717 ? r1807724 : r1807763;
        return r1807764;
}

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.7816411661937366e+118

    1. Initial program 54.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 64.0

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

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

    if -1.7816411661937366e+118 < re < -3.60594831894126e-205 or -6.019878598432241e-287 < re < 7.02389227678964e+119

    1. Initial program 21.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-sqrt21.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-identity21.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-frac21.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. Using strategy rm
    7. Applied add-cube-cbrt21.1

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

    if -3.60594831894126e-205 < re < -6.019878598432241e-287

    1. Initial program 30.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 0 33.4

      \[\leadsto \frac{\log \color{blue}{im} \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]

    if 7.02389227678964e+119 < re

    1. Initial program 54.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 7.9

      \[\leadsto \color{blue}{\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}}\]
    3. Simplified7.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.7816411661937366 \cdot 10^{+118}:\\ \;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -3.60594831894126 \cdot 10^{-205}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{elif}\;re \le -6.019878598432241 \cdot 10^{-287}:\\ \;\;\;\;\frac{\log im \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \log base}\\ \mathbf{elif}\;re \le 7.02389227678964 \cdot 10^{+119}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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