\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 -2.17828202020906 \cdot 10^{-139}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 2.141857615600652 \cdot 10^{-118}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M} \cdot \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r27828856 = c0;
double r27828857 = 2.0;
double r27828858 = w;
double r27828859 = r27828857 * r27828858;
double r27828860 = r27828856 / r27828859;
double r27828861 = d;
double r27828862 = r27828861 * r27828861;
double r27828863 = r27828856 * r27828862;
double r27828864 = h;
double r27828865 = r27828858 * r27828864;
double r27828866 = D;
double r27828867 = r27828866 * r27828866;
double r27828868 = r27828865 * r27828867;
double r27828869 = r27828863 / r27828868;
double r27828870 = r27828869 * r27828869;
double r27828871 = M;
double r27828872 = r27828871 * r27828871;
double r27828873 = r27828870 - r27828872;
double r27828874 = sqrt(r27828873);
double r27828875 = r27828869 + r27828874;
double r27828876 = r27828860 * r27828875;
return r27828876;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r27828877 = d;
double r27828878 = -2.17828202020906e-139;
bool r27828879 = r27828877 <= r27828878;
double r27828880 = 0.0;
double r27828881 = 2.141857615600652e-118;
bool r27828882 = r27828877 <= r27828881;
double r27828883 = c0;
double r27828884 = w;
double r27828885 = r27828883 / r27828884;
double r27828886 = D;
double r27828887 = r27828877 / r27828886;
double r27828888 = r27828887 * r27828887;
double r27828889 = h;
double r27828890 = r27828888 / r27828889;
double r27828891 = r27828890 * r27828885;
double r27828892 = M;
double r27828893 = r27828891 + r27828892;
double r27828894 = sqrt(r27828893);
double r27828895 = r27828891 - r27828892;
double r27828896 = sqrt(r27828895);
double r27828897 = r27828894 * r27828896;
double r27828898 = r27828891 + r27828897;
double r27828899 = 2.0;
double r27828900 = r27828898 / r27828899;
double r27828901 = r27828885 * r27828900;
double r27828902 = r27828882 ? r27828901 : r27828880;
double r27828903 = r27828879 ? r27828880 : r27828902;
return r27828903;
}



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 < -2.17828202020906e-139 or 2.141857615600652e-118 < d Initial program 57.4
Simplified54.3
Taylor expanded around inf 32.8
if -2.17828202020906e-139 < d < 2.141857615600652e-118Initial program 60.3
Simplified44.4
rmApplied pow144.4
Applied pow144.4
Applied pow-prod-down44.4
Simplified43.1
rmApplied difference-of-squares43.1
Applied sqrt-prod47.4
Final simplification34.8
herbie shell --seed 2019107 +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))))))