Average Error: 1.9 → 0.1
Time: 19.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.858753298023434253616751573926542598119 \cdot 10^{133}:\\ \;\;\;\;\left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{\log k \cdot m}}{k}, \frac{a}{k}, \frac{\frac{a}{k} \cdot e^{\log k \cdot m}}{k} \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.858753298023434253616751573926542598119 \cdot 10^{133}:\\
\;\;\;\;\left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)\right)\\

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

\end{array}
double f(double a, double k, double m) {
        double r156549 = a;
        double r156550 = k;
        double r156551 = m;
        double r156552 = pow(r156550, r156551);
        double r156553 = r156549 * r156552;
        double r156554 = 1.0;
        double r156555 = 10.0;
        double r156556 = r156555 * r156550;
        double r156557 = r156554 + r156556;
        double r156558 = r156550 * r156550;
        double r156559 = r156557 + r156558;
        double r156560 = r156553 / r156559;
        return r156560;
}

double f(double a, double k, double m) {
        double r156561 = k;
        double r156562 = 3.8587532980234343e+133;
        bool r156563 = r156561 <= r156562;
        double r156564 = a;
        double r156565 = m;
        double r156566 = pow(r156561, r156565);
        double r156567 = r156564 * r156566;
        double r156568 = 1.0;
        double r156569 = 10.0;
        double r156570 = r156569 + r156561;
        double r156571 = 1.0;
        double r156572 = fma(r156561, r156570, r156571);
        double r156573 = r156568 / r156572;
        double r156574 = expm1(r156573);
        double r156575 = log1p(r156574);
        double r156576 = r156567 * r156575;
        double r156577 = log(r156561);
        double r156578 = r156577 * r156565;
        double r156579 = exp(r156578);
        double r156580 = r156579 / r156561;
        double r156581 = r156564 / r156561;
        double r156582 = r156581 * r156579;
        double r156583 = r156582 / r156561;
        double r156584 = 99.0;
        double r156585 = 2.0;
        double r156586 = pow(r156561, r156585);
        double r156587 = r156584 / r156586;
        double r156588 = r156569 / r156561;
        double r156589 = r156587 - r156588;
        double r156590 = r156583 * r156589;
        double r156591 = fma(r156580, r156581, r156590);
        double r156592 = r156563 ? r156576 : r156591;
        return r156592;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.8587532980234343e+133

    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 div-inv0.1

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

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}}\]
    5. Using strategy rm
    6. Applied log1p-expm1-u0.1

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

    if 3.8587532980234343e+133 < k

    1. Initial program 8.3

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

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

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}}\]
    5. Using strategy rm
    6. Applied log1p-expm1-u8.3

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)\right)}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt8.3

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\color{blue}{\sqrt{\mathsf{fma}\left(k, 10 + k, 1\right)} \cdot \sqrt{\mathsf{fma}\left(k, 10 + k, 1\right)}}}\right)\right)\]
    9. Applied associate-/r*8.3

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\color{blue}{\frac{\frac{1}{\sqrt{\mathsf{fma}\left(k, 10 + k, 1\right)}}}{\sqrt{\mathsf{fma}\left(k, 10 + k, 1\right)}}}\right)\right)\]
    10. 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}}}\]
    11. Simplified0.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{e^{\log k \cdot m}}{k}, \frac{a}{k}, \frac{\frac{a}{k} \cdot e^{\log k \cdot m}}{k} \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.858753298023434253616751573926542598119 \cdot 10^{133}:\\ \;\;\;\;\left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{\log k \cdot m}}{k}, \frac{a}{k}, \frac{\frac{a}{k} \cdot e^{\log k \cdot m}}{k} \cdot \left(\frac{99}{{k}^{2}} - \frac{10}{k}\right)\right)\\ \end{array}\]

Reproduce

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