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

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

\end{array}
double f(double a, double k, double m) {
        double r7909952 = a;
        double r7909953 = k;
        double r7909954 = m;
        double r7909955 = pow(r7909953, r7909954);
        double r7909956 = r7909952 * r7909955;
        double r7909957 = 1.0;
        double r7909958 = 10.0;
        double r7909959 = r7909958 * r7909953;
        double r7909960 = r7909957 + r7909959;
        double r7909961 = r7909953 * r7909953;
        double r7909962 = r7909960 + r7909961;
        double r7909963 = r7909956 / r7909962;
        return r7909963;
}

double f(double a, double k, double m) {
        double r7909964 = k;
        double r7909965 = 7.008944406089647e+111;
        bool r7909966 = r7909964 <= r7909965;
        double r7909967 = 1.0;
        double r7909968 = 10.0;
        double r7909969 = r7909964 + r7909968;
        double r7909970 = fma(r7909964, r7909969, r7909967);
        double r7909971 = r7909967 / r7909970;
        double r7909972 = m;
        double r7909973 = pow(r7909964, r7909972);
        double r7909974 = a;
        double r7909975 = r7909973 * r7909974;
        double r7909976 = r7909971 * r7909975;
        double r7909977 = 99.0;
        double r7909978 = r7909964 * r7909964;
        double r7909979 = r7909977 / r7909978;
        double r7909980 = r7909968 / r7909964;
        double r7909981 = r7909979 - r7909980;
        double r7909982 = log(r7909964);
        double r7909983 = r7909982 * r7909972;
        double r7909984 = exp(r7909983);
        double r7909985 = r7909984 / r7909964;
        double r7909986 = r7909974 / r7909964;
        double r7909987 = r7909985 * r7909986;
        double r7909988 = r7909981 * r7909987;
        double r7909989 = r7909988 + r7909987;
        double r7909990 = r7909966 ? r7909976 : r7909989;
        return r7909990;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 7.008944406089647e+111

    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, k + 10, 1\right)}}\]
    3. Using strategy rm
    4. Applied div-inv0.1

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

    if 7.008944406089647e+111 < k

    1. Initial program 7.3

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

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

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

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

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

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

Reproduce

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