Average Error: 32.0 → 17.5
Time: 21.3s
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.058032265545680570459296008987666803769 \cdot 10^{110}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 5.03357404896189331385202691146888528845 \cdot 10^{141}:\\ \;\;\;\;\frac{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left({\left(\log base\right)}^{2} + 0.0 \cdot 0.0\right)}\\ \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.058032265545680570459296008987666803769 \cdot 10^{110}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r104595 = re;
        double r104596 = r104595 * r104595;
        double r104597 = im;
        double r104598 = r104597 * r104597;
        double r104599 = r104596 + r104598;
        double r104600 = sqrt(r104599);
        double r104601 = log(r104600);
        double r104602 = base;
        double r104603 = log(r104602);
        double r104604 = r104601 * r104603;
        double r104605 = atan2(r104597, r104595);
        double r104606 = 0.0;
        double r104607 = r104605 * r104606;
        double r104608 = r104604 + r104607;
        double r104609 = r104603 * r104603;
        double r104610 = r104606 * r104606;
        double r104611 = r104609 + r104610;
        double r104612 = r104608 / r104611;
        return r104612;
}

double f(double re, double im, double base) {
        double r104613 = re;
        double r104614 = -2.0580322655456806e+110;
        bool r104615 = r104613 <= r104614;
        double r104616 = -1.0;
        double r104617 = r104616 / r104613;
        double r104618 = log(r104617);
        double r104619 = -r104618;
        double r104620 = base;
        double r104621 = log(r104620);
        double r104622 = r104619 / r104621;
        double r104623 = 5.033574048961893e+141;
        bool r104624 = r104613 <= r104623;
        double r104625 = r104613 * r104613;
        double r104626 = im;
        double r104627 = r104626 * r104626;
        double r104628 = r104625 + r104627;
        double r104629 = sqrt(r104628);
        double r104630 = log(r104629);
        double r104631 = r104630 * r104621;
        double r104632 = r104631 * r104631;
        double r104633 = atan2(r104626, r104613);
        double r104634 = 0.0;
        double r104635 = r104633 * r104634;
        double r104636 = r104635 * r104635;
        double r104637 = r104632 - r104636;
        double r104638 = r104631 - r104635;
        double r104639 = 2.0;
        double r104640 = pow(r104621, r104639);
        double r104641 = r104634 * r104634;
        double r104642 = r104640 + r104641;
        double r104643 = r104638 * r104642;
        double r104644 = r104637 / r104643;
        double r104645 = log(r104613);
        double r104646 = -r104645;
        double r104647 = -r104621;
        double r104648 = r104646 / r104647;
        double r104649 = r104624 ? r104644 : r104648;
        double r104650 = r104615 ? r104622 : r104649;
        return r104650;
}

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.0580322655456806e+110

    1. Initial program 53.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. Using strategy rm
    3. Applied pow153.7

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

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

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

      \[\leadsto \frac{{\color{blue}{\left(\log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)\right)}}^{1} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt53.7

      \[\leadsto \frac{{\left(\log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)\right)}^{1} + \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}}}\]
    9. Applied *-un-lft-identity53.7

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

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

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

      \[\leadsto \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \color{blue}{\frac{\log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}}\]
    13. 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)}}\]
    14. Simplified8.8

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

    if -2.0580322655456806e+110 < re < 5.033574048961893e+141

    1. Initial program 21.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 flip-+21.5

      \[\leadsto \frac{\color{blue}{\frac{\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\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}\]
    4. Applied associate-/l/21.5

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

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

    if 5.033574048961893e+141 < re

    1. Initial program 60.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 inf 6.9

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

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

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

Reproduce

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