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 r196571 = a;
        double r196572 = k;
        double r196573 = m;
        double r196574 = pow(r196572, r196573);
        double r196575 = r196571 * r196574;
        double r196576 = 1.0;
        double r196577 = 10.0;
        double r196578 = r196577 * r196572;
        double r196579 = r196576 + r196578;
        double r196580 = r196572 * r196572;
        double r196581 = r196579 + r196580;
        double r196582 = r196575 / r196581;
        return r196582;
}

double f(double a, double k, double m) {
        double r196583 = k;
        double r196584 = 3.2595899677754594e+105;
        bool r196585 = r196583 <= r196584;
        double r196586 = a;
        double r196587 = m;
        double r196588 = pow(r196583, r196587);
        double r196589 = r196586 * r196588;
        double r196590 = 1.0;
        double r196591 = 10.0;
        double r196592 = r196591 * r196583;
        double r196593 = r196590 + r196592;
        double r196594 = r196583 * r196583;
        double r196595 = r196593 + r196594;
        double r196596 = r196589 / r196595;
        double r196597 = -1.0;
        double r196598 = 1.0;
        double r196599 = r196598 / r196583;
        double r196600 = log(r196599);
        double r196601 = r196587 * r196600;
        double r196602 = r196597 * r196601;
        double r196603 = exp(r196602);
        double r196604 = r196603 / r196583;
        double r196605 = r196586 / r196583;
        double r196606 = 99.0;
        double r196607 = r196586 * r196603;
        double r196608 = 4.0;
        double r196609 = pow(r196583, r196608);
        double r196610 = r196607 / r196609;
        double r196611 = r196606 * r196610;
        double r196612 = 3.0;
        double r196613 = pow(r196583, r196612);
        double r196614 = r196607 / r196613;
        double r196615 = r196591 * r196614;
        double r196616 = r196611 - r196615;
        double r196617 = fma(r196604, r196605, r196616);
        double r196618 = r196585 ? r196596 : r196617;
        return r196618;
}

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))))