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

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

\end{array}
double f(double a, double k, double m) {
        double r7957291 = a;
        double r7957292 = k;
        double r7957293 = m;
        double r7957294 = pow(r7957292, r7957293);
        double r7957295 = r7957291 * r7957294;
        double r7957296 = 1.0;
        double r7957297 = 10.0;
        double r7957298 = r7957297 * r7957292;
        double r7957299 = r7957296 + r7957298;
        double r7957300 = r7957292 * r7957292;
        double r7957301 = r7957299 + r7957300;
        double r7957302 = r7957295 / r7957301;
        return r7957302;
}

double f(double a, double k, double m) {
        double r7957303 = k;
        double r7957304 = 7.331755494272774e+19;
        bool r7957305 = r7957303 <= r7957304;
        double r7957306 = m;
        double r7957307 = pow(r7957303, r7957306);
        double r7957308 = a;
        double r7957309 = r7957307 * r7957308;
        double r7957310 = 10.0;
        double r7957311 = r7957303 + r7957310;
        double r7957312 = 1.0;
        double r7957313 = fma(r7957303, r7957311, r7957312);
        double r7957314 = r7957309 / r7957313;
        double r7957315 = r7957308 / r7957303;
        double r7957316 = log(r7957303);
        double r7957317 = r7957306 * r7957316;
        double r7957318 = exp(r7957317);
        double r7957319 = r7957318 / r7957303;
        double r7957320 = r7957315 * r7957319;
        double r7957321 = 99.0;
        double r7957322 = r7957303 * r7957303;
        double r7957323 = r7957321 / r7957322;
        double r7957324 = r7957310 / r7957303;
        double r7957325 = r7957323 - r7957324;
        double r7957326 = r7957320 * r7957325;
        double r7957327 = fma(r7957315, r7957319, r7957326);
        double r7957328 = r7957305 ? r7957314 : r7957327;
        return r7957328;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 7.331755494272774e+19

    1. Initial program 0.1

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

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

    if 7.331755494272774e+19 < k

    1. Initial program 5.7

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

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

      \[\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(\frac{a}{k}, \frac{e^{\log k \cdot m}}{k}, \left(\frac{a}{k} \cdot \frac{e^{\log k \cdot m}}{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 73317554942727741440:\\ \;\;\;\;\frac{{k}^{m} \cdot a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{a}{k}, \frac{e^{m \cdot \log k}}{k}, \left(\frac{a}{k} \cdot \frac{e^{m \cdot \log k}}{k}\right) \cdot \left(\frac{99}{k \cdot k} - \frac{10}{k}\right)\right)\\ \end{array}\]

Reproduce

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