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

\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 r327555 = a;
        double r327556 = k;
        double r327557 = m;
        double r327558 = pow(r327556, r327557);
        double r327559 = r327555 * r327558;
        double r327560 = 1.0;
        double r327561 = 10.0;
        double r327562 = r327561 * r327556;
        double r327563 = r327560 + r327562;
        double r327564 = r327556 * r327556;
        double r327565 = r327563 + r327564;
        double r327566 = r327559 / r327565;
        return r327566;
}

double f(double a, double k, double m) {
        double r327567 = k;
        double r327568 = 105088950.88671507;
        bool r327569 = r327567 <= r327568;
        double r327570 = m;
        double r327571 = pow(r327567, r327570);
        double r327572 = cbrt(r327571);
        double r327573 = r327572 * r327572;
        double r327574 = 10.0;
        double r327575 = 1.0;
        double r327576 = fma(r327567, r327574, r327575);
        double r327577 = fma(r327567, r327567, r327576);
        double r327578 = a;
        double r327579 = r327577 / r327578;
        double r327580 = cbrt(r327579);
        double r327581 = r327580 * r327580;
        double r327582 = r327573 / r327581;
        double r327583 = r327572 / r327580;
        double r327584 = r327582 * r327583;
        double r327585 = -1.0;
        double r327586 = 1.0;
        double r327587 = r327586 / r327567;
        double r327588 = log(r327587);
        double r327589 = r327570 * r327588;
        double r327590 = r327585 * r327589;
        double r327591 = exp(r327590);
        double r327592 = r327591 / r327567;
        double r327593 = r327578 / r327567;
        double r327594 = 99.0;
        double r327595 = r327578 * r327591;
        double r327596 = 4.0;
        double r327597 = pow(r327567, r327596);
        double r327598 = r327595 / r327597;
        double r327599 = r327594 * r327598;
        double r327600 = 3.0;
        double r327601 = pow(r327567, r327600);
        double r327602 = r327595 / r327601;
        double r327603 = r327574 * r327602;
        double r327604 = r327599 - r327603;
        double r327605 = fma(r327592, r327593, r327604);
        double r327606 = r327569 ? r327584 : r327605;
        return r327606;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

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

    1. Initial program 0.1

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

      \[\leadsto \color{blue}{\frac{{k}^{m}}{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt0.6

      \[\leadsto \frac{{k}^{m}}{\color{blue}{\left(\sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}\right) \cdot \sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}}}\]
    5. Applied add-cube-cbrt0.6

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{{k}^{m}} \cdot \sqrt[3]{{k}^{m}}\right) \cdot \sqrt[3]{{k}^{m}}}}{\left(\sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}\right) \cdot \sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}}\]
    6. Applied times-frac0.6

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

    if 105088950.88671507 < k

    1. Initial program 5.2

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

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

      \[\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}}}\]
    4. 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.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 105088950.88671506941318511962890625:\\ \;\;\;\;\frac{\sqrt[3]{{k}^{m}} \cdot \sqrt[3]{{k}^{m}}}{\sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}} \cdot \frac{\sqrt[3]{{k}^{m}}}{\sqrt[3]{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}}\\ \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 2020002 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))