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

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

\end{array}
double f(double a, double k, double m) {
        double r10547471 = a;
        double r10547472 = k;
        double r10547473 = m;
        double r10547474 = pow(r10547472, r10547473);
        double r10547475 = r10547471 * r10547474;
        double r10547476 = 1.0;
        double r10547477 = 10.0;
        double r10547478 = r10547477 * r10547472;
        double r10547479 = r10547476 + r10547478;
        double r10547480 = r10547472 * r10547472;
        double r10547481 = r10547479 + r10547480;
        double r10547482 = r10547475 / r10547481;
        return r10547482;
}

double f(double a, double k, double m) {
        double r10547483 = k;
        double r10547484 = 3.8998864630604305e+109;
        bool r10547485 = r10547483 <= r10547484;
        double r10547486 = a;
        double r10547487 = 10.0;
        double r10547488 = r10547483 + r10547487;
        double r10547489 = 1.0;
        double r10547490 = fma(r10547483, r10547488, r10547489);
        double r10547491 = m;
        double r10547492 = pow(r10547483, r10547491);
        double r10547493 = r10547490 / r10547492;
        double r10547494 = r10547486 / r10547493;
        double r10547495 = 99.0;
        double r10547496 = log(r10547483);
        double r10547497 = r10547496 * r10547491;
        double r10547498 = exp(r10547497);
        double r10547499 = r10547483 * r10547483;
        double r10547500 = r10547499 * r10547499;
        double r10547501 = r10547500 / r10547486;
        double r10547502 = r10547498 / r10547501;
        double r10547503 = r10547498 / r10547483;
        double r10547504 = r10547486 / r10547483;
        double r10547505 = r10547503 * r10547504;
        double r10547506 = r10547487 * r10547498;
        double r10547507 = r10547486 / r10547499;
        double r10547508 = r10547483 / r10547507;
        double r10547509 = r10547506 / r10547508;
        double r10547510 = r10547505 - r10547509;
        double r10547511 = fma(r10547495, r10547502, r10547510);
        double r10547512 = r10547485 ? r10547494 : r10547511;
        return r10547512;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.8998864630604305e+109

    1. Initial program 0.1

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

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

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

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

    if 3.8998864630604305e+109 < k

    1. Initial program 7.9

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Simplified7.9

      \[\leadsto \color{blue}{\frac{a}{\frac{\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}}\]
    3. Taylor expanded around inf 7.9

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

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

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

Reproduce

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