\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}\;d \le -7.401275573314534 \cdot 10^{-214}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 9.213056584041128 \cdot 10^{-145}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{e^{\log \left(\frac{\frac{d}{D}}{\frac{h}{\frac{d}{D}}} \cdot \frac{c0}{w} + \sqrt{\frac{\frac{d}{D}}{\frac{h}{\frac{d}{D}}} \cdot \frac{c0}{w} + M} \cdot \sqrt{\frac{\frac{d}{D}}{\frac{h}{\frac{d}{D}}} \cdot \frac{c0}{w} - M}\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r2700721 = c0;
double r2700722 = 2.0;
double r2700723 = w;
double r2700724 = r2700722 * r2700723;
double r2700725 = r2700721 / r2700724;
double r2700726 = d;
double r2700727 = r2700726 * r2700726;
double r2700728 = r2700721 * r2700727;
double r2700729 = h;
double r2700730 = r2700723 * r2700729;
double r2700731 = D;
double r2700732 = r2700731 * r2700731;
double r2700733 = r2700730 * r2700732;
double r2700734 = r2700728 / r2700733;
double r2700735 = r2700734 * r2700734;
double r2700736 = M;
double r2700737 = r2700736 * r2700736;
double r2700738 = r2700735 - r2700737;
double r2700739 = sqrt(r2700738);
double r2700740 = r2700734 + r2700739;
double r2700741 = r2700725 * r2700740;
return r2700741;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r2700742 = d;
double r2700743 = -7.401275573314534e-214;
bool r2700744 = r2700742 <= r2700743;
double r2700745 = 0.0;
double r2700746 = 9.213056584041128e-145;
bool r2700747 = r2700742 <= r2700746;
double r2700748 = c0;
double r2700749 = w;
double r2700750 = r2700748 / r2700749;
double r2700751 = D;
double r2700752 = r2700742 / r2700751;
double r2700753 = h;
double r2700754 = r2700753 / r2700752;
double r2700755 = r2700752 / r2700754;
double r2700756 = r2700755 * r2700750;
double r2700757 = M;
double r2700758 = r2700756 + r2700757;
double r2700759 = sqrt(r2700758);
double r2700760 = r2700756 - r2700757;
double r2700761 = sqrt(r2700760);
double r2700762 = r2700759 * r2700761;
double r2700763 = r2700756 + r2700762;
double r2700764 = log(r2700763);
double r2700765 = exp(r2700764);
double r2700766 = 2.0;
double r2700767 = r2700765 / r2700766;
double r2700768 = r2700750 * r2700767;
double r2700769 = r2700747 ? r2700768 : r2700745;
double r2700770 = r2700744 ? r2700745 : r2700769;
return r2700770;
}



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 d < -7.401275573314534e-214 or 9.213056584041128e-145 < d Initial program 58.1
Simplified53.8
rmApplied associate-*l/54.7
rmApplied add-exp-log55.4
Simplified52.9
Taylor expanded around inf 35.1
Taylor expanded around 0 33.3
if -7.401275573314534e-214 < d < 9.213056584041128e-145Initial program 61.6
Simplified43.4
rmApplied associate-*l/44.9
rmApplied add-exp-log46.1
Simplified43.2
rmApplied difference-of-squares43.2
Applied sqrt-prod46.3
Final simplification34.5
herbie shell --seed 2019154
(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))))))