Average Error: 32.1 → 18.3
Time: 23.4s
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 -2.276364532810895682126701738942978934868 \cdot 10^{99}:\\ \;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 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 -2.276364532810895682126701738942978934868 \cdot 10^{99}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{elif}\;re \le -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\
\;\;\;\;\frac{\log im}{\log base}\\

\mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\

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

\end{array}
double f(double re, double im, double base) {
        double r2868540 = re;
        double r2868541 = r2868540 * r2868540;
        double r2868542 = im;
        double r2868543 = r2868542 * r2868542;
        double r2868544 = r2868541 + r2868543;
        double r2868545 = sqrt(r2868544);
        double r2868546 = log(r2868545);
        double r2868547 = base;
        double r2868548 = log(r2868547);
        double r2868549 = r2868546 * r2868548;
        double r2868550 = atan2(r2868542, r2868540);
        double r2868551 = 0.0;
        double r2868552 = r2868550 * r2868551;
        double r2868553 = r2868549 + r2868552;
        double r2868554 = r2868548 * r2868548;
        double r2868555 = r2868551 * r2868551;
        double r2868556 = r2868554 + r2868555;
        double r2868557 = r2868553 / r2868556;
        return r2868557;
}

double f(double re, double im, double base) {
        double r2868558 = re;
        double r2868559 = -2.2763645328108957e+99;
        bool r2868560 = r2868558 <= r2868559;
        double r2868561 = 1.0;
        double r2868562 = base;
        double r2868563 = log(r2868562);
        double r2868564 = r2868563 * r2868563;
        double r2868565 = 0.0;
        double r2868566 = r2868565 * r2868565;
        double r2868567 = r2868564 + r2868566;
        double r2868568 = sqrt(r2868567);
        double r2868569 = r2868561 / r2868568;
        double r2868570 = -r2868558;
        double r2868571 = log(r2868570);
        double r2868572 = r2868571 * r2868563;
        double r2868573 = im;
        double r2868574 = atan2(r2868573, r2868558);
        double r2868575 = r2868574 * r2868565;
        double r2868576 = r2868572 + r2868575;
        double r2868577 = r2868576 / r2868568;
        double r2868578 = r2868569 * r2868577;
        double r2868579 = -8.321374673661263e-172;
        bool r2868580 = r2868558 <= r2868579;
        double r2868581 = r2868558 * r2868558;
        double r2868582 = r2868573 * r2868573;
        double r2868583 = r2868581 + r2868582;
        double r2868584 = sqrt(r2868583);
        double r2868585 = log(r2868584);
        double r2868586 = r2868585 * r2868563;
        double r2868587 = r2868586 + r2868575;
        double r2868588 = cbrt(r2868562);
        double r2868589 = r2868588 * r2868588;
        double r2868590 = log(r2868589);
        double r2868591 = r2868590 * r2868563;
        double r2868592 = log(r2868588);
        double r2868593 = r2868592 * r2868563;
        double r2868594 = r2868591 + r2868593;
        double r2868595 = r2868594 + r2868566;
        double r2868596 = r2868587 / r2868595;
        double r2868597 = -9.727151345646149e-225;
        bool r2868598 = r2868558 <= r2868597;
        double r2868599 = log(r2868573);
        double r2868600 = r2868599 / r2868563;
        double r2868601 = 2.3548449389898907e+121;
        bool r2868602 = r2868558 <= r2868601;
        double r2868603 = log(r2868558);
        double r2868604 = -r2868603;
        double r2868605 = -r2868563;
        double r2868606 = r2868604 / r2868605;
        double r2868607 = r2868602 ? r2868596 : r2868606;
        double r2868608 = r2868598 ? r2868600 : r2868607;
        double r2868609 = r2868580 ? r2868596 : r2868608;
        double r2868610 = r2868560 ? r2868578 : r2868609;
        return r2868610;
}

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 < -2.2763645328108957e+99

    1. Initial program 51.8

      \[\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 add-sqr-sqrt51.8

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

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

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

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

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

    if -2.2763645328108957e+99 < re < -8.321374673661263e-172 or -9.727151345646149e-225 < re < 2.3548449389898907e+121

    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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt21.3

      \[\leadsto \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 \color{blue}{\left(\left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \sqrt[3]{base}\right)} + 0.0 \cdot 0.0}\]
    4. Applied log-prod21.3

      \[\leadsto \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 \color{blue}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    5. Applied distribute-rgt-in21.3

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

    if -8.321374673661263e-172 < re < -9.727151345646149e-225

    1. Initial program 29.7

      \[\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 0 37.5

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

    if 2.3548449389898907e+121 < re

    1. Initial program 55.6

      \[\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 8.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.276364532810895682126701738942978934868 \cdot 10^{99}:\\ \;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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