Average Error: 2.0 → 0.1
Time: 20.0s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 1.442302470468942821043172495313077911614 \cdot 10^{138}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{a}{k}, \frac{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}{k}, \mathsf{fma}\left(99, \frac{{\left(\frac{1}{k}\right)}^{\left(-m\right)}}{\frac{{k}^{4}}{a}}, \left(-10\right) \cdot \left(\frac{a}{{k}^{3}} \cdot {\left(\frac{1}{k}\right)}^{\left(-m\right)}\right)\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 1.442302470468942821043172495313077911614 \cdot 10^{138}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\

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

\end{array}
double f(double a, double k, double m) {
        double r206998 = a;
        double r206999 = k;
        double r207000 = m;
        double r207001 = pow(r206999, r207000);
        double r207002 = r206998 * r207001;
        double r207003 = 1.0;
        double r207004 = 10.0;
        double r207005 = r207004 * r206999;
        double r207006 = r207003 + r207005;
        double r207007 = r206999 * r206999;
        double r207008 = r207006 + r207007;
        double r207009 = r207002 / r207008;
        return r207009;
}

double f(double a, double k, double m) {
        double r207010 = k;
        double r207011 = 1.4423024704689428e+138;
        bool r207012 = r207010 <= r207011;
        double r207013 = a;
        double r207014 = m;
        double r207015 = pow(r207010, r207014);
        double r207016 = r207013 * r207015;
        double r207017 = 1.0;
        double r207018 = 10.0;
        double r207019 = r207018 * r207010;
        double r207020 = r207017 + r207019;
        double r207021 = r207010 * r207010;
        double r207022 = r207020 + r207021;
        double r207023 = r207016 / r207022;
        double r207024 = r207013 / r207010;
        double r207025 = 1.0;
        double r207026 = r207025 / r207010;
        double r207027 = -r207014;
        double r207028 = pow(r207026, r207027);
        double r207029 = r207028 / r207010;
        double r207030 = 99.0;
        double r207031 = 4.0;
        double r207032 = pow(r207010, r207031);
        double r207033 = r207032 / r207013;
        double r207034 = r207028 / r207033;
        double r207035 = -r207018;
        double r207036 = 3.0;
        double r207037 = pow(r207010, r207036);
        double r207038 = r207013 / r207037;
        double r207039 = r207038 * r207028;
        double r207040 = r207035 * r207039;
        double r207041 = fma(r207030, r207034, r207040);
        double r207042 = fma(r207024, r207029, r207041);
        double r207043 = r207012 ? r207023 : r207042;
        return r207043;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 1.4423024704689428e+138

    1. Initial program 0.1

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

    if 1.4423024704689428e+138 < k

    1. Initial program 8.9

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

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

      \[\leadsto \color{blue}{\frac{\frac{a \cdot {k}^{m}}{\sqrt{\left(1 + 10 \cdot k\right) + k \cdot k}}}{\sqrt{\left(1 + 10 \cdot k\right) + k \cdot k}}}\]
    5. Simplified8.9

      \[\leadsto \frac{\color{blue}{\frac{a \cdot {k}^{m}}{\sqrt{\mathsf{fma}\left(k, 10 + k, 1\right)}}}}{\sqrt{\left(1 + 10 \cdot k\right) + k \cdot k}}\]
    6. Using strategy rm
    7. Applied add-cbrt-cube11.3

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

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

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

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

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

Reproduce

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