Average Error: 2.0 → 0.1
Time: 26.6s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 2.560125379463957 \cdot 10^{+64}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{1 + \left(k + 10\right) \cdot k}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{99}{k \cdot k}\right), \left(\frac{\frac{a}{k}}{k} \cdot e^{m \cdot \log k}\right), \left(-10 \cdot \left(\frac{e^{m \cdot \log k}}{k \cdot k} \cdot \frac{a}{k}\right)\right)\right) + \frac{\frac{a}{k}}{k} \cdot e^{m \cdot \log k}\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 2.560125379463957 \cdot 10^{+64}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{1 + \left(k + 10\right) \cdot k}\\

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

\end{array}
double f(double a, double k, double m) {
        double r5685527 = a;
        double r5685528 = k;
        double r5685529 = m;
        double r5685530 = pow(r5685528, r5685529);
        double r5685531 = r5685527 * r5685530;
        double r5685532 = 1.0;
        double r5685533 = 10.0;
        double r5685534 = r5685533 * r5685528;
        double r5685535 = r5685532 + r5685534;
        double r5685536 = r5685528 * r5685528;
        double r5685537 = r5685535 + r5685536;
        double r5685538 = r5685531 / r5685537;
        return r5685538;
}

double f(double a, double k, double m) {
        double r5685539 = k;
        double r5685540 = 2.560125379463957e+64;
        bool r5685541 = r5685539 <= r5685540;
        double r5685542 = a;
        double r5685543 = m;
        double r5685544 = pow(r5685539, r5685543);
        double r5685545 = r5685542 * r5685544;
        double r5685546 = 1.0;
        double r5685547 = 10.0;
        double r5685548 = r5685539 + r5685547;
        double r5685549 = r5685548 * r5685539;
        double r5685550 = r5685546 + r5685549;
        double r5685551 = r5685545 / r5685550;
        double r5685552 = 99.0;
        double r5685553 = r5685539 * r5685539;
        double r5685554 = r5685552 / r5685553;
        double r5685555 = r5685542 / r5685539;
        double r5685556 = r5685555 / r5685539;
        double r5685557 = log(r5685539);
        double r5685558 = r5685543 * r5685557;
        double r5685559 = exp(r5685558);
        double r5685560 = r5685556 * r5685559;
        double r5685561 = -10.0;
        double r5685562 = r5685559 / r5685553;
        double r5685563 = r5685562 * r5685555;
        double r5685564 = r5685561 * r5685563;
        double r5685565 = fma(r5685554, r5685560, r5685564);
        double r5685566 = r5685565 + r5685560;
        double r5685567 = r5685541 ? r5685551 : r5685566;
        return r5685567;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 2.560125379463957e+64

    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 \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + k \cdot k\right)}}\]
    4. Simplified0.0

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

    if 2.560125379463957e+64 < k

    1. Initial program 6.3

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Using strategy rm
    3. Applied associate-+l+6.3

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

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{\left(k + 10\right) \cdot k}}\]
    5. 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}}}\]
    6. Simplified0.1

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

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

Reproduce

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