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

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

\end{array}
double f(double a, double k, double m) {
        double r165332 = a;
        double r165333 = k;
        double r165334 = m;
        double r165335 = pow(r165333, r165334);
        double r165336 = r165332 * r165335;
        double r165337 = 1.0;
        double r165338 = 10.0;
        double r165339 = r165338 * r165333;
        double r165340 = r165337 + r165339;
        double r165341 = r165333 * r165333;
        double r165342 = r165340 + r165341;
        double r165343 = r165336 / r165342;
        return r165343;
}

double f(double a, double k, double m) {
        double r165344 = k;
        double r165345 = 8.644575216938256e+148;
        bool r165346 = r165344 <= r165345;
        double r165347 = a;
        double r165348 = m;
        double r165349 = pow(r165344, r165348);
        double r165350 = r165347 * r165349;
        double r165351 = 1.0;
        double r165352 = 10.0;
        double r165353 = r165352 * r165344;
        double r165354 = r165351 + r165353;
        double r165355 = r165344 * r165344;
        double r165356 = r165354 + r165355;
        double r165357 = r165350 / r165356;
        double r165358 = r165347 / r165344;
        double r165359 = log(r165344);
        double r165360 = r165359 * r165348;
        double r165361 = exp(r165360);
        double r165362 = r165361 / r165344;
        double r165363 = 2.0;
        double r165364 = pow(r165344, r165363);
        double r165365 = r165364 / r165347;
        double r165366 = r165361 / r165365;
        double r165367 = 99.0;
        double r165368 = r165367 / r165364;
        double r165369 = r165352 / r165344;
        double r165370 = r165368 - r165369;
        double r165371 = r165366 * r165370;
        double r165372 = fma(r165358, r165362, r165371);
        double r165373 = r165346 ? r165357 : r165372;
        return r165373;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 8.644575216938256e+148

    1. Initial program 0.1

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

    if 8.644575216938256e+148 < k

    1. Initial program 9.5

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

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

      \[\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}}}\]
    4. Simplified0.1

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

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

Reproduce

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