Average Error: 1.9 → 0.1
Time: 4.9s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 9.48096967572508535 \cdot 10^{129}:\\ \;\;\;\;\frac{\left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{\left(\frac{m}{2}\right)}\right) \cdot {\left(\sqrt[3]{k}\right)}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{\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 9.48096967572508535 \cdot 10^{129}:\\
\;\;\;\;\frac{\left(\left(a \cdot {\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right)}^{\left(\frac{m}{2}\right)}\right) \cdot {\left(\sqrt[3]{k}\right)}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{\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 r166336 = a;
        double r166337 = k;
        double r166338 = m;
        double r166339 = pow(r166337, r166338);
        double r166340 = r166336 * r166339;
        double r166341 = 1.0;
        double r166342 = 10.0;
        double r166343 = r166342 * r166337;
        double r166344 = r166341 + r166343;
        double r166345 = r166337 * r166337;
        double r166346 = r166344 + r166345;
        double r166347 = r166340 / r166346;
        return r166347;
}

double f(double a, double k, double m) {
        double r166348 = k;
        double r166349 = 9.480969675725085e+129;
        bool r166350 = r166348 <= r166349;
        double r166351 = a;
        double r166352 = cbrt(r166348);
        double r166353 = r166352 * r166352;
        double r166354 = m;
        double r166355 = 2.0;
        double r166356 = r166354 / r166355;
        double r166357 = pow(r166353, r166356);
        double r166358 = r166351 * r166357;
        double r166359 = pow(r166352, r166356);
        double r166360 = r166358 * r166359;
        double r166361 = pow(r166348, r166356);
        double r166362 = r166360 * r166361;
        double r166363 = 10.0;
        double r166364 = 1.0;
        double r166365 = fma(r166363, r166348, r166364);
        double r166366 = fma(r166348, r166348, r166365);
        double r166367 = r166362 / r166366;
        double r166368 = -1.0;
        double r166369 = 1.0;
        double r166370 = r166369 / r166348;
        double r166371 = log(r166370);
        double r166372 = r166354 * r166371;
        double r166373 = r166368 * r166372;
        double r166374 = exp(r166373);
        double r166375 = r166374 / r166348;
        double r166376 = r166351 / r166348;
        double r166377 = 99.0;
        double r166378 = r166351 * r166374;
        double r166379 = 4.0;
        double r166380 = pow(r166348, r166379);
        double r166381 = r166378 / r166380;
        double r166382 = r166377 * r166381;
        double r166383 = 3.0;
        double r166384 = pow(r166348, r166383);
        double r166385 = r166378 / r166384;
        double r166386 = r166363 * r166385;
        double r166387 = r166382 - r166386;
        double r166388 = fma(r166375, r166376, r166387);
        double r166389 = r166350 ? r166367 : r166388;
        return r166389;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 9.480969675725085e+129

    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(10, k, 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(10, k, 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(10, k, 1\right)\right)}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt0.1

      \[\leadsto \frac{\left(a \cdot {\color{blue}{\left(\left(\sqrt[3]{k} \cdot \sqrt[3]{k}\right) \cdot \sqrt[3]{k}\right)}}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(10, k, 1\right)\right)}\]
    9. Applied unpow-prod-down0.1

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

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

    if 9.480969675725085e+129 < k

    1. Initial program 8.4

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