Average Error: 31.3 → 17.4
Time: 18.6s
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 -5.139279335366515 \cdot 10^{+91}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le 6.605815153598046 \cdot 10^{+41}:\\ \;\;\;\;\left(\frac{1}{2} \cdot \log \left(im \cdot im + re \cdot re\right)\right) \cdot \frac{1}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re}{\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 -5.139279335366515 \cdot 10^{+91}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r2827910 = re;
        double r2827911 = r2827910 * r2827910;
        double r2827912 = im;
        double r2827913 = r2827912 * r2827912;
        double r2827914 = r2827911 + r2827913;
        double r2827915 = sqrt(r2827914);
        double r2827916 = log(r2827915);
        double r2827917 = base;
        double r2827918 = log(r2827917);
        double r2827919 = r2827916 * r2827918;
        double r2827920 = atan2(r2827912, r2827910);
        double r2827921 = 0.0;
        double r2827922 = r2827920 * r2827921;
        double r2827923 = r2827919 + r2827922;
        double r2827924 = r2827918 * r2827918;
        double r2827925 = r2827921 * r2827921;
        double r2827926 = r2827924 + r2827925;
        double r2827927 = r2827923 / r2827926;
        return r2827927;
}

double f(double re, double im, double base) {
        double r2827928 = re;
        double r2827929 = -5.139279335366515e+91;
        bool r2827930 = r2827928 <= r2827929;
        double r2827931 = -r2827928;
        double r2827932 = log(r2827931);
        double r2827933 = base;
        double r2827934 = log(r2827933);
        double r2827935 = r2827932 / r2827934;
        double r2827936 = 6.605815153598046e+41;
        bool r2827937 = r2827928 <= r2827936;
        double r2827938 = 0.5;
        double r2827939 = im;
        double r2827940 = r2827939 * r2827939;
        double r2827941 = r2827928 * r2827928;
        double r2827942 = r2827940 + r2827941;
        double r2827943 = log(r2827942);
        double r2827944 = r2827938 * r2827943;
        double r2827945 = 1.0;
        double r2827946 = r2827945 / r2827934;
        double r2827947 = r2827944 * r2827946;
        double r2827948 = log(r2827928);
        double r2827949 = r2827948 / r2827934;
        double r2827950 = r2827937 ? r2827947 : r2827949;
        double r2827951 = r2827930 ? r2827935 : r2827950;
        return r2827951;
}

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 < -5.139279335366515e+91

    1. Initial program 47.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. Simplified47.9

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

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

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

    if -5.139279335366515e+91 < re < 6.605815153598046e+41

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

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

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

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

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

    if 6.605815153598046e+41 < re

    1. Initial program 43.4

      \[\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. Simplified43.3

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

      \[\leadsto \frac{\log \color{blue}{re}}{\log base}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -5.139279335366515 \cdot 10^{+91}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le 6.605815153598046 \cdot 10^{+41}:\\ \;\;\;\;\left(\frac{1}{2} \cdot \log \left(im \cdot im + re \cdot re\right)\right) \cdot \frac{1}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re}{\log base}\\ \end{array}\]

Reproduce

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