Average Error: 31.7 → 18.0
Time: 25.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.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{\log im}{\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(\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) + \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)} \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{\log im}{\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(\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) + \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)} \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 r1944992 = re;
        double r1944993 = r1944992 * r1944992;
        double r1944994 = im;
        double r1944995 = r1944994 * r1944994;
        double r1944996 = r1944993 + r1944995;
        double r1944997 = sqrt(r1944996);
        double r1944998 = log(r1944997);
        double r1944999 = base;
        double r1945000 = log(r1944999);
        double r1945001 = r1944998 * r1945000;
        double r1945002 = atan2(r1944994, r1944992);
        double r1945003 = 0.0;
        double r1945004 = r1945002 * r1945003;
        double r1945005 = r1945001 + r1945004;
        double r1945006 = r1945000 * r1945000;
        double r1945007 = r1945003 * r1945003;
        double r1945008 = r1945006 + r1945007;
        double r1945009 = r1945005 / r1945008;
        return r1945009;
}

double f(double re, double im, double base) {
        double r1945010 = re;
        double r1945011 = -1.737740429468826e+80;
        bool r1945012 = r1945010 <= r1945011;
        double r1945013 = -1.0;
        double r1945014 = r1945013 / r1945010;
        double r1945015 = log(r1945014);
        double r1945016 = base;
        double r1945017 = log(r1945016);
        double r1945018 = r1945015 / r1945017;
        double r1945019 = r1945018 * r1945013;
        double r1945020 = -3.5661932702760735e-214;
        bool r1945021 = r1945010 <= r1945020;
        double r1945022 = im;
        double r1945023 = r1945022 * r1945022;
        double r1945024 = r1945010 * r1945010;
        double r1945025 = r1945023 + r1945024;
        double r1945026 = sqrt(r1945025);
        double r1945027 = log(r1945026);
        double r1945028 = r1945017 * r1945027;
        double r1945029 = atan2(r1945022, r1945010);
        double r1945030 = 0.0;
        double r1945031 = r1945029 * r1945030;
        double r1945032 = r1945028 + r1945031;
        double r1945033 = cbrt(r1945016);
        double r1945034 = log(r1945033);
        double r1945035 = r1945017 * r1945034;
        double r1945036 = r1945017 + r1945017;
        double r1945037 = r1945036 * r1945034;
        double r1945038 = r1945035 + r1945037;
        double r1945039 = r1945030 * r1945030;
        double r1945040 = r1945038 + r1945039;
        double r1945041 = r1945032 / r1945040;
        double r1945042 = 1.8162982431833731e-199;
        bool r1945043 = r1945010 <= r1945042;
        double r1945044 = log(r1945022);
        double r1945045 = r1945044 / r1945017;
        double r1945046 = 3.4996331592827644e+118;
        bool r1945047 = r1945010 <= r1945046;
        double r1945048 = 1.0;
        double r1945049 = r1945017 * r1945017;
        double r1945050 = r1945039 + r1945049;
        double r1945051 = r1945028 * r1945028;
        double r1945052 = r1945028 * r1945051;
        double r1945053 = r1945031 * r1945031;
        double r1945054 = r1945031 * r1945053;
        double r1945055 = r1945052 + r1945054;
        double r1945056 = r1945050 / r1945055;
        double r1945057 = r1945031 * r1945028;
        double r1945058 = r1945053 - r1945057;
        double r1945059 = r1945051 + r1945058;
        double r1945060 = r1945056 * r1945059;
        double r1945061 = r1945048 / r1945060;
        double r1945062 = log(r1945010);
        double r1945063 = -r1945062;
        double r1945064 = -r1945017;
        double r1945065 = r1945063 / r1945064;
        double r1945066 = r1945047 ? r1945061 : r1945065;
        double r1945067 = r1945043 ? r1945045 : r1945066;
        double r1945068 = r1945021 ? r1945041 : r1945067;
        double r1945069 = r1945012 ? r1945019 : r1945068;
        return r1945069;
}

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

    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{\log im}{\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(\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) + \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)} \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))))