Average Error: 31.6 → 17.6
Time: 21.5s
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}\;im \le -3.181961503270047933638306263352911428766 \cdot 10^{94}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{im}\right)}{\log base}\\ \mathbf{elif}\;im \le 2.041972308450815691735066150411629060859 \cdot 10^{122}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\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}\;im \le -3.181961503270047933638306263352911428766 \cdot 10^{94}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{im}\right)}{\log base}\\

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

\mathbf{else}:\\
\;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\

\end{array}
double f(double re, double im, double base) {
        double r40689 = re;
        double r40690 = r40689 * r40689;
        double r40691 = im;
        double r40692 = r40691 * r40691;
        double r40693 = r40690 + r40692;
        double r40694 = sqrt(r40693);
        double r40695 = log(r40694);
        double r40696 = base;
        double r40697 = log(r40696);
        double r40698 = r40695 * r40697;
        double r40699 = atan2(r40691, r40689);
        double r40700 = 0.0;
        double r40701 = r40699 * r40700;
        double r40702 = r40698 + r40701;
        double r40703 = r40697 * r40697;
        double r40704 = r40700 * r40700;
        double r40705 = r40703 + r40704;
        double r40706 = r40702 / r40705;
        return r40706;
}

double f(double re, double im, double base) {
        double r40707 = im;
        double r40708 = -3.181961503270048e+94;
        bool r40709 = r40707 <= r40708;
        double r40710 = -1.0;
        double r40711 = r40710 / r40707;
        double r40712 = log(r40711);
        double r40713 = -r40712;
        double r40714 = base;
        double r40715 = log(r40714);
        double r40716 = r40713 / r40715;
        double r40717 = 2.0419723084508157e+122;
        bool r40718 = r40707 <= r40717;
        double r40719 = re;
        double r40720 = r40719 * r40719;
        double r40721 = r40707 * r40707;
        double r40722 = r40720 + r40721;
        double r40723 = sqrt(r40722);
        double r40724 = log(r40723);
        double r40725 = r40724 * r40715;
        double r40726 = atan2(r40707, r40719);
        double r40727 = 0.0;
        double r40728 = r40726 * r40727;
        double r40729 = r40725 + r40728;
        double r40730 = 2.0;
        double r40731 = pow(r40715, r40730);
        double r40732 = r40727 * r40727;
        double r40733 = r40731 + r40732;
        double r40734 = sqrt(r40733);
        double r40735 = r40729 / r40734;
        double r40736 = 1.0;
        double r40737 = r40732 + r40731;
        double r40738 = sqrt(r40737);
        double r40739 = r40736 / r40738;
        double r40740 = r40735 * r40739;
        double r40741 = log(r40707);
        double r40742 = r40741 * r40715;
        double r40743 = r40742 + r40728;
        double r40744 = r40715 * r40715;
        double r40745 = r40744 + r40732;
        double r40746 = r40743 / r40745;
        double r40747 = r40718 ? r40740 : r40746;
        double r40748 = r40709 ? r40716 : r40747;
        return r40748;
}

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 im < -3.181961503270048e+94

    1. Initial program 50.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-sqrt50.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*50.5

      \[\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. Simplified50.5

      \[\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{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity50.5

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

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

      \[\leadsto \frac{\color{blue}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}}{\sqrt{1} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    10. Applied times-frac50.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}{\sqrt{1}} \cdot \frac{\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    11. Simplified50.6

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

      \[\leadsto \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \color{blue}{\frac{1}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\]
    13. Taylor expanded around -inf 64.0

      \[\leadsto \color{blue}{-1 \cdot \frac{\log \left(\frac{-1}{im}\right)}{\log -1 - \log \left(\frac{-1}{base}\right)}}\]
    14. Simplified8.9

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

    if -3.181961503270048e+94 < im < 2.0419723084508157e+122

    1. Initial program 21.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. Using strategy rm
    3. Applied add-sqr-sqrt21.7

      \[\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*21.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. Simplified21.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{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    6. Using strategy rm
    7. Applied div-inv21.7

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

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

    if 2.0419723084508157e+122 < im

    1. Initial program 56.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 0 8.2

      \[\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}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -3.181961503270047933638306263352911428766 \cdot 10^{94}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{im}\right)}{\log base}\\ \mathbf{elif}\;im \le 2.041972308450815691735066150411629060859 \cdot 10^{122}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \end{array}\]

Reproduce

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