\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}\;c0 \le -7.536492045050691 \cdot 10^{-90}:\\
\;\;\;\;\frac{c0}{2} \cdot \frac{2 \cdot \left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right)}{w}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\left(\sqrt{\left(M + \frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h}\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h} - M\right)} + \frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h}\right) \cdot \left(\left(\sqrt{\left(M + \frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h}\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h} - M\right)} + \frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h}\right) \cdot \left(\sqrt{\left(M + \frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h}\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h} - M\right)} + \frac{\frac{d}{D} \cdot \left(\frac{d}{D} \cdot c0\right)}{w \cdot h}\right)\right)}}{w} \cdot \frac{c0}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r4457922 = c0;
double r4457923 = 2.0;
double r4457924 = w;
double r4457925 = r4457923 * r4457924;
double r4457926 = r4457922 / r4457925;
double r4457927 = d;
double r4457928 = r4457927 * r4457927;
double r4457929 = r4457922 * r4457928;
double r4457930 = h;
double r4457931 = r4457924 * r4457930;
double r4457932 = D;
double r4457933 = r4457932 * r4457932;
double r4457934 = r4457931 * r4457933;
double r4457935 = r4457929 / r4457934;
double r4457936 = r4457935 * r4457935;
double r4457937 = M;
double r4457938 = r4457937 * r4457937;
double r4457939 = r4457936 - r4457938;
double r4457940 = sqrt(r4457939);
double r4457941 = r4457935 + r4457940;
double r4457942 = r4457926 * r4457941;
return r4457942;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r4457943 = c0;
double r4457944 = -7.536492045050691e-90;
bool r4457945 = r4457943 <= r4457944;
double r4457946 = 2.0;
double r4457947 = r4457943 / r4457946;
double r4457948 = w;
double r4457949 = h;
double r4457950 = r4457948 * r4457949;
double r4457951 = r4457943 / r4457950;
double r4457952 = d;
double r4457953 = D;
double r4457954 = r4457952 / r4457953;
double r4457955 = r4457954 * r4457954;
double r4457956 = r4457951 * r4457955;
double r4457957 = r4457946 * r4457956;
double r4457958 = r4457957 / r4457948;
double r4457959 = r4457947 * r4457958;
double r4457960 = M;
double r4457961 = r4457954 * r4457943;
double r4457962 = r4457954 * r4457961;
double r4457963 = r4457962 / r4457950;
double r4457964 = r4457960 + r4457963;
double r4457965 = r4457963 - r4457960;
double r4457966 = r4457964 * r4457965;
double r4457967 = sqrt(r4457966);
double r4457968 = r4457967 + r4457963;
double r4457969 = r4457968 * r4457968;
double r4457970 = r4457968 * r4457969;
double r4457971 = cbrt(r4457970);
double r4457972 = r4457971 / r4457948;
double r4457973 = r4457972 * r4457947;
double r4457974 = r4457945 ? r4457959 : r4457973;
return r4457974;
}



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 c0 < -7.536492045050691e-90Initial program 58.7
Simplified53.5
rmApplied associate-/r*54.7
Taylor expanded around 0 58.9
Simplified54.1
if -7.536492045050691e-90 < c0 Initial program 57.6
Simplified49.8
rmApplied add-cbrt-cube51.0
Final simplification52.0
herbie shell --seed 2019152
(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))))))