Average Error: 2.1 → 0.1
Time: 19.1s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1.097649070943432541316308677194287050937 \cdot 10^{139}:\\ \;\;\;\;\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)} \cdot \left({k}^{m} \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{a}{k}, \frac{e^{\log k \cdot m}}{k}, \left(\frac{a}{{k}^{2}} \cdot e^{\log k \cdot m}\right) \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 1.097649070943432541316308677194287050937 \cdot 10^{139}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)} \cdot \left({k}^{m} \cdot a\right)\\

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

\end{array}
double f(double a, double k, double m) {
        double r204926 = a;
        double r204927 = k;
        double r204928 = m;
        double r204929 = pow(r204927, r204928);
        double r204930 = r204926 * r204929;
        double r204931 = 1.0;
        double r204932 = 10.0;
        double r204933 = r204932 * r204927;
        double r204934 = r204931 + r204933;
        double r204935 = r204927 * r204927;
        double r204936 = r204934 + r204935;
        double r204937 = r204930 / r204936;
        return r204937;
}

double f(double a, double k, double m) {
        double r204938 = k;
        double r204939 = 1.0976490709434325e+139;
        bool r204940 = r204938 <= r204939;
        double r204941 = 1.0;
        double r204942 = 10.0;
        double r204943 = r204942 + r204938;
        double r204944 = 1.0;
        double r204945 = fma(r204938, r204943, r204944);
        double r204946 = r204941 / r204945;
        double r204947 = m;
        double r204948 = pow(r204938, r204947);
        double r204949 = a;
        double r204950 = r204948 * r204949;
        double r204951 = r204946 * r204950;
        double r204952 = r204949 / r204938;
        double r204953 = log(r204938);
        double r204954 = r204953 * r204947;
        double r204955 = exp(r204954);
        double r204956 = r204955 / r204938;
        double r204957 = 2.0;
        double r204958 = pow(r204938, r204957);
        double r204959 = r204949 / r204958;
        double r204960 = r204959 * r204955;
        double r204961 = 99.0;
        double r204962 = r204961 / r204958;
        double r204963 = r204942 / r204938;
        double r204964 = r204962 - r204963;
        double r204965 = r204960 * r204964;
        double r204966 = fma(r204952, r204956, r204965);
        double r204967 = r204940 ? r204951 : r204966;
        return r204967;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.0976490709434325e+139

    1. Initial program 0.1

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

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

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

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

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

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

    if 1.0976490709434325e+139 < k

    1. Initial program 9.3

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

      \[\leadsto \color{blue}{\frac{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}}\]
    3. Taylor expanded around inf 9.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}}}\]
    4. Simplified0.1

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

Reproduce

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