Average Error: 30.4 → 16.8
Time: 22.4s
Precision: 64
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
\[\begin{array}{l} \mathbf{if}\;re \le -2.929915037932605 \cdot 10^{+116}:\\ \;\;\;\;\frac{-1}{\frac{\log base}{\log \left(\frac{-1}{re}\right)}}\\ \mathbf{elif}\;re \le 3.688680909166565 \cdot 10^{-273}:\\ \;\;\;\;\frac{1}{\log base} \cdot \log \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right)\\ \mathbf{elif}\;re \le 1.483347789429306 \cdot 10^{-239}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.687660857647486 \cdot 10^{+127}:\\ \;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\log base} \cdot \log re\\ \end{array}\]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}
\begin{array}{l}
\mathbf{if}\;re \le -2.929915037932605 \cdot 10^{+116}:\\
\;\;\;\;\frac{-1}{\frac{\log base}{\log \left(\frac{-1}{re}\right)}}\\

\mathbf{elif}\;re \le 3.688680909166565 \cdot 10^{-273}:\\
\;\;\;\;\frac{1}{\log base} \cdot \log \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right)\\

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

\mathbf{elif}\;re \le 1.687660857647486 \cdot 10^{+127}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{\log base} \cdot \log re\\

\end{array}
double f(double re, double im, double base) {
        double r2009778 = re;
        double r2009779 = r2009778 * r2009778;
        double r2009780 = im;
        double r2009781 = r2009780 * r2009780;
        double r2009782 = r2009779 + r2009781;
        double r2009783 = sqrt(r2009782);
        double r2009784 = log(r2009783);
        double r2009785 = base;
        double r2009786 = log(r2009785);
        double r2009787 = r2009784 * r2009786;
        double r2009788 = atan2(r2009780, r2009778);
        double r2009789 = 0.0;
        double r2009790 = r2009788 * r2009789;
        double r2009791 = r2009787 + r2009790;
        double r2009792 = r2009786 * r2009786;
        double r2009793 = r2009789 * r2009789;
        double r2009794 = r2009792 + r2009793;
        double r2009795 = r2009791 / r2009794;
        return r2009795;
}

double f(double re, double im, double base) {
        double r2009796 = re;
        double r2009797 = -2.929915037932605e+116;
        bool r2009798 = r2009796 <= r2009797;
        double r2009799 = -1.0;
        double r2009800 = base;
        double r2009801 = log(r2009800);
        double r2009802 = r2009799 / r2009796;
        double r2009803 = log(r2009802);
        double r2009804 = r2009801 / r2009803;
        double r2009805 = r2009799 / r2009804;
        double r2009806 = 3.688680909166565e-273;
        bool r2009807 = r2009796 <= r2009806;
        double r2009808 = 1.0;
        double r2009809 = r2009808 / r2009801;
        double r2009810 = im;
        double r2009811 = r2009810 * r2009810;
        double r2009812 = r2009796 * r2009796;
        double r2009813 = r2009811 + r2009812;
        double r2009814 = sqrt(r2009813);
        double r2009815 = sqrt(r2009814);
        double r2009816 = r2009815 * r2009815;
        double r2009817 = log(r2009816);
        double r2009818 = r2009809 * r2009817;
        double r2009819 = 1.483347789429306e-239;
        bool r2009820 = r2009796 <= r2009819;
        double r2009821 = log(r2009810);
        double r2009822 = r2009821 / r2009801;
        double r2009823 = 1.687660857647486e+127;
        bool r2009824 = r2009796 <= r2009823;
        double r2009825 = 0.5;
        double r2009826 = log(r2009813);
        double r2009827 = r2009801 / r2009826;
        double r2009828 = r2009825 / r2009827;
        double r2009829 = log(r2009796);
        double r2009830 = r2009809 * r2009829;
        double r2009831 = r2009824 ? r2009828 : r2009830;
        double r2009832 = r2009820 ? r2009822 : r2009831;
        double r2009833 = r2009807 ? r2009818 : r2009832;
        double r2009834 = r2009798 ? r2009805 : r2009833;
        return r2009834;
}

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 < -2.929915037932605e+116

    1. Initial program 52.3

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified52.3

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Taylor expanded around -inf 62.8

      \[\leadsto \color{blue}{-1 \cdot \frac{\log \left(\frac{-1}{re}\right)}{\log -1 - \log \left(\frac{-1}{base}\right)}}\]
    4. Simplified7.9

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

    if -2.929915037932605e+116 < re < 3.688680909166565e-273

    1. Initial program 20.7

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified20.6

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt20.6

      \[\leadsto \frac{\log \left(\sqrt{\color{blue}{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im}}}\right)}{\log base}\]
    5. Applied sqrt-prod20.6

      \[\leadsto \frac{\log \color{blue}{\left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}}{\log base}\]
    6. Using strategy rm
    7. Applied div-inv20.6

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

    if 3.688680909166565e-273 < re < 1.483347789429306e-239

    1. Initial program 32.1

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified32.0

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Taylor expanded around 0 31.2

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

    if 1.483347789429306e-239 < re < 1.687660857647486e+127

    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}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified19.1

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied pow1/219.1

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\log base}\]
    5. Applied log-pow19.1

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log base}\]
    6. Applied associate-/l*19.1

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

    if 1.687660857647486e+127 < re

    1. Initial program 55.3

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified55.3

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt55.3

      \[\leadsto \frac{\log \left(\sqrt{\color{blue}{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im}}}\right)}{\log base}\]
    5. Applied sqrt-prod55.3

      \[\leadsto \frac{\log \color{blue}{\left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}}{\log base}\]
    6. Using strategy rm
    7. Applied div-inv55.3

      \[\leadsto \color{blue}{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \frac{1}{\log base}}\]
    8. Taylor expanded around inf 8.6

      \[\leadsto \log \color{blue}{re} \cdot \frac{1}{\log base}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification16.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.929915037932605 \cdot 10^{+116}:\\ \;\;\;\;\frac{-1}{\frac{\log base}{\log \left(\frac{-1}{re}\right)}}\\ \mathbf{elif}\;re \le 3.688680909166565 \cdot 10^{-273}:\\ \;\;\;\;\frac{1}{\log base} \cdot \log \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right)\\ \mathbf{elif}\;re \le 1.483347789429306 \cdot 10^{-239}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.687660857647486 \cdot 10^{+127}:\\ \;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\log base} \cdot \log re\\ \end{array}\]

Reproduce

herbie shell --seed 2019158 
(FPCore (re im base)
  :name "math.log/2 on complex, real part"
  (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))