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

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

\end{array}
double f(double a, double k, double m) {
        double r193725 = a;
        double r193726 = k;
        double r193727 = m;
        double r193728 = pow(r193726, r193727);
        double r193729 = r193725 * r193728;
        double r193730 = 1.0;
        double r193731 = 10.0;
        double r193732 = r193731 * r193726;
        double r193733 = r193730 + r193732;
        double r193734 = r193726 * r193726;
        double r193735 = r193733 + r193734;
        double r193736 = r193729 / r193735;
        return r193736;
}

double f(double a, double k, double m) {
        double r193737 = k;
        double r193738 = 4.3724534202259655e+54;
        bool r193739 = r193737 <= r193738;
        double r193740 = 1.0;
        double r193741 = 10.0;
        double r193742 = r193741 + r193737;
        double r193743 = 1.0;
        double r193744 = fma(r193737, r193742, r193743);
        double r193745 = r193740 / r193744;
        double r193746 = m;
        double r193747 = pow(r193737, r193746);
        double r193748 = a;
        double r193749 = r193747 * r193748;
        double r193750 = r193745 * r193749;
        double r193751 = exp(r193746);
        double r193752 = log(r193737);
        double r193753 = pow(r193751, r193752);
        double r193754 = r193753 / r193737;
        double r193755 = r193748 / r193737;
        double r193756 = 2.0;
        double r193757 = pow(r193737, r193756);
        double r193758 = r193757 / r193748;
        double r193759 = r193753 / r193758;
        double r193760 = 99.0;
        double r193761 = r193760 / r193757;
        double r193762 = r193741 / r193737;
        double r193763 = r193761 - r193762;
        double r193764 = r193759 * r193763;
        double r193765 = fma(r193754, r193755, r193764);
        double r193766 = r193739 ? r193750 : r193765;
        return r193766;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 4.3724534202259655e+54

    1. Initial program 0.1

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Simplified0.1

      \[\leadsto \color{blue}{\frac{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}}\]
    3. Using strategy rm
    4. Applied div-inv0.1

      \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right) \cdot \frac{1}{{k}^{m}}}}\]
    5. Applied *-un-lft-identity0.1

      \[\leadsto \frac{\color{blue}{1 \cdot a}}{\mathsf{fma}\left(k, 10 + k, 1\right) \cdot \frac{1}{{k}^{m}}}\]
    6. Applied times-frac0.1

      \[\leadsto \color{blue}{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)} \cdot \frac{a}{\frac{1}{{k}^{m}}}}\]
    7. Simplified0.1

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

    if 4.3724534202259655e+54 < k

    1. Initial program 6.6

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Simplified6.6

      \[\leadsto \color{blue}{\frac{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}}\]
    3. Taylor expanded around -inf 64.0

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

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

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

Reproduce

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