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

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

\end{array}
double code(double a, double k, double m) {
	return ((a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k)));
}
double code(double a, double k, double m) {
	double VAR;
	if ((k <= 1.7244579000634613e+78)) {
		VAR = ((a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k)));
	} else {
		VAR = fma((((a / pow(k, 3.0)) * 1.0) / pow((1.0 / k), m)), ((99.0 / k) - 10.0), (((a / k) * pow((1.0 / k), (-1.0 * m))) / k));
	}
	return VAR;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if k < 1.7244579000634613e+78

    1. Initial program 0.1

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

    if 1.7244579000634613e+78 < k

    1. Initial program 7.0

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

      \[\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{\frac{a}{{k}^{3}} \cdot 1}{{\left(\frac{1}{k}\right)}^{m}}, \frac{99}{k} - 10, \frac{\frac{a}{k} \cdot {\left(\frac{1}{k}\right)}^{\left(-1 \cdot m\right)}}{k}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

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

Reproduce

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