Average Error: 2.2 → 0.1
Time: 5.3s
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 r243071 = a;
        double r243072 = k;
        double r243073 = m;
        double r243074 = pow(r243072, r243073);
        double r243075 = r243071 * r243074;
        double r243076 = 1.0;
        double r243077 = 10.0;
        double r243078 = r243077 * r243072;
        double r243079 = r243076 + r243078;
        double r243080 = r243072 * r243072;
        double r243081 = r243079 + r243080;
        double r243082 = r243075 / r243081;
        return r243082;
}

double f(double a, double k, double m) {
        double r243083 = k;
        double r243084 = 3.2595899677754594e+105;
        bool r243085 = r243083 <= r243084;
        double r243086 = a;
        double r243087 = m;
        double r243088 = pow(r243083, r243087);
        double r243089 = r243086 * r243088;
        double r243090 = 1.0;
        double r243091 = 10.0;
        double r243092 = r243091 * r243083;
        double r243093 = r243090 + r243092;
        double r243094 = r243083 * r243083;
        double r243095 = r243093 + r243094;
        double r243096 = r243089 / r243095;
        double r243097 = -1.0;
        double r243098 = 1.0;
        double r243099 = r243098 / r243083;
        double r243100 = log(r243099);
        double r243101 = r243087 * r243100;
        double r243102 = r243097 * r243101;
        double r243103 = exp(r243102);
        double r243104 = r243103 / r243083;
        double r243105 = r243086 / r243083;
        double r243106 = 99.0;
        double r243107 = r243086 * r243103;
        double r243108 = 4.0;
        double r243109 = pow(r243083, r243108);
        double r243110 = r243107 / r243109;
        double r243111 = r243106 * r243110;
        double r243112 = 3.0;
        double r243113 = pow(r243083, r243112);
        double r243114 = r243107 / r243113;
        double r243115 = r243091 * r243114;
        double r243116 = r243111 - r243115;
        double r243117 = fma(r243104, r243105, r243116);
        double r243118 = r243085 ? r243096 : r243117;
        return r243118;
}

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