Average Error: 2.2 → 0.3
Time: 4.4s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 0.12004989461063595:\\ \;\;\;\;\frac{\left(a \cdot {k}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{1 + \mathsf{fma}\left(10, k, k \cdot k\right)}\\ \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 0.12004989461063595:\\
\;\;\;\;\frac{\left(a \cdot {k}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{1 + \mathsf{fma}\left(10, k, k \cdot k\right)}\\

\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 r283939 = a;
        double r283940 = k;
        double r283941 = m;
        double r283942 = pow(r283940, r283941);
        double r283943 = r283939 * r283942;
        double r283944 = 1.0;
        double r283945 = 10.0;
        double r283946 = r283945 * r283940;
        double r283947 = r283944 + r283946;
        double r283948 = r283940 * r283940;
        double r283949 = r283947 + r283948;
        double r283950 = r283943 / r283949;
        return r283950;
}

double f(double a, double k, double m) {
        double r283951 = k;
        double r283952 = 0.12004989461063595;
        bool r283953 = r283951 <= r283952;
        double r283954 = a;
        double r283955 = m;
        double r283956 = 2.0;
        double r283957 = r283955 / r283956;
        double r283958 = pow(r283951, r283957);
        double r283959 = r283954 * r283958;
        double r283960 = r283959 * r283958;
        double r283961 = 1.0;
        double r283962 = 10.0;
        double r283963 = r283951 * r283951;
        double r283964 = fma(r283962, r283951, r283963);
        double r283965 = r283961 + r283964;
        double r283966 = r283960 / r283965;
        double r283967 = -1.0;
        double r283968 = 1.0;
        double r283969 = r283968 / r283951;
        double r283970 = log(r283969);
        double r283971 = r283955 * r283970;
        double r283972 = r283967 * r283971;
        double r283973 = exp(r283972);
        double r283974 = r283973 / r283951;
        double r283975 = r283954 / r283951;
        double r283976 = 99.0;
        double r283977 = r283954 * r283973;
        double r283978 = 4.0;
        double r283979 = pow(r283951, r283978);
        double r283980 = r283977 / r283979;
        double r283981 = r283976 * r283980;
        double r283982 = 3.0;
        double r283983 = pow(r283951, r283982);
        double r283984 = r283977 / r283983;
        double r283985 = r283962 * r283984;
        double r283986 = r283981 - r283985;
        double r283987 = fma(r283974, r283975, r283986);
        double r283988 = r283953 ? r283966 : r283987;
        return r283988;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 0.12004989461063595

    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 associate-+l+0.1

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

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

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

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

    if 0.12004989461063595 < k

    1. Initial program 5.6

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around inf 6.2

      \[\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.7

      \[\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.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 0.12004989461063595:\\ \;\;\;\;\frac{\left(a \cdot {k}^{\left(\frac{m}{2}\right)}\right) \cdot {k}^{\left(\frac{m}{2}\right)}}{1 + \mathsf{fma}\left(10, k, k \cdot k\right)}\\ \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 2020020 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))