Average Error: 2.0 → 0.1
Time: 49.2s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 3.712300181399613687293094562313871192358 \cdot 10^{111}:\\ \;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{k}, \frac{a}{k}, \frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{2}}{a}} \cdot \left(\frac{99}{{k}^{2}} - \frac{10}{k}\right)\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.712300181399613687293094562313871192358 \cdot 10^{111}:\\
\;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}\\

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

\end{array}
double f(double a, double k, double m) {
        double r314256 = a;
        double r314257 = k;
        double r314258 = m;
        double r314259 = pow(r314257, r314258);
        double r314260 = r314256 * r314259;
        double r314261 = 1.0;
        double r314262 = 10.0;
        double r314263 = r314262 * r314257;
        double r314264 = r314261 + r314263;
        double r314265 = r314257 * r314257;
        double r314266 = r314264 + r314265;
        double r314267 = r314260 / r314266;
        return r314267;
}

double f(double a, double k, double m) {
        double r314268 = k;
        double r314269 = 3.7123001813996137e+111;
        bool r314270 = r314268 <= r314269;
        double r314271 = a;
        double r314272 = 10.0;
        double r314273 = r314272 + r314268;
        double r314274 = 1.0;
        double r314275 = fma(r314268, r314273, r314274);
        double r314276 = m;
        double r314277 = pow(r314268, r314276);
        double r314278 = r314275 / r314277;
        double r314279 = r314271 / r314278;
        double r314280 = exp(r314276);
        double r314281 = log(r314268);
        double r314282 = pow(r314280, r314281);
        double r314283 = r314282 / r314268;
        double r314284 = r314271 / r314268;
        double r314285 = 2.0;
        double r314286 = pow(r314268, r314285);
        double r314287 = r314286 / r314271;
        double r314288 = r314282 / r314287;
        double r314289 = 99.0;
        double r314290 = r314289 / r314286;
        double r314291 = r314272 / r314268;
        double r314292 = r314290 - r314291;
        double r314293 = r314288 * r314292;
        double r314294 = fma(r314283, r314284, r314293);
        double r314295 = r314270 ? r314279 : r314294;
        return r314295;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.7123001813996137e+111

    1. Initial program 0.1

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

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

    if 3.7123001813996137e+111 < k

    1. Initial program 8.3

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

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

      \[\leadsto \color{blue}{\left(99 \cdot \frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{4}} + \frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{2}}\right) - 10 \cdot \frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{3}}}\]
    4. Simplified0.1

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

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

Reproduce

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