Average Error: 1.9 → 0.1
Time: 18.3s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 3.858753298023434253616751573926542598119 \cdot 10^{133}:\\ \;\;\;\;\left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{\log k \cdot m}}{k}, \frac{a}{k}, \frac{\frac{a}{k} \cdot e^{\log k \cdot m}}{k} \cdot \left(\frac{99}{{k}^{2}} - \frac{10}{k}\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 3.858753298023434253616751573926542598119 \cdot 10^{133}:\\
\;\;\;\;\left(a \cdot {k}^{m}\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}\right)\right)\\

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

\end{array}
double f(double a, double k, double m) {
        double r233009 = a;
        double r233010 = k;
        double r233011 = m;
        double r233012 = pow(r233010, r233011);
        double r233013 = r233009 * r233012;
        double r233014 = 1.0;
        double r233015 = 10.0;
        double r233016 = r233015 * r233010;
        double r233017 = r233014 + r233016;
        double r233018 = r233010 * r233010;
        double r233019 = r233017 + r233018;
        double r233020 = r233013 / r233019;
        return r233020;
}

double f(double a, double k, double m) {
        double r233021 = k;
        double r233022 = 3.8587532980234343e+133;
        bool r233023 = r233021 <= r233022;
        double r233024 = a;
        double r233025 = m;
        double r233026 = pow(r233021, r233025);
        double r233027 = r233024 * r233026;
        double r233028 = 1.0;
        double r233029 = 10.0;
        double r233030 = r233029 + r233021;
        double r233031 = 1.0;
        double r233032 = fma(r233021, r233030, r233031);
        double r233033 = r233028 / r233032;
        double r233034 = expm1(r233033);
        double r233035 = log1p(r233034);
        double r233036 = r233027 * r233035;
        double r233037 = log(r233021);
        double r233038 = r233037 * r233025;
        double r233039 = exp(r233038);
        double r233040 = r233039 / r233021;
        double r233041 = r233024 / r233021;
        double r233042 = r233041 * r233039;
        double r233043 = r233042 / r233021;
        double r233044 = 99.0;
        double r233045 = 2.0;
        double r233046 = pow(r233021, r233045);
        double r233047 = r233044 / r233046;
        double r233048 = r233029 / r233021;
        double r233049 = r233047 - r233048;
        double r233050 = r233043 * r233049;
        double r233051 = fma(r233040, r233041, r233050);
        double r233052 = r233023 ? r233036 : r233051;
        return r233052;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 3.8587532980234343e+133

    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 div-inv0.1

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

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}}\]
    5. Using strategy rm
    6. Applied log1p-expm1-u0.1

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

    if 3.8587532980234343e+133 < k

    1. Initial program 8.3

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

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

      \[\leadsto \left(a \cdot {k}^{m}\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)}}\]
    5. Using strategy rm
    6. Applied log1p-expm1-u8.3

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

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

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

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

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

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

Reproduce

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