Average Error: 30.9 → 17.8
Time: 1.2m
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.980152666258109 \cdot 10^{+119}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le -1.3122611677520722 \cdot 10^{-206}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \mathbf{elif}\;re \le -1.0494477405550627 \cdot 10^{-235}:\\ \;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\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.980152666258109 \cdot 10^{+119}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

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

\mathbf{elif}\;re \le -1.0494477405550627 \cdot 10^{-235}:\\
\;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\

\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\

\end{array}
double f(double re, double im, double base) {
        double r1936578 = re;
        double r1936579 = r1936578 * r1936578;
        double r1936580 = im;
        double r1936581 = r1936580 * r1936580;
        double r1936582 = r1936579 + r1936581;
        double r1936583 = sqrt(r1936582);
        double r1936584 = log(r1936583);
        double r1936585 = base;
        double r1936586 = log(r1936585);
        double r1936587 = r1936584 * r1936586;
        double r1936588 = atan2(r1936580, r1936578);
        double r1936589 = 0.0;
        double r1936590 = r1936588 * r1936589;
        double r1936591 = r1936587 + r1936590;
        double r1936592 = r1936586 * r1936586;
        double r1936593 = r1936589 * r1936589;
        double r1936594 = r1936592 + r1936593;
        double r1936595 = r1936591 / r1936594;
        return r1936595;
}

double f(double re, double im, double base) {
        double r1936596 = re;
        double r1936597 = -1.980152666258109e+119;
        bool r1936598 = r1936596 <= r1936597;
        double r1936599 = -r1936596;
        double r1936600 = log(r1936599);
        double r1936601 = base;
        double r1936602 = log(r1936601);
        double r1936603 = r1936600 / r1936602;
        double r1936604 = -1.3122611677520722e-206;
        bool r1936605 = r1936596 <= r1936604;
        double r1936606 = im;
        double r1936607 = r1936606 * r1936606;
        double r1936608 = r1936596 * r1936596;
        double r1936609 = r1936607 + r1936608;
        double r1936610 = sqrt(r1936609);
        double r1936611 = log(r1936610);
        double r1936612 = r1936611 / r1936602;
        double r1936613 = -1.0494477405550627e-235;
        bool r1936614 = r1936596 <= r1936613;
        double r1936615 = -1.0;
        double r1936616 = r1936615 / r1936596;
        double r1936617 = log(r1936616);
        double r1936618 = r1936615 / r1936602;
        double r1936619 = r1936617 * r1936618;
        double r1936620 = r1936614 ? r1936619 : r1936612;
        double r1936621 = r1936605 ? r1936612 : r1936620;
        double r1936622 = r1936598 ? r1936603 : r1936621;
        return r1936622;
}

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 3 regimes
  2. if re < -1.980152666258109e+119

    1. Initial program 53.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. Simplified53.1

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

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

      \[\leadsto \frac{\log \color{blue}{\left(-re\right)} \cdot \log base}{\log base \cdot \log base}\]
    5. Using strategy rm
    6. Applied associate-/l*8.0

      \[\leadsto \color{blue}{\frac{\log \left(-re\right)}{\frac{\log base \cdot \log base}{\log base}}}\]
    7. Simplified8.0

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

    if -1.980152666258109e+119 < re < -1.3122611677520722e-206 or -1.0494477405550627e-235 < re

    1. Initial program 20.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. Simplified20.3

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

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

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

    if -1.3122611677520722e-206 < re < -1.0494477405550627e-235

    1. Initial program 32.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. Simplified32.2

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

      \[\leadsto \color{blue}{\frac{\log \left(\frac{-1}{re}\right)}{0 + \log base} \cdot -1}\]
    5. Using strategy rm
    6. Applied div-inv49.3

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

      \[\leadsto \left(\log \left(\frac{-1}{re}\right) \cdot \color{blue}{\frac{1}{\log base}}\right) \cdot -1\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.980152666258109 \cdot 10^{+119}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le -1.3122611677520722 \cdot 10^{-206}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \mathbf{elif}\;re \le -1.0494477405550627 \cdot 10^{-235}:\\ \;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \end{array}\]

Reproduce

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