\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}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) = -\infty:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\frac{2}{\left(D \cdot D\right) \cdot w} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{h}}{2}\\
\mathbf{elif}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 202489052.4885175:\\
\;\;\;\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M\right)}}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r2898511 = c0;
double r2898512 = 2.0;
double r2898513 = w;
double r2898514 = r2898512 * r2898513;
double r2898515 = r2898511 / r2898514;
double r2898516 = d;
double r2898517 = r2898516 * r2898516;
double r2898518 = r2898511 * r2898517;
double r2898519 = h;
double r2898520 = r2898513 * r2898519;
double r2898521 = D;
double r2898522 = r2898521 * r2898521;
double r2898523 = r2898520 * r2898522;
double r2898524 = r2898518 / r2898523;
double r2898525 = r2898524 * r2898524;
double r2898526 = M;
double r2898527 = r2898526 * r2898526;
double r2898528 = r2898525 - r2898527;
double r2898529 = sqrt(r2898528);
double r2898530 = r2898524 + r2898529;
double r2898531 = r2898515 * r2898530;
return r2898531;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r2898532 = c0;
double r2898533 = w;
double r2898534 = 2.0;
double r2898535 = r2898533 * r2898534;
double r2898536 = r2898532 / r2898535;
double r2898537 = d;
double r2898538 = r2898537 * r2898537;
double r2898539 = r2898532 * r2898538;
double r2898540 = D;
double r2898541 = r2898540 * r2898540;
double r2898542 = h;
double r2898543 = r2898533 * r2898542;
double r2898544 = r2898541 * r2898543;
double r2898545 = r2898539 / r2898544;
double r2898546 = r2898545 * r2898545;
double r2898547 = M;
double r2898548 = r2898547 * r2898547;
double r2898549 = r2898546 - r2898548;
double r2898550 = sqrt(r2898549);
double r2898551 = r2898550 + r2898545;
double r2898552 = r2898536 * r2898551;
double r2898553 = -inf.0;
bool r2898554 = r2898552 <= r2898553;
double r2898555 = r2898532 / r2898533;
double r2898556 = r2898541 * r2898533;
double r2898557 = r2898534 / r2898556;
double r2898558 = r2898539 / r2898542;
double r2898559 = r2898557 * r2898558;
double r2898560 = r2898559 / r2898534;
double r2898561 = r2898555 * r2898560;
double r2898562 = 202489052.4885175;
bool r2898563 = r2898552 <= r2898562;
double r2898564 = r2898537 / r2898540;
double r2898565 = r2898564 * r2898564;
double r2898566 = r2898565 / r2898542;
double r2898567 = r2898566 * r2898555;
double r2898568 = r2898567 + r2898547;
double r2898569 = r2898567 - r2898547;
double r2898570 = r2898568 * r2898569;
double r2898571 = sqrt(r2898570);
double r2898572 = r2898567 + r2898571;
double r2898573 = r2898572 / r2898534;
double r2898574 = r2898555 * r2898573;
double r2898575 = r2898563 ? r2898552 : r2898574;
double r2898576 = r2898554 ? r2898561 : r2898575;
return r2898576;
}



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
if (* (/ c0 (* 2 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))))) < -inf.0Initial program 61.2
Simplified54.9
Taylor expanded around 0 54.1
Simplified52.9
if -inf.0 < (* (/ c0 (* 2 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))))) < 202489052.4885175Initial program 23.3
if 202489052.4885175 < (* (/ c0 (* 2 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))))) Initial program 62.1
Simplified55.4
Final simplification52.0
herbie shell --seed 2019155
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
(* (/ c0 (* 2 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))))))