Average Error: 2.1 → 0.1
Time: 4.4s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1.701532077005042711992451302056047665849 \cdot 10^{116}:\\ \;\;\;\;\frac{{k}^{m} \cdot a}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\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 1.701532077005042711992451302056047665849 \cdot 10^{116}:\\
\;\;\;\;\frac{{k}^{m} \cdot a}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\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 r346177 = a;
        double r346178 = k;
        double r346179 = m;
        double r346180 = pow(r346178, r346179);
        double r346181 = r346177 * r346180;
        double r346182 = 1.0;
        double r346183 = 10.0;
        double r346184 = r346183 * r346178;
        double r346185 = r346182 + r346184;
        double r346186 = r346178 * r346178;
        double r346187 = r346185 + r346186;
        double r346188 = r346181 / r346187;
        return r346188;
}

double f(double a, double k, double m) {
        double r346189 = k;
        double r346190 = 1.7015320770050427e+116;
        bool r346191 = r346189 <= r346190;
        double r346192 = m;
        double r346193 = pow(r346189, r346192);
        double r346194 = a;
        double r346195 = r346193 * r346194;
        double r346196 = 10.0;
        double r346197 = 1.0;
        double r346198 = fma(r346189, r346196, r346197);
        double r346199 = fma(r346189, r346189, r346198);
        double r346200 = r346195 / r346199;
        double r346201 = -1.0;
        double r346202 = 1.0;
        double r346203 = r346202 / r346189;
        double r346204 = log(r346203);
        double r346205 = r346192 * r346204;
        double r346206 = r346201 * r346205;
        double r346207 = exp(r346206);
        double r346208 = r346207 / r346189;
        double r346209 = r346194 / r346189;
        double r346210 = 99.0;
        double r346211 = r346194 * r346207;
        double r346212 = 4.0;
        double r346213 = pow(r346189, r346212);
        double r346214 = r346211 / r346213;
        double r346215 = r346210 * r346214;
        double r346216 = 3.0;
        double r346217 = pow(r346189, r346216);
        double r346218 = r346211 / r346217;
        double r346219 = r346196 * r346218;
        double r346220 = r346215 - r346219;
        double r346221 = fma(r346208, r346209, r346220);
        double r346222 = r346191 ? r346200 : r346221;
        return r346222;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.7015320770050427e+116

    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 associate-/r/0.1

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

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

    if 1.7015320770050427e+116 < k

    1. Initial program 8.3

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

      \[\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 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}}}\]
    4. 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 1.701532077005042711992451302056047665849 \cdot 10^{116}:\\ \;\;\;\;\frac{{k}^{m} \cdot a}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\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 2019346 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))