\frac{c0}{2 \cdot w} \cdot \left(\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} + \sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} - M \cdot M}\right)\begin{array}{l}
\mathbf{if}\;M \cdot M \leq 0:\\
\;\;\;\;0\\
\mathbf{elif}\;M \cdot M \leq 7.480441789786484 \cdot 10^{+257}:\\
\;\;\;\;\frac{\left(M \cdot M\right) \cdot \frac{D \cdot \left(D \cdot h\right)}{d}}{d} \cdot 0.25\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \left(\frac{M \cdot \left(h \cdot \left(D \cdot D\right)\right)}{d} \cdot \frac{M}{d}\right)\\
\end{array}(FPCore (c0 w h D d M)
:precision binary64
(*
(/ c0 (* 2.0 w))
(+
(/ (* c0 (* d d)) (* (* w h) (* D D)))
(sqrt
(-
(*
(/ (* c0 (* d d)) (* (* w h) (* D D)))
(/ (* c0 (* d d)) (* (* w h) (* D D))))
(* M M))))))(FPCore (c0 w h D d M)
:precision binary64
(if (<= (* M M) 0.0)
0.0
(if (<= (* M M) 7.480441789786484e+257)
(* (/ (* (* M M) (/ (* D (* D h)) d)) d) 0.25)
(* 0.25 (* (/ (* M (* h (* D D))) d) (/ M d))))))double code(double c0, double w, double h, double D, double d, double M) {
return (c0 / (2.0 * w)) * (((c0 * (d * d)) / ((w * h) * (D * D))) + sqrt((((c0 * (d * d)) / ((w * h) * (D * D))) * ((c0 * (d * d)) / ((w * h) * (D * D)))) - (M * M)));
}
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((M * M) <= 0.0) {
tmp = 0.0;
} else if ((M * M) <= 7.480441789786484e+257) {
tmp = (((M * M) * ((D * (D * h)) / d)) / d) * 0.25;
} else {
tmp = 0.25 * (((M * (h * (D * D))) / d) * (M / d));
}
return tmp;
}











Bits error versus c0











Bits error versus w











Bits error versus h











Bits error versus D











Bits error versus d











Bits error versus M
Results
| Alternative 1 | |
|---|---|
| Error | 25.1 |
| Cost | 1858 |
| Alternative 2 | |
|---|---|
| Error | 26.0 |
| Cost | 1858 |
| Alternative 3 | |
|---|---|
| Error | 28.0 |
| Cost | 1288 |
| Alternative 4 | |
|---|---|
| Error | 28.3 |
| Cost | 1858 |
| Alternative 5 | |
|---|---|
| Error | 28.9 |
| Cost | 1858 |
| Alternative 6 | |
|---|---|
| Error | 30.6 |
| Cost | 1602 |
| Alternative 7 | |
|---|---|
| Error | 31.4 |
| Cost | 64 |
| Alternative 8 | |
|---|---|
| Error | 61.9 |
| Cost | 64 |

if (*.f64 M M) < 0.0Initial program 22.6
Simplified22.6
if 0.0 < (*.f64 M M) < 7.4804417897864842e257Initial program 60.7
Taylor expanded around -inf 37.3
Simplified37.3
Taylor expanded around 0 29.4
Simplified29.4
rmApplied associate-*r*_binary64_172326.8
rmApplied associate-/r*_binary64_172724.2
Simplified23.1
Simplified23.1
if 7.4804417897864842e257 < (*.f64 M M) Initial program 64.0
Taylor expanded around -inf 59.9
Simplified59.9
Taylor expanded around 0 59.2
Simplified59.2
rmApplied associate-*r*_binary64_172343.5
Simplified43.5
rmApplied times-frac_binary64_178933.9
Simplified33.9
Final simplification24.8
herbie shell --seed 2021042
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
:precision binary64
(* (/ c0 (* 2.0 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M))))))