Average Error: 32.1 → 18.3
Time: 22.2s
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.276364532810895682126701738942978934868 \cdot 10^{99}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right) + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\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 -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \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.276364532810895682126701738942978934868 \cdot 10^{99}:\\
\;\;\;\;\frac{\log base \cdot \log \left(-re\right) + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\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 -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\

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

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

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

\end{array}
double f(double re, double im, double base) {
        double r2144833 = re;
        double r2144834 = r2144833 * r2144833;
        double r2144835 = im;
        double r2144836 = r2144835 * r2144835;
        double r2144837 = r2144834 + r2144836;
        double r2144838 = sqrt(r2144837);
        double r2144839 = log(r2144838);
        double r2144840 = base;
        double r2144841 = log(r2144840);
        double r2144842 = r2144839 * r2144841;
        double r2144843 = atan2(r2144835, r2144833);
        double r2144844 = 0.0;
        double r2144845 = r2144843 * r2144844;
        double r2144846 = r2144842 + r2144845;
        double r2144847 = r2144841 * r2144841;
        double r2144848 = r2144844 * r2144844;
        double r2144849 = r2144847 + r2144848;
        double r2144850 = r2144846 / r2144849;
        return r2144850;
}

double f(double re, double im, double base) {
        double r2144851 = re;
        double r2144852 = -2.2763645328108957e+99;
        bool r2144853 = r2144851 <= r2144852;
        double r2144854 = base;
        double r2144855 = log(r2144854);
        double r2144856 = -r2144851;
        double r2144857 = log(r2144856);
        double r2144858 = r2144855 * r2144857;
        double r2144859 = 0.0;
        double r2144860 = im;
        double r2144861 = atan2(r2144860, r2144851);
        double r2144862 = r2144859 * r2144861;
        double r2144863 = r2144858 + r2144862;
        double r2144864 = r2144859 * r2144859;
        double r2144865 = r2144855 * r2144855;
        double r2144866 = r2144864 + r2144865;
        double r2144867 = sqrt(r2144866);
        double r2144868 = r2144863 / r2144867;
        double r2144869 = 1.0;
        double r2144870 = r2144869 / r2144867;
        double r2144871 = r2144868 * r2144870;
        double r2144872 = -8.321374673661263e-172;
        bool r2144873 = r2144851 <= r2144872;
        double r2144874 = r2144860 * r2144860;
        double r2144875 = r2144851 * r2144851;
        double r2144876 = r2144874 + r2144875;
        double r2144877 = sqrt(r2144876);
        double r2144878 = log(r2144877);
        double r2144879 = r2144878 * r2144855;
        double r2144880 = r2144862 + r2144879;
        double r2144881 = cbrt(r2144854);
        double r2144882 = log(r2144881);
        double r2144883 = r2144882 * r2144855;
        double r2144884 = r2144883 + r2144883;
        double r2144885 = r2144884 + r2144883;
        double r2144886 = r2144885 + r2144864;
        double r2144887 = r2144880 / r2144886;
        double r2144888 = -9.727151345646149e-225;
        bool r2144889 = r2144851 <= r2144888;
        double r2144890 = log(r2144860);
        double r2144891 = r2144890 / r2144855;
        double r2144892 = 2.3548449389898907e+121;
        bool r2144893 = r2144851 <= r2144892;
        double r2144894 = log(r2144851);
        double r2144895 = -r2144894;
        double r2144896 = -r2144855;
        double r2144897 = r2144895 / r2144896;
        double r2144898 = r2144893 ? r2144887 : r2144897;
        double r2144899 = r2144889 ? r2144891 : r2144898;
        double r2144900 = r2144873 ? r2144887 : r2144899;
        double r2144901 = r2144853 ? r2144871 : r2144900;
        return r2144901;
}

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.2763645328108957e+99

    1. Initial program 51.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-sqrt51.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 *-un-lft-identity51.8

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

      \[\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. Taylor expanded around -inf 10.8

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

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

    if -2.2763645328108957e+99 < re < -8.321374673661263e-172 or -9.727151345646149e-225 < re < 2.3548449389898907e+121

    1. Initial program 21.2

      \[\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-cube-cbrt21.3

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

      \[\leadsto \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 \color{blue}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    5. Applied distribute-rgt-in21.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}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right)} + 0.0 \cdot 0.0}\]
    6. Simplified21.3

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

    if -8.321374673661263e-172 < re < -9.727151345646149e-225

    1. Initial program 29.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. Taylor expanded around 0 37.5

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

    if 2.3548449389898907e+121 < re

    1. Initial program 55.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.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.276364532810895682126701738942978934868 \cdot 10^{99}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right) + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\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 -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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