Average Error: 32.4 → 17.9
Time: 14.0s
Precision: 64
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
\[\begin{array}{l} \mathbf{if}\;re \le -7.514082888019677398791758729267083410018 \cdot 10^{82}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 470151434408140391610360774262784:\\ \;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}\\ \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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}
\begin{array}{l}
\mathbf{if}\;re \le -7.514082888019677398791758729267083410018 \cdot 10^{82}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

\mathbf{elif}\;re \le 470151434408140391610360774262784:\\
\;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}\\

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

\end{array}
double f(double re, double im, double base) {
        double r39439 = re;
        double r39440 = r39439 * r39439;
        double r39441 = im;
        double r39442 = r39441 * r39441;
        double r39443 = r39440 + r39442;
        double r39444 = sqrt(r39443);
        double r39445 = log(r39444);
        double r39446 = base;
        double r39447 = log(r39446);
        double r39448 = r39445 * r39447;
        double r39449 = atan2(r39441, r39439);
        double r39450 = 0.0;
        double r39451 = r39449 * r39450;
        double r39452 = r39448 + r39451;
        double r39453 = r39447 * r39447;
        double r39454 = r39450 * r39450;
        double r39455 = r39453 + r39454;
        double r39456 = r39452 / r39455;
        return r39456;
}

double f(double re, double im, double base) {
        double r39457 = re;
        double r39458 = -7.514082888019677e+82;
        bool r39459 = r39457 <= r39458;
        double r39460 = -1.0;
        double r39461 = r39460 / r39457;
        double r39462 = log(r39461);
        double r39463 = -r39462;
        double r39464 = base;
        double r39465 = log(r39464);
        double r39466 = r39463 / r39465;
        double r39467 = 4.701514344081404e+32;
        bool r39468 = r39457 <= r39467;
        double r39469 = r39457 * r39457;
        double r39470 = im;
        double r39471 = r39470 * r39470;
        double r39472 = r39469 + r39471;
        double r39473 = sqrt(r39472);
        double r39474 = log(r39473);
        double r39475 = r39474 * r39465;
        double r39476 = atan2(r39470, r39457);
        double r39477 = 0.0;
        double r39478 = r39476 * r39477;
        double r39479 = r39475 + r39478;
        double r39480 = 1.0;
        double r39481 = 2.0;
        double r39482 = pow(r39465, r39481);
        double r39483 = r39477 * r39477;
        double r39484 = r39482 + r39483;
        double r39485 = r39480 / r39484;
        double r39486 = r39479 * r39485;
        double r39487 = log(r39457);
        double r39488 = -r39487;
        double r39489 = -r39465;
        double r39490 = r39488 / r39489;
        double r39491 = r39468 ? r39486 : r39490;
        double r39492 = r39459 ? r39466 : r39491;
        return r39492;
}

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 < -7.514082888019677e+82

    1. Initial program 49.3

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Using strategy rm
    3. Applied div-inv49.4

      \[\leadsto \color{blue}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    4. Simplified49.4

      \[\leadsto \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \color{blue}{\frac{1}{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}\]
    5. Taylor expanded around -inf 64.0

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

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

    if -7.514082888019677e+82 < re < 4.701514344081404e+32

    1. Initial program 22.5

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Using strategy rm
    3. Applied div-inv22.5

      \[\leadsto \color{blue}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    4. Simplified22.5

      \[\leadsto \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \color{blue}{\frac{1}{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}\]

    if 4.701514344081404e+32 < re

    1. Initial program 44.5

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Taylor expanded around inf 12.6

      \[\leadsto \color{blue}{\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}}\]
    3. Simplified12.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -7.514082888019677398791758729267083410018 \cdot 10^{82}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 470151434408140391610360774262784:\\ \;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

herbie shell --seed 2019350 
(FPCore (re im base)
  :name "math.log/2 on complex, real part"
  :precision binary64
  (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))