\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}\;h \le -1.0777789780908555 \cdot 10^{-53}:\\
\;\;\;\;\frac{\frac{c0}{w} \cdot e^{\log \left(\frac{d}{D} \cdot \frac{\frac{c0}{w}}{\frac{h}{\frac{d}{D}}} + \sqrt{\left(M + \frac{d}{D} \cdot \frac{\frac{c0}{w}}{\frac{h}{\frac{d}{D}}}\right) \cdot \left(\frac{d}{D} \cdot \frac{\frac{c0}{w}}{\frac{h}{\frac{d}{D}}} - M\right)}\right)}}{2}\\
\mathbf{elif}\;h \le 1.6973391009673264 \cdot 10^{-280}:\\
\;\;\;\;\frac{\left(\frac{\left(\frac{d}{D} \cdot \frac{\frac{d}{D}}{w}\right) \cdot c0}{h} + \frac{c0}{\frac{h}{\frac{\frac{d}{D} \cdot \frac{d}{D}}{w}}}\right) \cdot \frac{c0}{w}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c0}{w} \cdot e^{\log \left(\frac{d}{D} \cdot \frac{\frac{c0}{w}}{\frac{h}{\frac{d}{D}}} + \sqrt{\left(M + \frac{d}{D} \cdot \frac{\frac{c0}{w}}{\frac{h}{\frac{d}{D}}}\right) \cdot \left(\frac{d}{D} \cdot \frac{\frac{c0}{w}}{\frac{h}{\frac{d}{D}}} - M\right)}\right)}}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r74793746 = c0;
double r74793747 = 2.0;
double r74793748 = w;
double r74793749 = r74793747 * r74793748;
double r74793750 = r74793746 / r74793749;
double r74793751 = d;
double r74793752 = r74793751 * r74793751;
double r74793753 = r74793746 * r74793752;
double r74793754 = h;
double r74793755 = r74793748 * r74793754;
double r74793756 = D;
double r74793757 = r74793756 * r74793756;
double r74793758 = r74793755 * r74793757;
double r74793759 = r74793753 / r74793758;
double r74793760 = r74793759 * r74793759;
double r74793761 = M;
double r74793762 = r74793761 * r74793761;
double r74793763 = r74793760 - r74793762;
double r74793764 = sqrt(r74793763);
double r74793765 = r74793759 + r74793764;
double r74793766 = r74793750 * r74793765;
return r74793766;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r74793767 = h;
double r74793768 = -1.0777789780908555e-53;
bool r74793769 = r74793767 <= r74793768;
double r74793770 = c0;
double r74793771 = w;
double r74793772 = r74793770 / r74793771;
double r74793773 = d;
double r74793774 = D;
double r74793775 = r74793773 / r74793774;
double r74793776 = r74793767 / r74793775;
double r74793777 = r74793772 / r74793776;
double r74793778 = r74793775 * r74793777;
double r74793779 = M;
double r74793780 = r74793779 + r74793778;
double r74793781 = r74793778 - r74793779;
double r74793782 = r74793780 * r74793781;
double r74793783 = sqrt(r74793782);
double r74793784 = r74793778 + r74793783;
double r74793785 = log(r74793784);
double r74793786 = exp(r74793785);
double r74793787 = r74793772 * r74793786;
double r74793788 = 2.0;
double r74793789 = r74793787 / r74793788;
double r74793790 = 1.6973391009673264e-280;
bool r74793791 = r74793767 <= r74793790;
double r74793792 = r74793775 / r74793771;
double r74793793 = r74793775 * r74793792;
double r74793794 = r74793793 * r74793770;
double r74793795 = r74793794 / r74793767;
double r74793796 = r74793775 * r74793775;
double r74793797 = r74793796 / r74793771;
double r74793798 = r74793767 / r74793797;
double r74793799 = r74793770 / r74793798;
double r74793800 = r74793795 + r74793799;
double r74793801 = r74793800 * r74793772;
double r74793802 = r74793801 / r74793788;
double r74793803 = r74793791 ? r74793802 : r74793789;
double r74793804 = r74793769 ? r74793789 : r74793803;
return r74793804;
}



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 h < -1.0777789780908555e-53 or 1.6973391009673264e-280 < h Initial program 57.8
Simplified52.1
rmApplied div-inv52.8
Applied associate-*l*54.2
Simplified54.2
rmApplied add-exp-log55.2
Simplified49.6
if -1.0777789780908555e-53 < h < 1.6973391009673264e-280Initial program 58.8
Simplified52.6
rmApplied div-inv53.0
Applied associate-*l*54.1
Simplified54.4
Taylor expanded around 0 59.4
Simplified53.4
Final simplification50.6
herbie shell --seed 2019128
(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))))))