\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 -1.1564613338875407 \cdot 10^{+184}:\\
\;\;\;\;\frac{\frac{\frac{\frac{c0}{\frac{D}{d} \cdot \frac{D}{d}}}{w}}{h} + \sqrt{\left(\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\right) \cdot \left(\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\right) - M \cdot M}}{2} \cdot \frac{c0}{w}\\
\mathbf{elif}\;D \le 9.618603368031972 \cdot 10^{+60}:\\
\;\;\;\;0\\
\mathbf{elif}\;D \le 2.4030601747568853 \cdot 10^{+137}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt{M + \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}, \sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M}, \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\right)}{2} \cdot \frac{c0}{w}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r4778747 = c0;
double r4778748 = 2.0;
double r4778749 = w;
double r4778750 = r4778748 * r4778749;
double r4778751 = r4778747 / r4778750;
double r4778752 = d;
double r4778753 = r4778752 * r4778752;
double r4778754 = r4778747 * r4778753;
double r4778755 = h;
double r4778756 = r4778749 * r4778755;
double r4778757 = D;
double r4778758 = r4778757 * r4778757;
double r4778759 = r4778756 * r4778758;
double r4778760 = r4778754 / r4778759;
double r4778761 = r4778760 * r4778760;
double r4778762 = M;
double r4778763 = r4778762 * r4778762;
double r4778764 = r4778761 - r4778763;
double r4778765 = sqrt(r4778764);
double r4778766 = r4778760 + r4778765;
double r4778767 = r4778751 * r4778766;
return r4778767;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r4778768 = D;
double r4778769 = -1.1564613338875407e+184;
bool r4778770 = r4778768 <= r4778769;
double r4778771 = c0;
double r4778772 = d;
double r4778773 = r4778768 / r4778772;
double r4778774 = r4778773 * r4778773;
double r4778775 = r4778771 / r4778774;
double r4778776 = w;
double r4778777 = r4778775 / r4778776;
double r4778778 = h;
double r4778779 = r4778777 / r4778778;
double r4778780 = r4778771 / r4778776;
double r4778781 = r4778772 / r4778768;
double r4778782 = r4778781 * r4778781;
double r4778783 = r4778782 / r4778778;
double r4778784 = r4778780 * r4778783;
double r4778785 = r4778784 * r4778784;
double r4778786 = M;
double r4778787 = r4778786 * r4778786;
double r4778788 = r4778785 - r4778787;
double r4778789 = sqrt(r4778788);
double r4778790 = r4778779 + r4778789;
double r4778791 = 2.0;
double r4778792 = r4778790 / r4778791;
double r4778793 = r4778792 * r4778780;
double r4778794 = 9.618603368031972e+60;
bool r4778795 = r4778768 <= r4778794;
double r4778796 = 0.0;
double r4778797 = 2.4030601747568853e+137;
bool r4778798 = r4778768 <= r4778797;
double r4778799 = r4778786 + r4778784;
double r4778800 = sqrt(r4778799);
double r4778801 = r4778784 - r4778786;
double r4778802 = sqrt(r4778801);
double r4778803 = fma(r4778800, r4778802, r4778784);
double r4778804 = r4778803 / r4778791;
double r4778805 = r4778804 * r4778780;
double r4778806 = r4778798 ? r4778805 : r4778796;
double r4778807 = r4778795 ? r4778796 : r4778806;
double r4778808 = r4778770 ? r4778793 : r4778807;
return r4778808;
}



Bits error versus c0



Bits error versus w



Bits error versus h



Bits error versus D



Bits error versus d



Bits error versus M
if D < -1.1564613338875407e+184Initial program 61.1
Simplified42.3
Taylor expanded around 0 60.2
Simplified46.5
if -1.1564613338875407e+184 < D < 9.618603368031972e+60 or 2.4030601747568853e+137 < D Initial program 58.1
Simplified53.4
Taylor expanded around inf 34.4
Taylor expanded around 0 32.7
if 9.618603368031972e+60 < D < 2.4030601747568853e+137Initial program 54.6
Simplified48.3
rmApplied difference-of-squares48.2
Applied sqrt-prod51.6
Applied fma-def51.6
Final simplification34.2
herbie shell --seed 2019158 +o rules:numerics
(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))))))