Average Error: 2.1 → 0.2
Time: 7.1s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1102949897341434463860001093892983226368:\\ \;\;\;\;\frac{{k}^{\left(\frac{m}{2}\right)}}{\frac{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}{{k}^{\left(\frac{m}{2}\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 1102949897341434463860001093892983226368:\\
\;\;\;\;\frac{{k}^{\left(\frac{m}{2}\right)}}{\frac{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}{{k}^{\left(\frac{m}{2}\right)}}}\\

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

\end{array}
double f(double a, double k, double m) {
        double r388382 = a;
        double r388383 = k;
        double r388384 = m;
        double r388385 = pow(r388383, r388384);
        double r388386 = r388382 * r388385;
        double r388387 = 1.0;
        double r388388 = 10.0;
        double r388389 = r388388 * r388383;
        double r388390 = r388387 + r388389;
        double r388391 = r388383 * r388383;
        double r388392 = r388390 + r388391;
        double r388393 = r388386 / r388392;
        return r388393;
}

double f(double a, double k, double m) {
        double r388394 = k;
        double r388395 = 1.1029498973414345e+39;
        bool r388396 = r388394 <= r388395;
        double r388397 = m;
        double r388398 = 2.0;
        double r388399 = r388397 / r388398;
        double r388400 = pow(r388394, r388399);
        double r388401 = 10.0;
        double r388402 = 1.0;
        double r388403 = fma(r388394, r388401, r388402);
        double r388404 = fma(r388394, r388394, r388403);
        double r388405 = a;
        double r388406 = r388404 / r388405;
        double r388407 = r388406 / r388400;
        double r388408 = r388400 / r388407;
        double r388409 = -1.0;
        double r388410 = 1.0;
        double r388411 = r388410 / r388394;
        double r388412 = log(r388411);
        double r388413 = r388397 * r388412;
        double r388414 = r388409 * r388413;
        double r388415 = exp(r388414);
        double r388416 = r388415 / r388394;
        double r388417 = r388405 / r388394;
        double r388418 = 99.0;
        double r388419 = r388405 * r388415;
        double r388420 = 4.0;
        double r388421 = pow(r388394, r388420);
        double r388422 = r388419 / r388421;
        double r388423 = r388418 * r388422;
        double r388424 = 3.0;
        double r388425 = pow(r388394, r388424);
        double r388426 = r388419 / r388425;
        double r388427 = r388401 * r388426;
        double r388428 = r388423 - r388427;
        double r388429 = fma(r388416, r388417, r388428);
        double r388430 = r388396 ? r388408 : r388429;
        return r388430;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.1029498973414345e+39

    1. Initial program 0.1

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

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

      \[\leadsto \frac{\color{blue}{{k}^{\left(\frac{m}{2}\right)} \cdot {k}^{\left(\frac{m}{2}\right)}}}{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}\]
    5. Applied associate-/l*0.2

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

    if 1.1029498973414345e+39 < k

    1. Initial program 6.0

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

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

      \[\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.2

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

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

Reproduce

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