Average Error: 2.3 → 0.1
Time: 5.1s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 8.31726067928948193 \cdot 10^{150}:\\ \;\;\;\;a \cdot \frac{{k}^{m}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(10, k, 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 8.31726067928948193 \cdot 10^{150}:\\
\;\;\;\;a \cdot \frac{{k}^{m}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(10, k, 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 r328227 = a;
        double r328228 = k;
        double r328229 = m;
        double r328230 = pow(r328228, r328229);
        double r328231 = r328227 * r328230;
        double r328232 = 1.0;
        double r328233 = 10.0;
        double r328234 = r328233 * r328228;
        double r328235 = r328232 + r328234;
        double r328236 = r328228 * r328228;
        double r328237 = r328235 + r328236;
        double r328238 = r328231 / r328237;
        return r328238;
}

double f(double a, double k, double m) {
        double r328239 = k;
        double r328240 = 8.317260679289482e+150;
        bool r328241 = r328239 <= r328240;
        double r328242 = a;
        double r328243 = m;
        double r328244 = pow(r328239, r328243);
        double r328245 = 10.0;
        double r328246 = 1.0;
        double r328247 = fma(r328245, r328239, r328246);
        double r328248 = fma(r328239, r328239, r328247);
        double r328249 = r328244 / r328248;
        double r328250 = r328242 * r328249;
        double r328251 = -1.0;
        double r328252 = 1.0;
        double r328253 = r328252 / r328239;
        double r328254 = log(r328253);
        double r328255 = r328243 * r328254;
        double r328256 = r328251 * r328255;
        double r328257 = exp(r328256);
        double r328258 = r328257 / r328239;
        double r328259 = r328242 / r328239;
        double r328260 = 99.0;
        double r328261 = r328242 * r328257;
        double r328262 = 4.0;
        double r328263 = pow(r328239, r328262);
        double r328264 = r328261 / r328263;
        double r328265 = r328260 * r328264;
        double r328266 = 3.0;
        double r328267 = pow(r328239, r328266);
        double r328268 = r328261 / r328267;
        double r328269 = r328245 * r328268;
        double r328270 = r328265 - r328269;
        double r328271 = fma(r328258, r328259, r328270);
        double r328272 = r328241 ? r328250 : r328271;
        return r328272;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 8.317260679289482e+150

    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 associate-/l*0.1

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

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

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

    if 8.317260679289482e+150 < k

    1. Initial program 11.3

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

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