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

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

\end{array}
double f(double a, double k, double m) {
        double r7165772 = a;
        double r7165773 = k;
        double r7165774 = m;
        double r7165775 = pow(r7165773, r7165774);
        double r7165776 = r7165772 * r7165775;
        double r7165777 = 1.0;
        double r7165778 = 10.0;
        double r7165779 = r7165778 * r7165773;
        double r7165780 = r7165777 + r7165779;
        double r7165781 = r7165773 * r7165773;
        double r7165782 = r7165780 + r7165781;
        double r7165783 = r7165776 / r7165782;
        return r7165783;
}

double f(double a, double k, double m) {
        double r7165784 = k;
        double r7165785 = 3.765086051784335e+91;
        bool r7165786 = r7165784 <= r7165785;
        double r7165787 = m;
        double r7165788 = pow(r7165784, r7165787);
        double r7165789 = a;
        double r7165790 = r7165788 * r7165789;
        double r7165791 = 10.0;
        double r7165792 = r7165784 + r7165791;
        double r7165793 = 1.0;
        double r7165794 = fma(r7165792, r7165784, r7165793);
        double r7165795 = r7165790 / r7165794;
        double r7165796 = r7165789 / r7165784;
        double r7165797 = log(r7165784);
        double r7165798 = r7165797 * r7165787;
        double r7165799 = exp(r7165798);
        double r7165800 = r7165799 / r7165784;
        double r7165801 = 99.0;
        double r7165802 = r7165784 * r7165784;
        double r7165803 = r7165801 / r7165802;
        double r7165804 = r7165791 / r7165784;
        double r7165805 = r7165803 - r7165804;
        double r7165806 = r7165802 / r7165799;
        double r7165807 = r7165789 / r7165806;
        double r7165808 = r7165805 * r7165807;
        double r7165809 = fma(r7165796, r7165800, r7165808);
        double r7165810 = r7165786 ? r7165795 : r7165809;
        return r7165810;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.765086051784335e+91

    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{{k}^{m}}{\mathsf{fma}\left(k + 10, k, 1\right)} \cdot a}\]
    3. Using strategy rm
    4. Applied associate-*l/0.1

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

    if 3.765086051784335e+91 < k

    1. Initial program 6.9

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

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

      \[\leadsto \color{blue}{\frac{{k}^{m} \cdot a}{\mathsf{fma}\left(k + 10, k, 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}{\mathsf{fma}\left(\frac{a}{k}, \frac{e^{m \cdot \left(0 + \log k\right)}}{k}, \frac{a}{\frac{k \cdot k}{e^{m \cdot \left(0 + \log k\right)}}} \cdot \left(\frac{99}{k \cdot k} - \frac{10}{k}\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

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

Reproduce

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