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

\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 r161511 = a;
        double r161512 = k;
        double r161513 = m;
        double r161514 = pow(r161512, r161513);
        double r161515 = r161511 * r161514;
        double r161516 = 1.0;
        double r161517 = 10.0;
        double r161518 = r161517 * r161512;
        double r161519 = r161516 + r161518;
        double r161520 = r161512 * r161512;
        double r161521 = r161519 + r161520;
        double r161522 = r161515 / r161521;
        return r161522;
}

double f(double a, double k, double m) {
        double r161523 = k;
        double r161524 = 2657436.092148706;
        bool r161525 = r161523 <= r161524;
        double r161526 = a;
        double r161527 = 1.0;
        double r161528 = 10.0;
        double r161529 = r161528 * r161523;
        double r161530 = r161527 + r161529;
        double r161531 = r161523 * r161523;
        double r161532 = r161530 + r161531;
        double r161533 = cbrt(r161532);
        double r161534 = r161533 * r161533;
        double r161535 = r161526 / r161534;
        double r161536 = m;
        double r161537 = pow(r161523, r161536);
        double r161538 = r161537 / r161533;
        double r161539 = r161535 * r161538;
        double r161540 = -1.0;
        double r161541 = 1.0;
        double r161542 = r161541 / r161523;
        double r161543 = log(r161542);
        double r161544 = r161536 * r161543;
        double r161545 = r161540 * r161544;
        double r161546 = exp(r161545);
        double r161547 = r161546 / r161523;
        double r161548 = r161526 / r161523;
        double r161549 = 99.0;
        double r161550 = r161526 * r161546;
        double r161551 = 4.0;
        double r161552 = pow(r161523, r161551);
        double r161553 = r161550 / r161552;
        double r161554 = r161549 * r161553;
        double r161555 = 3.0;
        double r161556 = pow(r161523, r161555);
        double r161557 = r161550 / r161556;
        double r161558 = r161528 * r161557;
        double r161559 = r161554 - r161558;
        double r161560 = fma(r161547, r161548, r161559);
        double r161561 = r161525 ? r161539 : r161560;
        return r161561;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 2657436.092148706

    1. Initial program 0.0

      \[\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 {k}^{m}}{\color{blue}{\left(\sqrt[3]{\left(1 + 10 \cdot k\right) + k \cdot k} \cdot \sqrt[3]{\left(1 + 10 \cdot k\right) + k \cdot k}\right) \cdot \sqrt[3]{\left(1 + 10 \cdot k\right) + k \cdot k}}}\]
    4. Applied times-frac0.1

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

    if 2657436.092148706 < k

    1. Initial program 5.4

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around inf 5.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.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 2657436.09214870585:\\ \;\;\;\;\frac{a}{\sqrt[3]{\left(1 + 10 \cdot k\right) + k \cdot k} \cdot \sqrt[3]{\left(1 + 10 \cdot k\right) + k \cdot k}} \cdot \frac{{k}^{m}}{\sqrt[3]{\left(1 + 10 \cdot k\right) + k \cdot k}}\\ \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 2020027 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))