Average Error: 2.0 → 0.1
Time: 19.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.442302470468942821043172495313077911614 \cdot 10^{138}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{a}{k}, \frac{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}{k}, \mathsf{fma}\left(99, \frac{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}{\frac{{k}^{4}}{a}}, \left(-10\right) \cdot \left(\frac{a}{{k}^{3}} \cdot {\left(\frac{1}{k}\right)}^{\left(-m\right)}\right)\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 1.442302470468942821043172495313077911614 \cdot 10^{138}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{a}{k}, \frac{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}{k}, \mathsf{fma}\left(99, \frac{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}{\frac{{k}^{4}}{a}}, \left(-10\right) \cdot \left(\frac{a}{{k}^{3}} \cdot {\left(\frac{1}{k}\right)}^{\left(-m\right)}\right)\right)\right)\\

\end{array}
double f(double a, double k, double m) {
        double r190021 = a;
        double r190022 = k;
        double r190023 = m;
        double r190024 = pow(r190022, r190023);
        double r190025 = r190021 * r190024;
        double r190026 = 1.0;
        double r190027 = 10.0;
        double r190028 = r190027 * r190022;
        double r190029 = r190026 + r190028;
        double r190030 = r190022 * r190022;
        double r190031 = r190029 + r190030;
        double r190032 = r190025 / r190031;
        return r190032;
}

double f(double a, double k, double m) {
        double r190033 = k;
        double r190034 = 1.4423024704689428e+138;
        bool r190035 = r190033 <= r190034;
        double r190036 = a;
        double r190037 = m;
        double r190038 = pow(r190033, r190037);
        double r190039 = r190036 * r190038;
        double r190040 = 1.0;
        double r190041 = 10.0;
        double r190042 = r190041 * r190033;
        double r190043 = r190040 + r190042;
        double r190044 = r190033 * r190033;
        double r190045 = r190043 + r190044;
        double r190046 = r190039 / r190045;
        double r190047 = r190036 / r190033;
        double r190048 = 1.0;
        double r190049 = r190048 / r190033;
        double r190050 = -r190037;
        double r190051 = pow(r190049, r190050);
        double r190052 = r190051 / r190033;
        double r190053 = 99.0;
        double r190054 = 4.0;
        double r190055 = pow(r190033, r190054);
        double r190056 = r190055 / r190036;
        double r190057 = r190051 / r190056;
        double r190058 = -r190041;
        double r190059 = 3.0;
        double r190060 = pow(r190033, r190059);
        double r190061 = r190036 / r190060;
        double r190062 = r190061 * r190051;
        double r190063 = r190058 * r190062;
        double r190064 = fma(r190053, r190057, r190063);
        double r190065 = fma(r190047, r190052, r190064);
        double r190066 = r190035 ? r190046 : r190065;
        return r190066;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.4423024704689428e+138

    1. Initial program 0.1

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

    if 1.4423024704689428e+138 < k

    1. Initial program 8.9

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

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{\sqrt{\left(1 + 10 \cdot k\right) + k \cdot k} \cdot \sqrt{\left(1 + 10 \cdot k\right) + k \cdot k}}}\]
    4. Applied associate-/r*8.9

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

      \[\leadsto \frac{\color{blue}{\frac{a \cdot {k}^{m}}{\sqrt{\mathsf{fma}\left(k, 10 + k, 1\right)}}}}{\sqrt{\left(1 + 10 \cdot k\right) + k \cdot k}}\]
    6. Using strategy rm
    7. Applied add-cbrt-cube11.3

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

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

      \[\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}}}\]
    10. Simplified0.1

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

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

Reproduce

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