Average Error: 31.4 → 17.3
Time: 1.1m
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.3803616640784937 \cdot 10^{+101}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \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.3803616640784937 \cdot 10^{+101}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

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

\end{array}
double f(double re, double im, double base) {
        double r1737848 = re;
        double r1737849 = r1737848 * r1737848;
        double r1737850 = im;
        double r1737851 = r1737850 * r1737850;
        double r1737852 = r1737849 + r1737851;
        double r1737853 = sqrt(r1737852);
        double r1737854 = log(r1737853);
        double r1737855 = base;
        double r1737856 = log(r1737855);
        double r1737857 = r1737854 * r1737856;
        double r1737858 = atan2(r1737850, r1737848);
        double r1737859 = 0.0;
        double r1737860 = r1737858 * r1737859;
        double r1737861 = r1737857 + r1737860;
        double r1737862 = r1737856 * r1737856;
        double r1737863 = r1737859 * r1737859;
        double r1737864 = r1737862 + r1737863;
        double r1737865 = r1737861 / r1737864;
        return r1737865;
}

double f(double re, double im, double base) {
        double r1737866 = re;
        double r1737867 = -2.3803616640784937e+101;
        bool r1737868 = r1737866 <= r1737867;
        double r1737869 = -r1737866;
        double r1737870 = log(r1737869);
        double r1737871 = base;
        double r1737872 = log(r1737871);
        double r1737873 = r1737870 / r1737872;
        double r1737874 = 1.0;
        double r1737875 = im;
        double r1737876 = r1737875 * r1737875;
        double r1737877 = r1737866 * r1737866;
        double r1737878 = r1737876 + r1737877;
        double r1737879 = sqrt(r1737878);
        double r1737880 = log(r1737879);
        double r1737881 = r1737872 / r1737880;
        double r1737882 = r1737874 / r1737881;
        double r1737883 = r1737868 ? r1737873 : r1737882;
        return r1737883;
}

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 2 regimes
  2. if re < -2.3803616640784937e+101

    1. Initial program 49.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. Simplified49.8

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

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

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

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

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

    if -2.3803616640784937e+101 < re

    1. Initial program 21.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. Simplified21.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.3803616640784937 \cdot 10^{+101}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \end{array}\]

Reproduce

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