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

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

\end{array}
double f(double a, double k, double m) {
        double r360135 = a;
        double r360136 = k;
        double r360137 = m;
        double r360138 = pow(r360136, r360137);
        double r360139 = r360135 * r360138;
        double r360140 = 1.0;
        double r360141 = 10.0;
        double r360142 = r360141 * r360136;
        double r360143 = r360140 + r360142;
        double r360144 = r360136 * r360136;
        double r360145 = r360143 + r360144;
        double r360146 = r360139 / r360145;
        return r360146;
}

double f(double a, double k, double m) {
        double r360147 = k;
        double r360148 = 3.7123001813996137e+111;
        bool r360149 = r360147 <= r360148;
        double r360150 = a;
        double r360151 = 10.0;
        double r360152 = r360151 + r360147;
        double r360153 = 1.0;
        double r360154 = fma(r360147, r360152, r360153);
        double r360155 = m;
        double r360156 = pow(r360147, r360155);
        double r360157 = r360154 / r360156;
        double r360158 = r360150 / r360157;
        double r360159 = exp(r360155);
        double r360160 = log(r360147);
        double r360161 = pow(r360159, r360160);
        double r360162 = r360161 / r360147;
        double r360163 = r360150 / r360147;
        double r360164 = 2.0;
        double r360165 = pow(r360147, r360164);
        double r360166 = r360165 / r360150;
        double r360167 = r360161 / r360166;
        double r360168 = 99.0;
        double r360169 = r360168 / r360165;
        double r360170 = r360151 / r360147;
        double r360171 = r360169 - r360170;
        double r360172 = r360167 * r360171;
        double r360173 = fma(r360162, r360163, r360172);
        double r360174 = r360149 ? r360158 : r360173;
        return r360174;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.7123001813996137e+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{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}}\]

    if 3.7123001813996137e+111 < k

    1. Initial program 8.3

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

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

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

Reproduce

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