Average Error: 2.2 → 0.1
Time: 5.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.259589967775459437985798072367657416772 \cdot 10^{105}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\ \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 3.259589967775459437985798072367657416772 \cdot 10^{105}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\

\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 r374380 = a;
        double r374381 = k;
        double r374382 = m;
        double r374383 = pow(r374381, r374382);
        double r374384 = r374380 * r374383;
        double r374385 = 1.0;
        double r374386 = 10.0;
        double r374387 = r374386 * r374381;
        double r374388 = r374385 + r374387;
        double r374389 = r374381 * r374381;
        double r374390 = r374388 + r374389;
        double r374391 = r374384 / r374390;
        return r374391;
}

double f(double a, double k, double m) {
        double r374392 = k;
        double r374393 = 3.2595899677754594e+105;
        bool r374394 = r374392 <= r374393;
        double r374395 = a;
        double r374396 = m;
        double r374397 = pow(r374392, r374396);
        double r374398 = r374395 * r374397;
        double r374399 = 1.0;
        double r374400 = 10.0;
        double r374401 = r374400 * r374392;
        double r374402 = r374399 + r374401;
        double r374403 = r374392 * r374392;
        double r374404 = r374402 + r374403;
        double r374405 = r374398 / r374404;
        double r374406 = -1.0;
        double r374407 = 1.0;
        double r374408 = r374407 / r374392;
        double r374409 = log(r374408);
        double r374410 = r374396 * r374409;
        double r374411 = r374406 * r374410;
        double r374412 = exp(r374411);
        double r374413 = r374412 / r374392;
        double r374414 = r374395 / r374392;
        double r374415 = 99.0;
        double r374416 = r374395 * r374412;
        double r374417 = 4.0;
        double r374418 = pow(r374392, r374417);
        double r374419 = r374416 / r374418;
        double r374420 = r374415 * r374419;
        double r374421 = 3.0;
        double r374422 = pow(r374392, r374421);
        double r374423 = r374416 / r374422;
        double r374424 = r374400 * r374423;
        double r374425 = r374420 - r374424;
        double r374426 = fma(r374413, r374414, r374425);
        double r374427 = r374394 ? r374405 : r374426;
        return r374427;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.2595899677754594e+105

    1. Initial program 0.1

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

    if 3.2595899677754594e+105 < k

    1. Initial program 8.3

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around inf 8.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 3.259589967775459437985798072367657416772 \cdot 10^{105}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\ \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 2020001 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))