Average Error: 2.1 → 0.1
Time: 6.6s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 4.5162262000245942 \cdot 10^{147}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\ \end{array}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \le 4.5162262000245942 \cdot 10^{147}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\

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

\end{array}
double f(double a, double k, double m) {
        double r424017 = a;
        double r424018 = k;
        double r424019 = m;
        double r424020 = pow(r424018, r424019);
        double r424021 = r424017 * r424020;
        double r424022 = 1.0;
        double r424023 = 10.0;
        double r424024 = r424023 * r424018;
        double r424025 = r424022 + r424024;
        double r424026 = r424018 * r424018;
        double r424027 = r424025 + r424026;
        double r424028 = r424021 / r424027;
        return r424028;
}

double f(double a, double k, double m) {
        double r424029 = k;
        double r424030 = 4.516226200024594e+147;
        bool r424031 = r424029 <= r424030;
        double r424032 = a;
        double r424033 = m;
        double r424034 = pow(r424029, r424033);
        double r424035 = r424032 * r424034;
        double r424036 = 1.0;
        double r424037 = 10.0;
        double r424038 = r424037 * r424029;
        double r424039 = r424036 + r424038;
        double r424040 = r424029 * r424029;
        double r424041 = r424039 + r424040;
        double r424042 = r424035 / r424041;
        double r424043 = -1.0;
        double r424044 = 1.0;
        double r424045 = r424044 / r424029;
        double r424046 = log(r424045);
        double r424047 = r424033 * r424046;
        double r424048 = r424043 * r424047;
        double r424049 = exp(r424048);
        double r424050 = r424049 / r424029;
        double r424051 = r424032 / r424029;
        double r424052 = 99.0;
        double r424053 = r424032 * r424049;
        double r424054 = 4.0;
        double r424055 = pow(r424029, r424054);
        double r424056 = r424053 / r424055;
        double r424057 = r424052 * r424056;
        double r424058 = 3.0;
        double r424059 = pow(r424029, r424058);
        double r424060 = r424053 / r424059;
        double r424061 = r424037 * r424060;
        double r424062 = r424057 - r424061;
        double r424063 = fma(r424050, r424051, r424062);
        double r424064 = r424031 ? r424042 : r424063;
        return r424064;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 4.516226200024594e+147

    1. Initial program 0.1

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

    if 4.516226200024594e+147 < k

    1. Initial program 9.9

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Taylor expanded around inf 9.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}}}\]
    3. Simplified0.1

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

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

Reproduce

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