Average Error: 2.0 → 0.1
Time: 38.7s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 100398387241228826532904960:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, 10 + k, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left({\left(\frac{1}{k}\right)}^{\left(-m\right)}, \frac{\frac{a}{k}}{k}, \left({\left(\frac{1}{k}\right)}^{\left(-m\right)} \cdot a\right) \cdot \frac{99}{{k}^{4}} - \frac{10}{{k}^{3}} \cdot \left({\left(\frac{1}{k}\right)}^{\left(-m\right)} \cdot a\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 100398387241228826532904960:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, 10 + k, 1\right)}\\

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

\end{array}
double f(double a, double k, double m) {
        double r324975 = a;
        double r324976 = k;
        double r324977 = m;
        double r324978 = pow(r324976, r324977);
        double r324979 = r324975 * r324978;
        double r324980 = 1.0;
        double r324981 = 10.0;
        double r324982 = r324981 * r324976;
        double r324983 = r324980 + r324982;
        double r324984 = r324976 * r324976;
        double r324985 = r324983 + r324984;
        double r324986 = r324979 / r324985;
        return r324986;
}

double f(double a, double k, double m) {
        double r324987 = k;
        double r324988 = 1.0039838724122883e+26;
        bool r324989 = r324987 <= r324988;
        double r324990 = a;
        double r324991 = m;
        double r324992 = pow(r324987, r324991);
        double r324993 = r324990 * r324992;
        double r324994 = 10.0;
        double r324995 = r324994 + r324987;
        double r324996 = 1.0;
        double r324997 = fma(r324987, r324995, r324996);
        double r324998 = r324993 / r324997;
        double r324999 = 1.0;
        double r325000 = r324999 / r324987;
        double r325001 = -r324991;
        double r325002 = pow(r325000, r325001);
        double r325003 = r324990 / r324987;
        double r325004 = r325003 / r324987;
        double r325005 = r325002 * r324990;
        double r325006 = 99.0;
        double r325007 = 4.0;
        double r325008 = pow(r324987, r325007);
        double r325009 = r325006 / r325008;
        double r325010 = r325005 * r325009;
        double r325011 = 3.0;
        double r325012 = pow(r324987, r325011);
        double r325013 = r324994 / r325012;
        double r325014 = r325013 * r325005;
        double r325015 = r325010 - r325014;
        double r325016 = fma(r325002, r325004, r325015);
        double r325017 = r324989 ? r324998 : r325016;
        return r325017;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.0039838724122883e+26

    1. Initial program 0.1

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

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

    if 1.0039838724122883e+26 < k

    1. Initial program 5.7

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

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

      \[\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}}}\]
    4. Simplified0.1

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

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

Reproduce

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