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

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

\end{array}
double f(double a, double k, double m) {
        double r6502465 = a;
        double r6502466 = k;
        double r6502467 = m;
        double r6502468 = pow(r6502466, r6502467);
        double r6502469 = r6502465 * r6502468;
        double r6502470 = 1.0;
        double r6502471 = 10.0;
        double r6502472 = r6502471 * r6502466;
        double r6502473 = r6502470 + r6502472;
        double r6502474 = r6502466 * r6502466;
        double r6502475 = r6502473 + r6502474;
        double r6502476 = r6502469 / r6502475;
        return r6502476;
}

double f(double a, double k, double m) {
        double r6502477 = k;
        double r6502478 = 3.050984953394394e+107;
        bool r6502479 = r6502477 <= r6502478;
        double r6502480 = a;
        double r6502481 = 10.0;
        double r6502482 = r6502477 + r6502481;
        double r6502483 = 1.0;
        double r6502484 = fma(r6502477, r6502482, r6502483);
        double r6502485 = m;
        double r6502486 = pow(r6502477, r6502485);
        double r6502487 = r6502484 / r6502486;
        double r6502488 = r6502480 / r6502487;
        double r6502489 = log(r6502477);
        double r6502490 = r6502489 * r6502485;
        double r6502491 = exp(r6502490);
        double r6502492 = r6502491 / r6502477;
        double r6502493 = r6502480 / r6502477;
        double r6502494 = 99.0;
        double r6502495 = r6502477 * r6502477;
        double r6502496 = r6502494 / r6502495;
        double r6502497 = r6502481 / r6502477;
        double r6502498 = r6502496 - r6502497;
        double r6502499 = r6502493 * r6502492;
        double r6502500 = r6502498 * r6502499;
        double r6502501 = fma(r6502492, r6502493, r6502500);
        double r6502502 = r6502479 ? r6502488 : r6502501;
        return r6502502;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.050984953394394e+107

    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. Simplified0.0

      \[\leadsto \frac{a}{\color{blue}{\frac{\mathsf{fma}\left(k + 10, k, 1\right)}{{k}^{m}}}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity0.0

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

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

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

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

    if 3.050984953394394e+107 < k

    1. Initial program 8.2

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

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

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

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

Reproduce

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