Average Error: 31.3 → 17.4
Time: 20.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.235503805450076 \cdot 10^{+93}:\\ \;\;\;\;\left(\left(-2 \cdot \log \left(\frac{-1}{re}\right)\right) \cdot \frac{1}{2}\right) \cdot \frac{1}{\log base}\\ \mathbf{elif}\;re \le 3.913600501226428 \cdot 10^{+41}:\\ \;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right) \cdot \frac{1}{2}}{\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.235503805450076 \cdot 10^{+93}:\\
\;\;\;\;\left(\left(-2 \cdot \log \left(\frac{-1}{re}\right)\right) \cdot \frac{1}{2}\right) \cdot \frac{1}{\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r3234242 = re;
        double r3234243 = r3234242 * r3234242;
        double r3234244 = im;
        double r3234245 = r3234244 * r3234244;
        double r3234246 = r3234243 + r3234245;
        double r3234247 = sqrt(r3234246);
        double r3234248 = log(r3234247);
        double r3234249 = base;
        double r3234250 = log(r3234249);
        double r3234251 = r3234248 * r3234250;
        double r3234252 = atan2(r3234244, r3234242);
        double r3234253 = 0.0;
        double r3234254 = r3234252 * r3234253;
        double r3234255 = r3234251 + r3234254;
        double r3234256 = r3234250 * r3234250;
        double r3234257 = r3234253 * r3234253;
        double r3234258 = r3234256 + r3234257;
        double r3234259 = r3234255 / r3234258;
        return r3234259;
}

double f(double re, double im, double base) {
        double r3234260 = re;
        double r3234261 = -5.235503805450076e+93;
        bool r3234262 = r3234260 <= r3234261;
        double r3234263 = -2.0;
        double r3234264 = -1.0;
        double r3234265 = r3234264 / r3234260;
        double r3234266 = log(r3234265);
        double r3234267 = r3234263 * r3234266;
        double r3234268 = 0.5;
        double r3234269 = r3234267 * r3234268;
        double r3234270 = 1.0;
        double r3234271 = base;
        double r3234272 = log(r3234271);
        double r3234273 = r3234270 / r3234272;
        double r3234274 = r3234269 * r3234273;
        double r3234275 = 3.913600501226428e+41;
        bool r3234276 = r3234260 <= r3234275;
        double r3234277 = r3234260 * r3234260;
        double r3234278 = im;
        double r3234279 = r3234278 * r3234278;
        double r3234280 = r3234277 + r3234279;
        double r3234281 = log(r3234280);
        double r3234282 = r3234281 * r3234268;
        double r3234283 = r3234282 / r3234272;
        double r3234284 = log(r3234260);
        double r3234285 = r3234284 / r3234272;
        double r3234286 = r3234276 ? r3234283 : r3234285;
        double r3234287 = r3234262 ? r3234274 : r3234286;
        return r3234287;
}

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.235503805450076e+93

    1. Initial program 48.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. Simplified48.3

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

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

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

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

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

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

    if -5.235503805450076e+93 < re < 3.913600501226428e+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}\]

    if 3.913600501226428e+41 < re

    1. Initial program 43.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. 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.235503805450076 \cdot 10^{+93}:\\ \;\;\;\;\left(\left(-2 \cdot \log \left(\frac{-1}{re}\right)\right) \cdot \frac{1}{2}\right) \cdot \frac{1}{\log base}\\ \mathbf{elif}\;re \le 3.913600501226428 \cdot 10^{+41}:\\ \;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right) \cdot \frac{1}{2}}{\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))))