Average Error: 2.1 → 0.1
Time: 5.9s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1.8029813469456922 \cdot 10^{38}:\\ \;\;\;\;\left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m}\right) \cdot {\left(\sqrt[3]{k}\right)}^{m}\right) \cdot \frac{2}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right) \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 1.8029813469456922 \cdot 10^{38}:\\
\;\;\;\;\left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m}\right) \cdot {\left(\sqrt[3]{k}\right)}^{m}\right) \cdot \frac{2}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right) \cdot 2}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\

\end{array}
double f(double a, double k, double m) {
        double r282842 = a;
        double r282843 = k;
        double r282844 = m;
        double r282845 = pow(r282843, r282844);
        double r282846 = r282842 * r282845;
        double r282847 = 1.0;
        double r282848 = 10.0;
        double r282849 = r282848 * r282843;
        double r282850 = r282847 + r282849;
        double r282851 = r282843 * r282843;
        double r282852 = r282850 + r282851;
        double r282853 = r282846 / r282852;
        return r282853;
}

double f(double a, double k, double m) {
        double r282854 = k;
        double r282855 = 1.8029813469456922e+38;
        bool r282856 = r282854 <= r282855;
        double r282857 = a;
        double r282858 = cbrt(r282854);
        double r282859 = r282858 * r282858;
        double r282860 = m;
        double r282861 = pow(r282859, r282860);
        double r282862 = r282857 * r282861;
        double r282863 = pow(r282858, r282860);
        double r282864 = r282862 * r282863;
        double r282865 = 2.0;
        double r282866 = 10.0;
        double r282867 = 1.0;
        double r282868 = fma(r282854, r282866, r282867);
        double r282869 = fma(r282854, r282854, r282868);
        double r282870 = r282869 * r282865;
        double r282871 = r282865 / r282870;
        double r282872 = r282864 * r282871;
        double r282873 = -1.0;
        double r282874 = 1.0;
        double r282875 = r282874 / r282854;
        double r282876 = log(r282875);
        double r282877 = r282860 * r282876;
        double r282878 = r282873 * r282877;
        double r282879 = exp(r282878);
        double r282880 = r282879 / r282854;
        double r282881 = r282857 / r282854;
        double r282882 = 99.0;
        double r282883 = r282857 * r282879;
        double r282884 = 4.0;
        double r282885 = pow(r282854, r282884);
        double r282886 = r282883 / r282885;
        double r282887 = r282882 * r282886;
        double r282888 = 3.0;
        double r282889 = pow(r282854, r282888);
        double r282890 = r282883 / r282889;
        double r282891 = r282866 * r282890;
        double r282892 = r282887 - r282891;
        double r282893 = fma(r282880, r282881, r282892);
        double r282894 = r282856 ? r282872 : r282893;
        return r282894;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.8029813469456922e+38

    1. Initial program 0.1

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.1

      \[\leadsto \frac{a \cdot {\color{blue}{\left(\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right) \cdot \sqrt[3]{k}\right)}}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    4. Applied unpow-prod-down0.1

      \[\leadsto \frac{a \cdot \color{blue}{\left({\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m} \cdot {\left(\sqrt[3]{k}\right)}^{m}\right)}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    5. Applied associate-*r*0.1

      \[\leadsto \frac{\color{blue}{\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m}\right) \cdot {\left(\sqrt[3]{k}\right)}^{m}}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    6. Using strategy rm
    7. Applied div-inv0.1

      \[\leadsto \color{blue}{\left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m}\right) \cdot {\left(\sqrt[3]{k}\right)}^{m}\right) \cdot \frac{1}{\left(1 + 10 \cdot k\right) + k \cdot k}}\]
    8. Simplified0.0

      \[\leadsto \left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m}\right) \cdot {\left(\sqrt[3]{k}\right)}^{m}\right) \cdot \color{blue}{\frac{2}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right) \cdot 2}}\]

    if 1.8029813469456922e+38 < k

    1. Initial program 6.1

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around inf 6.1

      \[\leadsto \color{blue}{\left(\frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{2}} + 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}}\right) - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}}\]
    3. Simplified0.2

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 1.8029813469456922 \cdot 10^{38}:\\ \;\;\;\;\left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{m}\right) \cdot {\left(\sqrt[3]{k}\right)}^{m}\right) \cdot \frac{2}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right) \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020060 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))