Average Error: 32.1 → 18.0
Time: 22.1s
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.195715110017202986247961863876192276869 \cdot 10^{114}:\\ \;\;\;\;\frac{-1 \cdot \log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 9.686064739606018912272388835301665400309 \cdot 10^{-199}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\log base \cdot \log \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{elif}\;re \le 8.183197557056351476111988028189136561404 \cdot 10^{-186}:\\ \;\;\;\;-\frac{\log re}{-\log base}\\ \mathbf{elif}\;re \le 3.605929673185673029148798139573470480982 \cdot 10^{96}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\log base \cdot \log \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)\right) + \tan^{-1}_* \frac{im}{re} \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.195715110017202986247961863876192276869 \cdot 10^{114}:\\
\;\;\;\;\frac{-1 \cdot \log \left(\frac{-1}{re}\right)}{\log base}\\

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

\mathbf{elif}\;re \le 8.183197557056351476111988028189136561404 \cdot 10^{-186}:\\
\;\;\;\;-\frac{\log re}{-\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r1606603 = re;
        double r1606604 = r1606603 * r1606603;
        double r1606605 = im;
        double r1606606 = r1606605 * r1606605;
        double r1606607 = r1606604 + r1606606;
        double r1606608 = sqrt(r1606607);
        double r1606609 = log(r1606608);
        double r1606610 = base;
        double r1606611 = log(r1606610);
        double r1606612 = r1606609 * r1606611;
        double r1606613 = atan2(r1606605, r1606603);
        double r1606614 = 0.0;
        double r1606615 = r1606613 * r1606614;
        double r1606616 = r1606612 + r1606615;
        double r1606617 = r1606611 * r1606611;
        double r1606618 = r1606614 * r1606614;
        double r1606619 = r1606617 + r1606618;
        double r1606620 = r1606616 / r1606619;
        return r1606620;
}

double f(double re, double im, double base) {
        double r1606621 = re;
        double r1606622 = -2.195715110017203e+114;
        bool r1606623 = r1606621 <= r1606622;
        double r1606624 = -1.0;
        double r1606625 = r1606624 / r1606621;
        double r1606626 = log(r1606625);
        double r1606627 = r1606624 * r1606626;
        double r1606628 = base;
        double r1606629 = log(r1606628);
        double r1606630 = r1606627 / r1606629;
        double r1606631 = 9.686064739606019e-199;
        bool r1606632 = r1606621 <= r1606631;
        double r1606633 = 1.0;
        double r1606634 = 0.0;
        double r1606635 = r1606634 * r1606634;
        double r1606636 = r1606629 * r1606629;
        double r1606637 = r1606635 + r1606636;
        double r1606638 = im;
        double r1606639 = r1606638 * r1606638;
        double r1606640 = r1606621 * r1606621;
        double r1606641 = r1606639 + r1606640;
        double r1606642 = sqrt(r1606641);
        double r1606643 = cbrt(r1606642);
        double r1606644 = r1606643 * r1606643;
        double r1606645 = r1606643 * r1606644;
        double r1606646 = log(r1606645);
        double r1606647 = r1606629 * r1606646;
        double r1606648 = atan2(r1606638, r1606621);
        double r1606649 = r1606648 * r1606634;
        double r1606650 = r1606647 + r1606649;
        double r1606651 = r1606637 / r1606650;
        double r1606652 = r1606633 / r1606651;
        double r1606653 = 8.183197557056351e-186;
        bool r1606654 = r1606621 <= r1606653;
        double r1606655 = log(r1606621);
        double r1606656 = -r1606629;
        double r1606657 = r1606655 / r1606656;
        double r1606658 = -r1606657;
        double r1606659 = 3.605929673185673e+96;
        bool r1606660 = r1606621 <= r1606659;
        double r1606661 = r1606660 ? r1606652 : r1606658;
        double r1606662 = r1606654 ? r1606658 : r1606661;
        double r1606663 = r1606632 ? r1606652 : r1606662;
        double r1606664 = r1606623 ? r1606630 : r1606663;
        return r1606664;
}

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 < -2.195715110017203e+114

    1. Initial program 55.0

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

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

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

    if -2.195715110017203e+114 < re < 9.686064739606019e-199 or 8.183197557056351e-186 < re < 3.605929673185673e+96

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

      \[\leadsto \color{blue}{\frac{1}{\frac{\log base \cdot \log base + 0.0 \cdot 0.0}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt22.0

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

    if 9.686064739606019e-199 < re < 8.183197557056351e-186 or 3.605929673185673e+96 < re

    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. Taylor expanded around inf 11.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.195715110017202986247961863876192276869 \cdot 10^{114}:\\ \;\;\;\;\frac{-1 \cdot \log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 9.686064739606018912272388835301665400309 \cdot 10^{-199}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\log base \cdot \log \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{elif}\;re \le 8.183197557056351476111988028189136561404 \cdot 10^{-186}:\\ \;\;\;\;-\frac{\log re}{-\log base}\\ \mathbf{elif}\;re \le 3.605929673185673029148798139573470480982 \cdot 10^{96}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\log base \cdot \log \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;-\frac{\log re}{-\log base}\\ \end{array}\]

Reproduce

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