\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}\;M \cdot M \le 3.410750937078938 \cdot 10^{-272}:\\
\;\;\;\;\frac{\frac{c0}{w} \cdot \left(\sqrt[3]{\sqrt{\left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} - M\right) \cdot \left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} + M\right)} + \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h}} \cdot \left(\sqrt[3]{\sqrt{\left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} - M\right) \cdot \left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} + M\right)} + \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h}} \cdot \sqrt[3]{\sqrt{\left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} - M\right) \cdot \left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} + M\right)} + \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h}}\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{w}}{h} + \frac{c0}{\frac{h}{\frac{\frac{d}{D} \cdot \frac{d}{D}}{w}}}\right) \cdot \frac{c0}{w}}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r39886857 = c0;
double r39886858 = 2.0;
double r39886859 = w;
double r39886860 = r39886858 * r39886859;
double r39886861 = r39886857 / r39886860;
double r39886862 = d;
double r39886863 = r39886862 * r39886862;
double r39886864 = r39886857 * r39886863;
double r39886865 = h;
double r39886866 = r39886859 * r39886865;
double r39886867 = D;
double r39886868 = r39886867 * r39886867;
double r39886869 = r39886866 * r39886868;
double r39886870 = r39886864 / r39886869;
double r39886871 = r39886870 * r39886870;
double r39886872 = M;
double r39886873 = r39886872 * r39886872;
double r39886874 = r39886871 - r39886873;
double r39886875 = sqrt(r39886874);
double r39886876 = r39886870 + r39886875;
double r39886877 = r39886861 * r39886876;
return r39886877;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r39886878 = M;
double r39886879 = r39886878 * r39886878;
double r39886880 = 3.410750937078938e-272;
bool r39886881 = r39886879 <= r39886880;
double r39886882 = c0;
double r39886883 = w;
double r39886884 = r39886882 / r39886883;
double r39886885 = d;
double r39886886 = D;
double r39886887 = r39886885 / r39886886;
double r39886888 = r39886887 * r39886887;
double r39886889 = r39886888 * r39886884;
double r39886890 = h;
double r39886891 = r39886889 / r39886890;
double r39886892 = r39886891 - r39886878;
double r39886893 = r39886891 + r39886878;
double r39886894 = r39886892 * r39886893;
double r39886895 = sqrt(r39886894);
double r39886896 = r39886895 + r39886891;
double r39886897 = cbrt(r39886896);
double r39886898 = r39886897 * r39886897;
double r39886899 = r39886897 * r39886898;
double r39886900 = r39886884 * r39886899;
double r39886901 = 2.0;
double r39886902 = r39886900 / r39886901;
double r39886903 = r39886888 / r39886883;
double r39886904 = r39886890 / r39886903;
double r39886905 = r39886882 / r39886904;
double r39886906 = r39886891 + r39886905;
double r39886907 = r39886906 * r39886884;
double r39886908 = r39886907 / r39886901;
double r39886909 = r39886881 ? r39886902 : r39886908;
return r39886909;
}



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 (* M M) < 3.410750937078938e-272Initial program 54.5
Simplified44.5
rmApplied add-cube-cbrt44.6
if 3.410750937078938e-272 < (* M M) Initial program 60.4
Simplified57.7
Taylor expanded around 0 60.3
Simplified56.9
Final simplification51.9
herbie shell --seed 2019124
(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))))))