Average Error: 31.7 → 18.0
Time: 25.0s
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.737740429468826036821242422394075266484 \cdot 10^{80}:\\ \;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\ \mathbf{elif}\;re \le -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base + \log base\right) \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 1.816298243183373130006182388120925906125 \cdot 10^{-199}:\\ \;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log im \cdot \log base}{0.0 \cdot 0.0 + \log base \cdot \log base}\\ \mathbf{elif}\;re \le 3.499633159282764357460607627307150268823 \cdot 10^{118}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) + \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\right)} \cdot \left(\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) + \left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\right)\right)}\\ \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.737740429468826036821242422394075266484 \cdot 10^{80}:\\
\;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\

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

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

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

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

\end{array}
double f(double re, double im, double base) {
        double r1945958 = re;
        double r1945959 = r1945958 * r1945958;
        double r1945960 = im;
        double r1945961 = r1945960 * r1945960;
        double r1945962 = r1945959 + r1945961;
        double r1945963 = sqrt(r1945962);
        double r1945964 = log(r1945963);
        double r1945965 = base;
        double r1945966 = log(r1945965);
        double r1945967 = r1945964 * r1945966;
        double r1945968 = atan2(r1945960, r1945958);
        double r1945969 = 0.0;
        double r1945970 = r1945968 * r1945969;
        double r1945971 = r1945967 + r1945970;
        double r1945972 = r1945966 * r1945966;
        double r1945973 = r1945969 * r1945969;
        double r1945974 = r1945972 + r1945973;
        double r1945975 = r1945971 / r1945974;
        return r1945975;
}

double f(double re, double im, double base) {
        double r1945976 = re;
        double r1945977 = -1.737740429468826e+80;
        bool r1945978 = r1945976 <= r1945977;
        double r1945979 = -1.0;
        double r1945980 = r1945979 / r1945976;
        double r1945981 = log(r1945980);
        double r1945982 = base;
        double r1945983 = log(r1945982);
        double r1945984 = r1945981 / r1945983;
        double r1945985 = r1945984 * r1945979;
        double r1945986 = -3.5661932702760735e-214;
        bool r1945987 = r1945976 <= r1945986;
        double r1945988 = im;
        double r1945989 = r1945988 * r1945988;
        double r1945990 = r1945976 * r1945976;
        double r1945991 = r1945989 + r1945990;
        double r1945992 = sqrt(r1945991);
        double r1945993 = log(r1945992);
        double r1945994 = r1945983 * r1945993;
        double r1945995 = atan2(r1945988, r1945976);
        double r1945996 = 0.0;
        double r1945997 = r1945995 * r1945996;
        double r1945998 = r1945994 + r1945997;
        double r1945999 = cbrt(r1945982);
        double r1946000 = log(r1945999);
        double r1946001 = r1945983 * r1946000;
        double r1946002 = r1945983 + r1945983;
        double r1946003 = r1946002 * r1946000;
        double r1946004 = r1946001 + r1946003;
        double r1946005 = r1945996 * r1945996;
        double r1946006 = r1946004 + r1946005;
        double r1946007 = r1945998 / r1946006;
        double r1946008 = 1.8162982431833731e-199;
        bool r1946009 = r1945976 <= r1946008;
        double r1946010 = log(r1945988);
        double r1946011 = r1946010 * r1945983;
        double r1946012 = r1945997 + r1946011;
        double r1946013 = r1945983 * r1945983;
        double r1946014 = r1946005 + r1946013;
        double r1946015 = r1946012 / r1946014;
        double r1946016 = 3.4996331592827644e+118;
        bool r1946017 = r1945976 <= r1946016;
        double r1946018 = 1.0;
        double r1946019 = r1945997 * r1945997;
        double r1946020 = r1946019 * r1945997;
        double r1946021 = r1945994 * r1945994;
        double r1946022 = r1945994 * r1946021;
        double r1946023 = r1946020 + r1946022;
        double r1946024 = r1946014 / r1946023;
        double r1946025 = r1945997 * r1945994;
        double r1946026 = r1946019 - r1946025;
        double r1946027 = r1946021 + r1946026;
        double r1946028 = r1946024 * r1946027;
        double r1946029 = r1946018 / r1946028;
        double r1946030 = log(r1945976);
        double r1946031 = -r1946030;
        double r1946032 = -r1945983;
        double r1946033 = r1946031 / r1946032;
        double r1946034 = r1946017 ? r1946029 : r1946033;
        double r1946035 = r1946009 ? r1946015 : r1946034;
        double r1946036 = r1945987 ? r1946007 : r1946035;
        double r1946037 = r1945978 ? r1945985 : r1946036;
        return r1946037;
}

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 5 regimes
  2. if re < -1.737740429468826e+80

    1. Initial program 47.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. 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. Simplified10.1

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

    if -1.737740429468826e+80 < re < -3.5661932702760735e-214

    1. Initial program 19.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-cbrt19.2

      \[\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-prod19.2

      \[\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-in19.2

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

      \[\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}{\log \left(\sqrt[3]{base}\right) \cdot \left(\log base + \log base\right)} + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\]

    if -3.5661932702760735e-214 < re < 1.8162982431833731e-199

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

      \[\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 1.8162982431833731e-199 < re < 3.4996331592827644e+118

    1. Initial program 18.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 clear-num18.5

      \[\leadsto \color{blue}{\frac{1}{\frac{\log base \cdot \log base + 0.0 \cdot 0.0}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}}\]
    4. Using strategy rm
    5. Applied flip3-+18.6

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

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

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

    if 3.4996331592827644e+118 < re

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.737740429468826036821242422394075266484 \cdot 10^{80}:\\ \;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\ \mathbf{elif}\;re \le -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base + \log base\right) \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 1.816298243183373130006182388120925906125 \cdot 10^{-199}:\\ \;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log im \cdot \log base}{0.0 \cdot 0.0 + \log base \cdot \log base}\\ \mathbf{elif}\;re \le 3.499633159282764357460607627307150268823 \cdot 10^{118}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) + \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\right)} \cdot \left(\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) + \left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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