Average Error: 2.1 → 0.1
Time: 19.9s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 2379.959343579875:\\ \;\;\;\;\frac{1}{\mathsf{fma}\left(k + 10, k, 1\right)} \cdot \left({k}^{m} \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{99}{k \cdot k} - \frac{10}{k}\right) \cdot \left(e^{\log k \cdot m} \cdot \frac{\frac{a}{k}}{k}\right) + e^{\log k \cdot m} \cdot \frac{\frac{a}{k}}{k}\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 2379.959343579875:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k + 10, k, 1\right)} \cdot \left({k}^{m} \cdot a\right)\\

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

\end{array}
double f(double a, double k, double m) {
        double r4600453 = a;
        double r4600454 = k;
        double r4600455 = m;
        double r4600456 = pow(r4600454, r4600455);
        double r4600457 = r4600453 * r4600456;
        double r4600458 = 1.0;
        double r4600459 = 10.0;
        double r4600460 = r4600459 * r4600454;
        double r4600461 = r4600458 + r4600460;
        double r4600462 = r4600454 * r4600454;
        double r4600463 = r4600461 + r4600462;
        double r4600464 = r4600457 / r4600463;
        return r4600464;
}

double f(double a, double k, double m) {
        double r4600465 = k;
        double r4600466 = 2379.959343579875;
        bool r4600467 = r4600465 <= r4600466;
        double r4600468 = 1.0;
        double r4600469 = 10.0;
        double r4600470 = r4600465 + r4600469;
        double r4600471 = fma(r4600470, r4600465, r4600468);
        double r4600472 = r4600468 / r4600471;
        double r4600473 = m;
        double r4600474 = pow(r4600465, r4600473);
        double r4600475 = a;
        double r4600476 = r4600474 * r4600475;
        double r4600477 = r4600472 * r4600476;
        double r4600478 = 99.0;
        double r4600479 = r4600465 * r4600465;
        double r4600480 = r4600478 / r4600479;
        double r4600481 = r4600469 / r4600465;
        double r4600482 = r4600480 - r4600481;
        double r4600483 = log(r4600465);
        double r4600484 = r4600483 * r4600473;
        double r4600485 = exp(r4600484);
        double r4600486 = r4600475 / r4600465;
        double r4600487 = r4600486 / r4600465;
        double r4600488 = r4600485 * r4600487;
        double r4600489 = r4600482 * r4600488;
        double r4600490 = r4600489 + r4600488;
        double r4600491 = r4600467 ? r4600477 : r4600490;
        return r4600491;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 2379.959343579875

    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{{k}^{m} \cdot a}{\mathsf{fma}\left(k + 10, k, 1\right)}}\]
    3. Using strategy rm
    4. Applied div-inv0.0

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

    if 2379.959343579875 < k

    1. Initial program 5.5

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

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

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

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

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

Reproduce

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