Average Error: 2.1 → 0.1
Time: 4.7s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1.517993931788378 \cdot 10^{137}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(1, 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 1.517993931788378 \cdot 10^{137}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(1, 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 r304542 = a;
        double r304543 = k;
        double r304544 = m;
        double r304545 = pow(r304543, r304544);
        double r304546 = r304542 * r304545;
        double r304547 = 1.0;
        double r304548 = 10.0;
        double r304549 = r304548 * r304543;
        double r304550 = r304547 + r304549;
        double r304551 = r304543 * r304543;
        double r304552 = r304550 + r304551;
        double r304553 = r304546 / r304552;
        return r304553;
}

double f(double a, double k, double m) {
        double r304554 = k;
        double r304555 = 1.517993931788378e+137;
        bool r304556 = r304554 <= r304555;
        double r304557 = a;
        double r304558 = m;
        double r304559 = pow(r304554, r304558);
        double r304560 = r304557 * r304559;
        double r304561 = 1.0;
        double r304562 = 1.0;
        double r304563 = 10.0;
        double r304564 = r304563 * r304554;
        double r304565 = fma(r304561, r304562, r304564);
        double r304566 = r304554 * r304554;
        double r304567 = r304565 + r304566;
        double r304568 = r304560 / r304567;
        double r304569 = -1.0;
        double r304570 = r304561 / r304554;
        double r304571 = log(r304570);
        double r304572 = r304558 * r304571;
        double r304573 = r304569 * r304572;
        double r304574 = exp(r304573);
        double r304575 = r304574 / r304554;
        double r304576 = r304557 / r304554;
        double r304577 = 99.0;
        double r304578 = r304557 * r304574;
        double r304579 = 4.0;
        double r304580 = pow(r304554, r304579);
        double r304581 = r304578 / r304580;
        double r304582 = r304577 * r304581;
        double r304583 = 3.0;
        double r304584 = pow(r304554, r304583);
        double r304585 = r304578 / r304584;
        double r304586 = r304563 * r304585;
        double r304587 = r304582 - r304586;
        double r304588 = fma(r304575, r304576, r304587);
        double r304589 = r304556 ? r304568 : r304588;
        return r304589;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.517993931788378e+137

    1. Initial program 0.1

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.1

      \[\leadsto \frac{a \cdot {k}^{m}}{\left(\color{blue}{1 \cdot 1} + 10 \cdot k\right) + k \cdot k}\]
    4. Applied fma-def0.1

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

    if 1.517993931788378e+137 < k

    1. Initial program 9.3

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around inf 9.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 1.517993931788378 \cdot 10^{137}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(1, 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 2020021 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))