\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \leq 2.350163294637587 \cdot 10^{+136}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{1 + k \cdot \left(k + 10\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{{k}^{m} \cdot \frac{a}{k}}{k} - 10 \cdot \frac{a \cdot {k}^{m}}{{k}^{3}}\\
\end{array}(FPCore (a k m) :precision binary64 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
(FPCore (a k m) :precision binary64 (if (<= k 2.350163294637587e+136) (/ (* a (pow k m)) (+ 1.0 (* k (+ k 10.0)))) (- (/ (* (pow k m) (/ a k)) k) (* 10.0 (/ (* a (pow k m)) (pow k 3.0))))))
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 tmp;
if (k <= 2.350163294637587e+136) {
tmp = (a * pow(k, m)) / (1.0 + (k * (k + 10.0)));
} else {
tmp = ((pow(k, m) * (a / k)) / k) - (10.0 * ((a * pow(k, m)) / pow(k, 3.0)));
}
return tmp;
}












Bits error versus a












Bits error versus k












Bits error versus m
Results
| Alternative 1 | |
|---|---|
| Error | 2.2 |
| Cost | 7168 |
| Alternative 2 | |
|---|---|
| Error | 3.0 |
| Cost | 7040 |
| Alternative 3 | |
|---|---|
| Error | 2.9 |
| Cost | 6984 |
| Alternative 4 | |
|---|---|
| Error | 3.3 |
| Cost | 1218 |
| Alternative 5 | |
|---|---|
| Error | 4.0 |
| Cost | 1090 |
| Alternative 6 | |
|---|---|
| Error | 16.8 |
| Cost | 1925 |
| Alternative 7 | |
|---|---|
| Error | 16.8 |
| Cost | 1925 |
| Alternative 8 | |
|---|---|
| Error | 18.0 |
| Cost | 706 |
| Alternative 9 | |
|---|---|
| Error | 46.5 |
| Cost | 64 |

if k < 2.3501632946375871e136Initial program 0.1
Simplified0.0
Simplified0.0
if 2.3501632946375871e136 < k Initial program 10.3
Taylor expanded around inf 10.3
Simplified10.3
rmApplied associate-/r*_binary64_24090.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2021014
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))