Average Error: 2.0 → 0.1
Time: 5.6s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1.6855195864047097 \cdot 10^{151}:\\ \;\;\;\;\frac{\left(a \cdot {k}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}\\ \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.6855195864047097 \cdot 10^{151}:\\
\;\;\;\;\frac{\left(a \cdot {k}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}\\

\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 r360070 = a;
        double r360071 = k;
        double r360072 = m;
        double r360073 = pow(r360071, r360072);
        double r360074 = r360070 * r360073;
        double r360075 = 1.0;
        double r360076 = 10.0;
        double r360077 = r360076 * r360071;
        double r360078 = r360075 + r360077;
        double r360079 = r360071 * r360071;
        double r360080 = r360078 + r360079;
        double r360081 = r360074 / r360080;
        return r360081;
}

double f(double a, double k, double m) {
        double r360082 = k;
        double r360083 = 1.6855195864047097e+151;
        bool r360084 = r360082 <= r360083;
        double r360085 = a;
        double r360086 = m;
        double r360087 = 2.0;
        double r360088 = r360086 / r360087;
        double r360089 = pow(r360082, r360088);
        double r360090 = r360085 * r360089;
        double r360091 = r360090 * r360089;
        double r360092 = 10.0;
        double r360093 = 1.0;
        double r360094 = fma(r360082, r360092, r360093);
        double r360095 = fma(r360082, r360082, r360094);
        double r360096 = r360091 / r360095;
        double r360097 = -1.0;
        double r360098 = 1.0;
        double r360099 = r360098 / r360082;
        double r360100 = log(r360099);
        double r360101 = r360086 * r360100;
        double r360102 = r360097 * r360101;
        double r360103 = exp(r360102);
        double r360104 = r360103 / r360082;
        double r360105 = r360085 / r360082;
        double r360106 = 99.0;
        double r360107 = r360085 * r360103;
        double r360108 = 4.0;
        double r360109 = pow(r360082, r360108);
        double r360110 = r360107 / r360109;
        double r360111 = r360106 * r360110;
        double r360112 = 3.0;
        double r360113 = pow(r360082, r360112);
        double r360114 = r360107 / r360113;
        double r360115 = r360092 * r360114;
        double r360116 = r360111 - r360115;
        double r360117 = fma(r360104, r360105, r360116);
        double r360118 = r360084 ? r360096 : r360117;
        return r360118;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.6855195864047097e+151

    1. Initial program 0.1

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

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

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}}\]
    4. Using strategy rm
    5. Applied sqr-pow0.1

      \[\leadsto \frac{a \cdot \color{blue}{\left({k}^{\left(\frac{m}{2}\right)} \cdot {k}^{\left(\frac{m}{2}\right)}\right)}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}\]
    6. Applied associate-*r*0.1

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

    if 1.6855195864047097e+151 < k

    1. Initial program 10.4

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

      \[\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.1

      \[\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.6855195864047097 \cdot 10^{151}:\\ \;\;\;\;\frac{\left(a \cdot {k}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}\\ \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 2020047 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))