Average Error: 2.0 → 0.1
Time: 1.8m
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 111796600679780.56:\\ \;\;\;\;\frac{\frac{a \cdot {k}^{m}}{\sqrt{k \cdot k + \left(k \cdot 10 + 1\right)}}}{\sqrt{\sqrt[3]{\left(\left(k \cdot k + \left(k \cdot 10 + 1\right)\right) \cdot \left(k \cdot k + \left(k \cdot 10 + 1\right)\right)\right) \cdot \left(k \cdot k + \left(k \cdot 10 + 1\right)\right)}}}\\ \mathbf{else}:\\ \;\;\;\;(\left(\frac{99}{k \cdot k}\right) \cdot \left(\frac{e^{m \cdot \log k} \cdot \frac{a}{k}}{k}\right) + \left(-10 \cdot \frac{\frac{e^{m \cdot \log k} \cdot \frac{a}{k}}{k}}{k}\right))_* + \frac{e^{m \cdot \log k} \cdot \frac{a}{k}}{k}\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 111796600679780.56:\\
\;\;\;\;\frac{\frac{a \cdot {k}^{m}}{\sqrt{k \cdot k + \left(k \cdot 10 + 1\right)}}}{\sqrt{\sqrt[3]{\left(\left(k \cdot k + \left(k \cdot 10 + 1\right)\right) \cdot \left(k \cdot k + \left(k \cdot 10 + 1\right)\right)\right) \cdot \left(k \cdot k + \left(k \cdot 10 + 1\right)\right)}}}\\

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

\end{array}
double f(double a, double k, double m) {
        double r33304980 = a;
        double r33304981 = k;
        double r33304982 = m;
        double r33304983 = pow(r33304981, r33304982);
        double r33304984 = r33304980 * r33304983;
        double r33304985 = 1.0;
        double r33304986 = 10.0;
        double r33304987 = r33304986 * r33304981;
        double r33304988 = r33304985 + r33304987;
        double r33304989 = r33304981 * r33304981;
        double r33304990 = r33304988 + r33304989;
        double r33304991 = r33304984 / r33304990;
        return r33304991;
}

double f(double a, double k, double m) {
        double r33304992 = k;
        double r33304993 = 111796600679780.56;
        bool r33304994 = r33304992 <= r33304993;
        double r33304995 = a;
        double r33304996 = m;
        double r33304997 = pow(r33304992, r33304996);
        double r33304998 = r33304995 * r33304997;
        double r33304999 = r33304992 * r33304992;
        double r33305000 = 10.0;
        double r33305001 = r33304992 * r33305000;
        double r33305002 = 1.0;
        double r33305003 = r33305001 + r33305002;
        double r33305004 = r33304999 + r33305003;
        double r33305005 = sqrt(r33305004);
        double r33305006 = r33304998 / r33305005;
        double r33305007 = r33305004 * r33305004;
        double r33305008 = r33305007 * r33305004;
        double r33305009 = cbrt(r33305008);
        double r33305010 = sqrt(r33305009);
        double r33305011 = r33305006 / r33305010;
        double r33305012 = 99.0;
        double r33305013 = r33305012 / r33304999;
        double r33305014 = log(r33304992);
        double r33305015 = r33304996 * r33305014;
        double r33305016 = exp(r33305015);
        double r33305017 = r33304995 / r33304992;
        double r33305018 = r33305016 * r33305017;
        double r33305019 = r33305018 / r33304992;
        double r33305020 = -10.0;
        double r33305021 = r33305019 / r33304992;
        double r33305022 = r33305020 * r33305021;
        double r33305023 = fma(r33305013, r33305019, r33305022);
        double r33305024 = r33305023 + r33305019;
        double r33305025 = r33304994 ? r33305011 : r33305024;
        return r33305025;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 111796600679780.56

    1. Initial program 0.1

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

      \[\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*0.2

      \[\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. Using strategy rm
    6. Applied add-cbrt-cube0.2

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

    if 111796600679780.56 < k

    1. Initial program 5.5

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around -inf 62.9

      \[\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}}}\]
    3. Simplified0.1

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

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

Reproduce

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