Average Error: 2.0 → 0.1
Time: 1.4m
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 5.4112590007686036 \cdot 10^{+39}:\\ \;\;\;\;\frac{\left(\sqrt{{k}^{m}} \cdot a\right) \cdot \sqrt{{k}^{m}}}{(k \cdot \left(k + 10\right) + 1)_*}\\ \mathbf{else}:\\ \;\;\;\;(\left(\frac{\frac{99}{k}}{k}\right) \cdot \left(\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right) + \left(-10 \cdot \frac{\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}}{k} + \frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right))_*\\ \end{array}\]
double f(double a, double k, double m) {
        double r54090628 = a;
        double r54090629 = k;
        double r54090630 = m;
        double r54090631 = pow(r54090629, r54090630);
        double r54090632 = r54090628 * r54090631;
        double r54090633 = 1.0;
        double r54090634 = 10.0;
        double r54090635 = r54090634 * r54090629;
        double r54090636 = r54090633 + r54090635;
        double r54090637 = r54090629 * r54090629;
        double r54090638 = r54090636 + r54090637;
        double r54090639 = r54090632 / r54090638;
        return r54090639;
}

double f(double a, double k, double m) {
        double r54090640 = k;
        double r54090641 = 5.4112590007686036e+39;
        bool r54090642 = r54090640 <= r54090641;
        double r54090643 = m;
        double r54090644 = pow(r54090640, r54090643);
        double r54090645 = sqrt(r54090644);
        double r54090646 = a;
        double r54090647 = r54090645 * r54090646;
        double r54090648 = r54090647 * r54090645;
        double r54090649 = 10.0;
        double r54090650 = r54090640 + r54090649;
        double r54090651 = 1.0;
        double r54090652 = fma(r54090640, r54090650, r54090651);
        double r54090653 = r54090648 / r54090652;
        double r54090654 = 99.0;
        double r54090655 = r54090654 / r54090640;
        double r54090656 = r54090655 / r54090640;
        double r54090657 = log(r54090640);
        double r54090658 = r54090643 * r54090657;
        double r54090659 = exp(r54090658);
        double r54090660 = r54090640 / r54090646;
        double r54090661 = r54090659 / r54090660;
        double r54090662 = r54090661 / r54090640;
        double r54090663 = -10.0;
        double r54090664 = r54090662 / r54090640;
        double r54090665 = r54090663 * r54090664;
        double r54090666 = r54090665 + r54090662;
        double r54090667 = fma(r54090656, r54090662, r54090666);
        double r54090668 = r54090642 ? r54090653 : r54090667;
        return r54090668;
}

\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 5.4112590007686036 \cdot 10^{+39}:\\
\;\;\;\;\frac{\left(\sqrt{{k}^{m}} \cdot a\right) \cdot \sqrt{{k}^{m}}}{(k \cdot \left(k + 10\right) + 1)_*}\\

\mathbf{else}:\\
\;\;\;\;(\left(\frac{\frac{99}{k}}{k}\right) \cdot \left(\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right) + \left(-10 \cdot \frac{\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}}{k} + \frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right))_*\\

\end{array}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 5.4112590007686036e+39

    1. Initial program 0.0

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

      \[\leadsto \color{blue}{\frac{{k}^{m} \cdot a}{(\left(k + 10\right) \cdot k + 1)_*}}\]
    3. Taylor expanded around inf 0.0

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

      \[\leadsto \frac{{k}^{m} \cdot a}{\color{blue}{(k \cdot \left(k + 10\right) + 1)_*}}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt0.0

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

      \[\leadsto \frac{\color{blue}{\sqrt{{k}^{m}} \cdot \left(\sqrt{{k}^{m}} \cdot a\right)}}{(k \cdot \left(k + 10\right) + 1)_*}\]

    if 5.4112590007686036e+39 < k

    1. Initial program 5.8

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

      \[\leadsto \color{blue}{\frac{{k}^{m} \cdot a}{(\left(k + 10\right) \cdot k + 1)_*}}\]
    3. Taylor expanded around inf 5.8

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

      \[\leadsto \frac{{k}^{m} \cdot a}{\color{blue}{(k \cdot \left(k + 10\right) + 1)_*}}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt5.8

      \[\leadsto \frac{\color{blue}{\left(\sqrt{{k}^{m}} \cdot \sqrt{{k}^{m}}\right)} \cdot a}{(k \cdot \left(k + 10\right) + 1)_*}\]
    7. Applied associate-*l*5.8

      \[\leadsto \frac{\color{blue}{\sqrt{{k}^{m}} \cdot \left(\sqrt{{k}^{m}} \cdot a\right)}}{(k \cdot \left(k + 10\right) + 1)_*}\]
    8. Taylor expanded around inf 5.8

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

      \[\leadsto \color{blue}{(\left(\frac{\frac{99}{k}}{k}\right) \cdot \left(\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right) + \left(\frac{\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}}{k} \cdot -10 + \frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right))_*}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 5.4112590007686036 \cdot 10^{+39}:\\ \;\;\;\;\frac{\left(\sqrt{{k}^{m}} \cdot a\right) \cdot \sqrt{{k}^{m}}}{(k \cdot \left(k + 10\right) + 1)_*}\\ \mathbf{else}:\\ \;\;\;\;(\left(\frac{\frac{99}{k}}{k}\right) \cdot \left(\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right) + \left(-10 \cdot \frac{\frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}}{k} + \frac{\frac{e^{m \cdot \log k}}{\frac{k}{a}}}{k}\right))_*\\ \end{array}\]

Reproduce

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