Average Error: 32.1 → 17.8
Time: 7.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 -3.27704547278454974 \cdot 10^{100}:\\ \;\;\;\;\frac{\frac{\log \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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.5707996749315065 \cdot 10^{114}:\\ \;\;\;\;\frac{\frac{\log \left(\left|{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}\right| \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \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 -3.27704547278454974 \cdot 10^{100}:\\
\;\;\;\;\frac{\frac{\log \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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{elif}\;re \le 1.5707996749315065 \cdot 10^{114}:\\
\;\;\;\;\frac{\frac{\log \left(\left|{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}\right| \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\

\end{array}
double f(double re, double im, double base) {
        double r45602 = re;
        double r45603 = r45602 * r45602;
        double r45604 = im;
        double r45605 = r45604 * r45604;
        double r45606 = r45603 + r45605;
        double r45607 = sqrt(r45606);
        double r45608 = log(r45607);
        double r45609 = base;
        double r45610 = log(r45609);
        double r45611 = r45608 * r45610;
        double r45612 = atan2(r45604, r45602);
        double r45613 = 0.0;
        double r45614 = r45612 * r45613;
        double r45615 = r45611 + r45614;
        double r45616 = r45610 * r45610;
        double r45617 = r45613 * r45613;
        double r45618 = r45616 + r45617;
        double r45619 = r45615 / r45618;
        return r45619;
}

double f(double re, double im, double base) {
        double r45620 = re;
        double r45621 = -3.2770454727845497e+100;
        bool r45622 = r45620 <= r45621;
        double r45623 = -1.0;
        double r45624 = r45623 * r45620;
        double r45625 = log(r45624);
        double r45626 = base;
        double r45627 = log(r45626);
        double r45628 = r45625 * r45627;
        double r45629 = im;
        double r45630 = atan2(r45629, r45620);
        double r45631 = 0.0;
        double r45632 = r45630 * r45631;
        double r45633 = r45628 + r45632;
        double r45634 = r45627 * r45627;
        double r45635 = r45631 * r45631;
        double r45636 = r45634 + r45635;
        double r45637 = sqrt(r45636);
        double r45638 = r45633 / r45637;
        double r45639 = r45638 / r45637;
        double r45640 = 1.5707996749315065e+114;
        bool r45641 = r45620 <= r45640;
        double r45642 = r45620 * r45620;
        double r45643 = r45629 * r45629;
        double r45644 = r45642 + r45643;
        double r45645 = 0.3333333333333333;
        double r45646 = pow(r45644, r45645);
        double r45647 = fabs(r45646);
        double r45648 = cbrt(r45644);
        double r45649 = sqrt(r45648);
        double r45650 = r45647 * r45649;
        double r45651 = log(r45650);
        double r45652 = r45651 * r45627;
        double r45653 = r45652 + r45632;
        double r45654 = r45653 / r45637;
        double r45655 = r45654 / r45637;
        double r45656 = 1.0;
        double r45657 = r45656 / r45620;
        double r45658 = log(r45657);
        double r45659 = r45656 / r45626;
        double r45660 = log(r45659);
        double r45661 = r45658 / r45660;
        double r45662 = r45641 ? r45655 : r45661;
        double r45663 = r45622 ? r45639 : r45662;
        return r45663;
}

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 < -3.2770454727845497e+100

    1. Initial program 51.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. Using strategy rm
    3. Applied add-sqr-sqrt51.6

      \[\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 associate-/r*51.6

      \[\leadsto \color{blue}{\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    5. Taylor expanded around -inf 8.6

      \[\leadsto \frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]

    if -3.2770454727845497e+100 < re < 1.5707996749315065e+114

    1. Initial program 22.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 add-sqr-sqrt22.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}{\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 associate-/r*22.3

      \[\leadsto \color{blue}{\frac{\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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt22.3

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

      \[\leadsto \frac{\frac{\log \color{blue}{\left(\sqrt{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    8. Simplified22.3

      \[\leadsto \frac{\frac{\log \left(\color{blue}{\left|\sqrt[3]{re \cdot re + im \cdot im}\right|} \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    9. Using strategy rm
    10. Applied pow1/322.3

      \[\leadsto \frac{\frac{\log \left(\left|\color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}\right| \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]

    if 1.5707996749315065e+114 < re

    1. Initial program 53.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. Taylor expanded around inf 7.7

      \[\leadsto \color{blue}{\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -3.27704547278454974 \cdot 10^{100}:\\ \;\;\;\;\frac{\frac{\log \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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.5707996749315065 \cdot 10^{114}:\\ \;\;\;\;\frac{\frac{\log \left(\left|{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}\right| \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \end{array}\]

Reproduce

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