Average Error: 30.6 → 16.6
Time: 19.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 -1.6633647338752457 \cdot 10^{+69}:\\ \;\;\;\;\frac{0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{elif}\;re \le 3.581675146123889 \cdot 10^{-235}:\\ \;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left|\log base\right|}}{\sqrt{\log base \cdot \log base}}\\ \mathbf{elif}\;re \le 6.649021261519885 \cdot 10^{-193}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 7.455578618187527 \cdot 10^{+81}:\\ \;\;\;\;\left(\frac{\log base}{\log base \cdot \log base} \cdot \frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)}\right) \cdot \left(\left(\log base \cdot \log base\right) \cdot 0 + \left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{-\frac{\log base}{\frac{\left|\log base\right|}{-\log re}}}{\sqrt{\log base \cdot \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}{\log base \cdot \log base + 0 \cdot 0}
\begin{array}{l}
\mathbf{if}\;re \le -1.6633647338752457 \cdot 10^{+69}:\\
\;\;\;\;\frac{0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\

\mathbf{elif}\;re \le 3.581675146123889 \cdot 10^{-235}:\\
\;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left|\log base\right|}}{\sqrt{\log base \cdot \log base}}\\

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

\mathbf{elif}\;re \le 7.455578618187527 \cdot 10^{+81}:\\
\;\;\;\;\left(\frac{\log base}{\log base \cdot \log base} \cdot \frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)}\right) \cdot \left(\left(\log base \cdot \log base\right) \cdot 0 + \left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{-\frac{\log base}{\frac{\left|\log base\right|}{-\log re}}}{\sqrt{\log base \cdot \log base}}\\

\end{array}
double f(double re, double im, double base) {
        double r843580 = re;
        double r843581 = r843580 * r843580;
        double r843582 = im;
        double r843583 = r843582 * r843582;
        double r843584 = r843581 + r843583;
        double r843585 = sqrt(r843584);
        double r843586 = log(r843585);
        double r843587 = base;
        double r843588 = log(r843587);
        double r843589 = r843586 * r843588;
        double r843590 = atan2(r843582, r843580);
        double r843591 = 0.0;
        double r843592 = r843590 * r843591;
        double r843593 = r843589 + r843592;
        double r843594 = r843588 * r843588;
        double r843595 = r843591 * r843591;
        double r843596 = r843594 + r843595;
        double r843597 = r843593 / r843596;
        return r843597;
}

double f(double re, double im, double base) {
        double r843598 = re;
        double r843599 = -1.6633647338752457e+69;
        bool r843600 = r843598 <= r843599;
        double r843601 = 0.0;
        double r843602 = im;
        double r843603 = atan2(r843602, r843598);
        double r843604 = r843601 * r843603;
        double r843605 = base;
        double r843606 = log(r843605);
        double r843607 = -r843598;
        double r843608 = log(r843607);
        double r843609 = r843606 * r843608;
        double r843610 = r843604 + r843609;
        double r843611 = r843606 * r843606;
        double r843612 = r843610 / r843611;
        double r843613 = 3.581675146123889e-235;
        bool r843614 = r843598 <= r843613;
        double r843615 = r843602 * r843602;
        double r843616 = r843598 * r843598;
        double r843617 = r843615 + r843616;
        double r843618 = sqrt(r843617);
        double r843619 = log(r843618);
        double r843620 = r843606 * r843619;
        double r843621 = fabs(r843606);
        double r843622 = r843620 / r843621;
        double r843623 = sqrt(r843611);
        double r843624 = r843622 / r843623;
        double r843625 = 6.649021261519885e-193;
        bool r843626 = r843598 <= r843625;
        double r843627 = log(r843602);
        double r843628 = r843627 / r843606;
        double r843629 = 7.455578618187527e+81;
        bool r843630 = r843598 <= r843629;
        double r843631 = r843606 / r843611;
        double r843632 = r843611 * r843611;
        double r843633 = r843619 / r843632;
        double r843634 = r843631 * r843633;
        double r843635 = r843611 * r843601;
        double r843636 = r843635 + r843632;
        double r843637 = r843634 * r843636;
        double r843638 = log(r843598);
        double r843639 = -r843638;
        double r843640 = r843621 / r843639;
        double r843641 = r843606 / r843640;
        double r843642 = -r843641;
        double r843643 = r843642 / r843623;
        double r843644 = r843630 ? r843637 : r843643;
        double r843645 = r843626 ? r843628 : r843644;
        double r843646 = r843614 ? r843624 : r843645;
        double r843647 = r843600 ? r843612 : r843646;
        return r843647;
}

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.6633647338752457e+69

    1. Initial program 45.9

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

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

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

    if -1.6633647338752457e+69 < re < 3.581675146123889e-235

    1. Initial program 22.0

      \[\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. Using strategy rm
    3. Applied add-sqr-sqrt22.0

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

      \[\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}{\sqrt{\log base \cdot \log base + 0 \cdot 0}}}{\sqrt{\log base \cdot \log base + 0 \cdot 0}}}\]
    5. Simplified21.9

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

    if 3.581675146123889e-235 < re < 6.649021261519885e-193

    1. Initial program 32.8

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

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

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

    if 6.649021261519885e-193 < re < 7.455578618187527e+81

    1. Initial program 17.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. Using strategy rm
    3. Applied flip3-+17.8

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

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

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

    if 7.455578618187527e+81 < re

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

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

      \[\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}{\sqrt{\log base \cdot \log base + 0 \cdot 0}}}{\sqrt{\log base \cdot \log base + 0 \cdot 0}}}\]
    5. Simplified47.3

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

      \[\leadsto \frac{\color{blue}{\frac{\log \left(\frac{1}{base}\right) \cdot \log \left(\frac{1}{re}\right)}{\left|\log base\right|}}}{\sqrt{\log base \cdot \log base + 0 \cdot 0}}\]
    7. Simplified9.2

      \[\leadsto \frac{\color{blue}{\frac{-\log base}{\frac{\left|\log base\right|}{-\log re}}}}{\sqrt{\log base \cdot \log base + 0 \cdot 0}}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification16.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.6633647338752457 \cdot 10^{+69}:\\ \;\;\;\;\frac{0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{elif}\;re \le 3.581675146123889 \cdot 10^{-235}:\\ \;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left|\log base\right|}}{\sqrt{\log base \cdot \log base}}\\ \mathbf{elif}\;re \le 6.649021261519885 \cdot 10^{-193}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 7.455578618187527 \cdot 10^{+81}:\\ \;\;\;\;\left(\frac{\log base}{\log base \cdot \log base} \cdot \frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)}\right) \cdot \left(\left(\log base \cdot \log base\right) \cdot 0 + \left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{-\frac{\log base}{\frac{\left|\log base\right|}{-\log re}}}{\sqrt{\log base \cdot \log base}}\\ \end{array}\]

Reproduce

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