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

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

\end{array}
double f(double a, double k, double m) {
        double r9026954 = a;
        double r9026955 = k;
        double r9026956 = m;
        double r9026957 = pow(r9026955, r9026956);
        double r9026958 = r9026954 * r9026957;
        double r9026959 = 1.0;
        double r9026960 = 10.0;
        double r9026961 = r9026960 * r9026955;
        double r9026962 = r9026959 + r9026961;
        double r9026963 = r9026955 * r9026955;
        double r9026964 = r9026962 + r9026963;
        double r9026965 = r9026958 / r9026964;
        return r9026965;
}

double f(double a, double k, double m) {
        double r9026966 = k;
        double r9026967 = 2.7285682477325216e+25;
        bool r9026968 = r9026966 <= r9026967;
        double r9026969 = m;
        double r9026970 = pow(r9026966, r9026969);
        double r9026971 = 10.0;
        double r9026972 = r9026966 + r9026971;
        double r9026973 = 1.0;
        double r9026974 = fma(r9026972, r9026966, r9026973);
        double r9026975 = r9026970 / r9026974;
        double r9026976 = a;
        double r9026977 = r9026975 * r9026976;
        double r9026978 = 99.0;
        double r9026979 = r9026966 * r9026966;
        double r9026980 = r9026978 / r9026979;
        double r9026981 = r9026976 / r9026979;
        double r9026982 = r9026976 / r9026966;
        double r9026983 = r9026982 / r9026966;
        double r9026984 = r9026981 / r9026966;
        double r9026985 = r9026984 * r9026971;
        double r9026986 = r9026983 - r9026985;
        double r9026987 = fma(r9026980, r9026981, r9026986);
        double r9026988 = r9026970 * r9026987;
        double r9026989 = r9026968 ? r9026977 : r9026988;
        return r9026989;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 2.7285682477325216e+25

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

      \[\leadsto \color{blue}{\left(a \cdot \frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)} \cdot {k}^{m}\]
    5. Applied associate-*l*0.0

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

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

    if 2.7285682477325216e+25 < k

    1. Initial program 6.2

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

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

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

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

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

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

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

Reproduce

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