Average Error: 2.1 → 0.3
Time: 17.7s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;m \le -5.6188801841041832 \cdot 10^{-6} \lor \neg \left(m \le 1.1963652514745433 \cdot 10^{-19}\right):\\ \;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}}{\frac{1}{a \cdot {k}^{m}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\mathsf{fma}\left(\frac{k}{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}, \frac{10}{a}, \mathsf{fma}\left(\frac{k}{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}, \frac{k}{a}, \frac{\frac{1}{a}}{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}\right)\right)}\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;m \le -5.6188801841041832 \cdot 10^{-6} \lor \neg \left(m \le 1.1963652514745433 \cdot 10^{-19}\right):\\
\;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}}{\frac{1}{a \cdot {k}^{m}}}\\

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

\end{array}
double f(double a, double k, double m) {
        double r194065 = a;
        double r194066 = k;
        double r194067 = m;
        double r194068 = pow(r194066, r194067);
        double r194069 = r194065 * r194068;
        double r194070 = 1.0;
        double r194071 = 10.0;
        double r194072 = r194071 * r194066;
        double r194073 = r194070 + r194072;
        double r194074 = r194066 * r194066;
        double r194075 = r194073 + r194074;
        double r194076 = r194069 / r194075;
        return r194076;
}

double f(double a, double k, double m) {
        double r194077 = m;
        double r194078 = -5.618880184104183e-06;
        bool r194079 = r194077 <= r194078;
        double r194080 = 1.1963652514745433e-19;
        bool r194081 = r194077 <= r194080;
        double r194082 = !r194081;
        bool r194083 = r194079 || r194082;
        double r194084 = 1.0;
        double r194085 = k;
        double r194086 = 10.0;
        double r194087 = r194086 + r194085;
        double r194088 = 1.0;
        double r194089 = fma(r194085, r194087, r194088);
        double r194090 = r194084 / r194089;
        double r194091 = a;
        double r194092 = pow(r194085, r194077);
        double r194093 = r194091 * r194092;
        double r194094 = r194084 / r194093;
        double r194095 = r194090 / r194094;
        double r194096 = r194084 / r194085;
        double r194097 = -r194077;
        double r194098 = pow(r194096, r194097);
        double r194099 = r194085 / r194098;
        double r194100 = r194086 / r194091;
        double r194101 = r194085 / r194091;
        double r194102 = r194088 / r194091;
        double r194103 = r194102 / r194098;
        double r194104 = fma(r194099, r194101, r194103);
        double r194105 = fma(r194099, r194100, r194104);
        double r194106 = r194084 / r194105;
        double r194107 = r194083 ? r194095 : r194106;
        return r194107;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if m < -5.618880184104183e-06 or 1.1963652514745433e-19 < m

    1. Initial program 0.2

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Using strategy rm
    3. Applied clear-num0.2

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

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

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

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

    if -5.618880184104183e-06 < m < 1.1963652514745433e-19

    1. Initial program 4.0

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Using strategy rm
    3. Applied clear-num4.3

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

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

      \[\leadsto \frac{1}{\color{blue}{1 \cdot \frac{1}{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}} + \left(10 \cdot \frac{k}{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}} + \frac{{k}^{2}}{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}\right)}}\]
    6. Simplified0.5

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

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

Reproduce

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