Average Error: 31.9 → 18.1
Time: 12.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.678553877806604 \cdot 10^{41}:\\ \;\;\;\;\frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 4.69081280904729871 \cdot 10^{-246} \lor \neg \left(re \le 4.4235180232042555 \cdot 10^{-227} \lor \neg \left(re \le 6.589229227697289 \cdot 10^{74}\right)\right):\\ \;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\ \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.678553877806604 \cdot 10^{41}:\\
\;\;\;\;\frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le 4.69081280904729871 \cdot 10^{-246} \lor \neg \left(re \le 4.4235180232042555 \cdot 10^{-227} \lor \neg \left(re \le 6.589229227697289 \cdot 10^{74}\right)\right):\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r52662 = re;
        double r52663 = r52662 * r52662;
        double r52664 = im;
        double r52665 = r52664 * r52664;
        double r52666 = r52663 + r52665;
        double r52667 = sqrt(r52666);
        double r52668 = log(r52667);
        double r52669 = base;
        double r52670 = log(r52669);
        double r52671 = r52668 * r52670;
        double r52672 = atan2(r52664, r52662);
        double r52673 = 0.0;
        double r52674 = r52672 * r52673;
        double r52675 = r52671 + r52674;
        double r52676 = r52670 * r52670;
        double r52677 = r52673 * r52673;
        double r52678 = r52676 + r52677;
        double r52679 = r52675 / r52678;
        return r52679;
}

double f(double re, double im, double base) {
        double r52680 = re;
        double r52681 = -3.6785538778066045e+41;
        bool r52682 = r52680 <= r52681;
        double r52683 = -r52680;
        double r52684 = log(r52683);
        double r52685 = base;
        double r52686 = log(r52685);
        double r52687 = r52684 * r52686;
        double r52688 = im;
        double r52689 = atan2(r52688, r52680);
        double r52690 = 0.0;
        double r52691 = r52689 * r52690;
        double r52692 = r52687 + r52691;
        double r52693 = 2.0;
        double r52694 = cbrt(r52685);
        double r52695 = log(r52694);
        double r52696 = r52693 * r52695;
        double r52697 = r52686 * r52696;
        double r52698 = r52686 * r52695;
        double r52699 = r52697 + r52698;
        double r52700 = r52690 * r52690;
        double r52701 = r52699 + r52700;
        double r52702 = r52692 / r52701;
        double r52703 = 4.690812809047299e-246;
        bool r52704 = r52680 <= r52703;
        double r52705 = 4.423518023204255e-227;
        bool r52706 = r52680 <= r52705;
        double r52707 = 6.589229227697289e+74;
        bool r52708 = r52680 <= r52707;
        double r52709 = !r52708;
        bool r52710 = r52706 || r52709;
        double r52711 = !r52710;
        bool r52712 = r52704 || r52711;
        double r52713 = 1.0;
        double r52714 = pow(r52686, r52693);
        double r52715 = r52700 + r52714;
        double r52716 = sqrt(r52715);
        double r52717 = r52713 / r52716;
        double r52718 = r52680 * r52680;
        double r52719 = r52688 * r52688;
        double r52720 = r52718 + r52719;
        double r52721 = sqrt(r52720);
        double r52722 = log(r52721);
        double r52723 = r52686 * r52722;
        double r52724 = r52691 + r52723;
        double r52725 = r52724 / r52716;
        double r52726 = r52717 * r52725;
        double r52727 = log(r52680);
        double r52728 = r52727 * r52686;
        double r52729 = r52728 + r52691;
        double r52730 = r52729 / r52701;
        double r52731 = r52712 ? r52726 : r52730;
        double r52732 = r52682 ? r52702 : r52731;
        return r52732;
}

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.6785538778066045e+41

    1. Initial program 43.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-cube-cbrt43.6

      \[\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-prod43.6

      \[\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-lft-in43.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}{\left(\log base \cdot \log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    6. Simplified43.6

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

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

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

    if -3.6785538778066045e+41 < re < 4.690812809047299e-246 or 4.423518023204255e-227 < re < 6.589229227697289e+74

    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 *-un-lft-identity22.3

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

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

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

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

    if 4.690812809047299e-246 < re < 4.423518023204255e-227 or 6.589229227697289e+74 < re

    1. Initial program 46.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 add-cube-cbrt46.6

      \[\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-prod46.6

      \[\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-lft-in46.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}{\left(\log base \cdot \log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    6. Simplified46.6

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

      \[\leadsto \frac{\log \color{blue}{re} \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification18.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -3.678553877806604 \cdot 10^{41}:\\ \;\;\;\;\frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 4.69081280904729871 \cdot 10^{-246} \lor \neg \left(re \le 4.4235180232042555 \cdot 10^{-227} \lor \neg \left(re \le 6.589229227697289 \cdot 10^{74}\right)\right):\\ \;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\ \end{array}\]

Reproduce

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