Average Error: 32.2 → 17.9
Time: 29.9s
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 -2.1066157852653055 \cdot 10^{151}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -2.5119673460865214 \cdot 10^{-248}:\\ \;\;\;\;\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}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{elif}\;re \le 3.0649798362056419 \cdot 10^{-217}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.0477792868396227 \cdot 10^{135}:\\ \;\;\;\;\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}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \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 -2.1066157852653055 \cdot 10^{151}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

\mathbf{elif}\;re \le -2.5119673460865214 \cdot 10^{-248}:\\
\;\;\;\;\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}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\

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

\mathbf{elif}\;re \le 1.0477792868396227 \cdot 10^{135}:\\
\;\;\;\;\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}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r54707 = re;
        double r54708 = r54707 * r54707;
        double r54709 = im;
        double r54710 = r54709 * r54709;
        double r54711 = r54708 + r54710;
        double r54712 = sqrt(r54711);
        double r54713 = log(r54712);
        double r54714 = base;
        double r54715 = log(r54714);
        double r54716 = r54713 * r54715;
        double r54717 = atan2(r54709, r54707);
        double r54718 = 0.0;
        double r54719 = r54717 * r54718;
        double r54720 = r54716 + r54719;
        double r54721 = r54715 * r54715;
        double r54722 = r54718 * r54718;
        double r54723 = r54721 + r54722;
        double r54724 = r54720 / r54723;
        return r54724;
}

double f(double re, double im, double base) {
        double r54725 = re;
        double r54726 = -2.1066157852653055e+151;
        bool r54727 = r54725 <= r54726;
        double r54728 = -1.0;
        double r54729 = r54728 / r54725;
        double r54730 = log(r54729);
        double r54731 = -r54730;
        double r54732 = base;
        double r54733 = log(r54732);
        double r54734 = r54731 / r54733;
        double r54735 = -2.5119673460865214e-248;
        bool r54736 = r54725 <= r54735;
        double r54737 = r54725 * r54725;
        double r54738 = im;
        double r54739 = r54738 * r54738;
        double r54740 = r54737 + r54739;
        double r54741 = sqrt(r54740);
        double r54742 = log(r54741);
        double r54743 = r54742 * r54733;
        double r54744 = atan2(r54738, r54725);
        double r54745 = 0.0;
        double r54746 = r54744 * r54745;
        double r54747 = r54743 + r54746;
        double r54748 = r54745 * r54745;
        double r54749 = 2.0;
        double r54750 = pow(r54733, r54749);
        double r54751 = r54748 + r54750;
        double r54752 = sqrt(r54751);
        double r54753 = r54747 / r54752;
        double r54754 = 1.0;
        double r54755 = r54754 / r54752;
        double r54756 = r54753 * r54755;
        double r54757 = 3.064979836205642e-217;
        bool r54758 = r54725 <= r54757;
        double r54759 = log(r54738);
        double r54760 = r54759 / r54733;
        double r54761 = 1.0477792868396227e+135;
        bool r54762 = r54725 <= r54761;
        double r54763 = log(r54725);
        double r54764 = -r54763;
        double r54765 = -r54733;
        double r54766 = r54764 / r54765;
        double r54767 = r54762 ? r54756 : r54766;
        double r54768 = r54758 ? r54760 : r54767;
        double r54769 = r54736 ? r54756 : r54768;
        double r54770 = r54727 ? r54734 : r54769;
        return r54770;
}

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 < -2.1066157852653055e+151

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

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

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

    if -2.1066157852653055e+151 < re < -2.5119673460865214e-248 or 3.064979836205642e-217 < re < 1.0477792868396227e+135

    1. Initial program 19.8

      \[\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-sqrt19.8

      \[\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*19.7

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

      \[\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}}\]
    6. Using strategy rm
    7. Applied div-inv19.8

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

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

    if -2.5119673460865214e-248 < re < 3.064979836205642e-217

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

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

    if 1.0477792868396227e+135 < re

    1. Initial program 58.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.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.1066157852653055 \cdot 10^{151}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -2.5119673460865214 \cdot 10^{-248}:\\ \;\;\;\;\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}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{elif}\;re \le 3.0649798362056419 \cdot 10^{-217}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.0477792868396227 \cdot 10^{135}:\\ \;\;\;\;\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}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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