Average Error: 31.2 → 16.6
Time: 1.3m
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.1519584443960466 \cdot 10^{+98}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \frac{1}{\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 -2.1519584443960466 \cdot 10^{+98}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

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

\end{array}
double f(double re, double im, double base) {
        double r2242780 = re;
        double r2242781 = r2242780 * r2242780;
        double r2242782 = im;
        double r2242783 = r2242782 * r2242782;
        double r2242784 = r2242781 + r2242783;
        double r2242785 = sqrt(r2242784);
        double r2242786 = log(r2242785);
        double r2242787 = base;
        double r2242788 = log(r2242787);
        double r2242789 = r2242786 * r2242788;
        double r2242790 = atan2(r2242782, r2242780);
        double r2242791 = 0.0;
        double r2242792 = r2242790 * r2242791;
        double r2242793 = r2242789 + r2242792;
        double r2242794 = r2242788 * r2242788;
        double r2242795 = r2242791 * r2242791;
        double r2242796 = r2242794 + r2242795;
        double r2242797 = r2242793 / r2242796;
        return r2242797;
}

double f(double re, double im, double base) {
        double r2242798 = re;
        double r2242799 = -2.1519584443960466e+98;
        bool r2242800 = r2242798 <= r2242799;
        double r2242801 = -r2242798;
        double r2242802 = log(r2242801);
        double r2242803 = base;
        double r2242804 = log(r2242803);
        double r2242805 = r2242802 / r2242804;
        double r2242806 = im;
        double r2242807 = r2242806 * r2242806;
        double r2242808 = r2242798 * r2242798;
        double r2242809 = r2242807 + r2242808;
        double r2242810 = sqrt(r2242809);
        double r2242811 = log(r2242810);
        double r2242812 = 1.0;
        double r2242813 = r2242812 / r2242804;
        double r2242814 = r2242811 * r2242813;
        double r2242815 = r2242800 ? r2242805 : r2242814;
        return r2242815;
}

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.1519584443960466e+98

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

      \[\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 times-frac49.2

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

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

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

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

    if -2.1519584443960466e+98 < re

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

      \[\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 times-frac21.1

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

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

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

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

Reproduce

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