Average Error: 2.2 → 0.0
Time: 52.4s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 27285682477325215839813632:\\ \;\;\;\;\frac{{k}^{m}}{\mathsf{fma}\left(k + 10, k, 1\right)} \cdot a\\ \mathbf{else}:\\ \;\;\;\;{k}^{m} \cdot \mathsf{fma}\left(\frac{99}{k \cdot k}, \frac{a}{k \cdot k}, \frac{\frac{a}{k}}{k} - \frac{\frac{a}{k \cdot k}}{k} \cdot 10\right)\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 27285682477325215839813632:\\
\;\;\;\;\frac{{k}^{m}}{\mathsf{fma}\left(k + 10, k, 1\right)} \cdot a\\

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

\end{array}
double f(double a, double k, double m) {
        double r8801299 = a;
        double r8801300 = k;
        double r8801301 = m;
        double r8801302 = pow(r8801300, r8801301);
        double r8801303 = r8801299 * r8801302;
        double r8801304 = 1.0;
        double r8801305 = 10.0;
        double r8801306 = r8801305 * r8801300;
        double r8801307 = r8801304 + r8801306;
        double r8801308 = r8801300 * r8801300;
        double r8801309 = r8801307 + r8801308;
        double r8801310 = r8801303 / r8801309;
        return r8801310;
}

double f(double a, double k, double m) {
        double r8801311 = k;
        double r8801312 = 2.7285682477325216e+25;
        bool r8801313 = r8801311 <= r8801312;
        double r8801314 = m;
        double r8801315 = pow(r8801311, r8801314);
        double r8801316 = 10.0;
        double r8801317 = r8801311 + r8801316;
        double r8801318 = 1.0;
        double r8801319 = fma(r8801317, r8801311, r8801318);
        double r8801320 = r8801315 / r8801319;
        double r8801321 = a;
        double r8801322 = r8801320 * r8801321;
        double r8801323 = 99.0;
        double r8801324 = r8801311 * r8801311;
        double r8801325 = r8801323 / r8801324;
        double r8801326 = r8801321 / r8801324;
        double r8801327 = r8801321 / r8801311;
        double r8801328 = r8801327 / r8801311;
        double r8801329 = r8801326 / r8801311;
        double r8801330 = r8801329 * r8801316;
        double r8801331 = r8801328 - r8801330;
        double r8801332 = fma(r8801325, r8801326, r8801331);
        double r8801333 = r8801315 * r8801332;
        double r8801334 = r8801313 ? r8801322 : r8801333;
        return r8801334;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 2.7285682477325216e+25

    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}{\mathsf{fma}\left(k, 10 + k, 1\right)} \cdot {k}^{m}}\]
    3. Using strategy rm
    4. Applied div-inv0.0

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

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

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

    if 2.7285682477325216e+25 < k

    1. Initial program 6.2

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

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

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

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

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

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

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

Reproduce

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