Average Error: 30.8 → 17.2
Time: 45.5s
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 -9.275512899723917 \cdot 10^{+106}:\\ \;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\ \mathbf{elif}\;re \le -1.361373372799871 \cdot 10^{-285}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \mathbf{elif}\;re \le 1.7444208998420076 \cdot 10^{-211}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log im}}\\ \mathbf{elif}\;re \le 1.0886698489818444 \cdot 10^{+124}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log base \cdot \log re}{\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 -9.275512899723917 \cdot 10^{+106}:\\
\;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\

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

\mathbf{elif}\;re \le 1.7444208998420076 \cdot 10^{-211}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log im}}\\

\mathbf{elif}\;re \le 1.0886698489818444 \cdot 10^{+124}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r2484219 = re;
        double r2484220 = r2484219 * r2484219;
        double r2484221 = im;
        double r2484222 = r2484221 * r2484221;
        double r2484223 = r2484220 + r2484222;
        double r2484224 = sqrt(r2484223);
        double r2484225 = log(r2484224);
        double r2484226 = base;
        double r2484227 = log(r2484226);
        double r2484228 = r2484225 * r2484227;
        double r2484229 = atan2(r2484221, r2484219);
        double r2484230 = 0.0;
        double r2484231 = r2484229 * r2484230;
        double r2484232 = r2484228 + r2484231;
        double r2484233 = r2484227 * r2484227;
        double r2484234 = r2484230 * r2484230;
        double r2484235 = r2484233 + r2484234;
        double r2484236 = r2484232 / r2484235;
        return r2484236;
}

double f(double re, double im, double base) {
        double r2484237 = re;
        double r2484238 = -9.275512899723917e+106;
        bool r2484239 = r2484237 <= r2484238;
        double r2484240 = -1.0;
        double r2484241 = r2484240 / r2484237;
        double r2484242 = log(r2484241);
        double r2484243 = base;
        double r2484244 = log(r2484243);
        double r2484245 = r2484242 / r2484244;
        double r2484246 = r2484245 * r2484240;
        double r2484247 = -1.361373372799871e-285;
        bool r2484248 = r2484237 <= r2484247;
        double r2484249 = 1.0;
        double r2484250 = im;
        double r2484251 = r2484250 * r2484250;
        double r2484252 = r2484237 * r2484237;
        double r2484253 = r2484251 + r2484252;
        double r2484254 = sqrt(r2484253);
        double r2484255 = log(r2484254);
        double r2484256 = r2484244 / r2484255;
        double r2484257 = r2484249 / r2484256;
        double r2484258 = 1.7444208998420076e-211;
        bool r2484259 = r2484237 <= r2484258;
        double r2484260 = log(r2484250);
        double r2484261 = r2484244 / r2484260;
        double r2484262 = r2484249 / r2484261;
        double r2484263 = 1.0886698489818444e+124;
        bool r2484264 = r2484237 <= r2484263;
        double r2484265 = log(r2484237);
        double r2484266 = r2484244 * r2484265;
        double r2484267 = r2484244 * r2484244;
        double r2484268 = r2484266 / r2484267;
        double r2484269 = r2484264 ? r2484257 : r2484268;
        double r2484270 = r2484259 ? r2484262 : r2484269;
        double r2484271 = r2484248 ? r2484257 : r2484270;
        double r2484272 = r2484239 ? r2484246 : r2484271;
        return r2484272;
}

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 4 regimes
  2. if re < -9.275512899723917e+106

    1. Initial program 51.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. Simplified51.0

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

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

    if -9.275512899723917e+106 < re < -1.361373372799871e-285 or 1.7444208998420076e-211 < re < 1.0886698489818444e+124

    1. Initial program 19.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. Simplified19.1

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

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

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

    if -1.361373372799871e-285 < re < 1.7444208998420076e-211

    1. Initial program 30.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. Simplified30.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-num30.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. Simplified30.7

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

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

    if 1.0886698489818444e+124 < re

    1. Initial program 54.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. Simplified54.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 8.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -9.275512899723917 \cdot 10^{+106}:\\ \;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\ \mathbf{elif}\;re \le -1.361373372799871 \cdot 10^{-285}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \mathbf{elif}\;re \le 1.7444208998420076 \cdot 10^{-211}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log im}}\\ \mathbf{elif}\;re \le 1.0886698489818444 \cdot 10^{+124}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log base \cdot \log re}{\log base \cdot \log base}\\ \end{array}\]

Reproduce

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