\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 -5.629048561142467075757424854093711272673 \cdot 10^{-98}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 1.005607342248347511278327377708312147419 \cdot 10^{-125}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(\left(\sqrt[3]{\sqrt{\left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right) \cdot \left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right) - M \cdot M} + \frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)} \cdot \sqrt[3]{\sqrt{\left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right) \cdot \left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right) - M \cdot M} + \frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}\right) \cdot \sqrt[3]{\sqrt{\left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right) \cdot \left(\frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)\right) - M \cdot M} + \frac{c0}{w \cdot h} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r13193988 = c0;
double r13193989 = 2.0;
double r13193990 = w;
double r13193991 = r13193989 * r13193990;
double r13193992 = r13193988 / r13193991;
double r13193993 = d;
double r13193994 = r13193993 * r13193993;
double r13193995 = r13193988 * r13193994;
double r13193996 = h;
double r13193997 = r13193990 * r13193996;
double r13193998 = D;
double r13193999 = r13193998 * r13193998;
double r13194000 = r13193997 * r13193999;
double r13194001 = r13193995 / r13194000;
double r13194002 = r13194001 * r13194001;
double r13194003 = M;
double r13194004 = r13194003 * r13194003;
double r13194005 = r13194002 - r13194004;
double r13194006 = sqrt(r13194005);
double r13194007 = r13194001 + r13194006;
double r13194008 = r13193992 * r13194007;
return r13194008;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r13194009 = d;
double r13194010 = -5.629048561142467e-98;
bool r13194011 = r13194009 <= r13194010;
double r13194012 = 0.0;
double r13194013 = 1.0056073422483475e-125;
bool r13194014 = r13194009 <= r13194013;
double r13194015 = c0;
double r13194016 = 2.0;
double r13194017 = w;
double r13194018 = r13194016 * r13194017;
double r13194019 = r13194015 / r13194018;
double r13194020 = h;
double r13194021 = r13194017 * r13194020;
double r13194022 = r13194015 / r13194021;
double r13194023 = D;
double r13194024 = r13194009 / r13194023;
double r13194025 = r13194024 * r13194024;
double r13194026 = r13194022 * r13194025;
double r13194027 = r13194026 * r13194026;
double r13194028 = M;
double r13194029 = r13194028 * r13194028;
double r13194030 = r13194027 - r13194029;
double r13194031 = sqrt(r13194030);
double r13194032 = r13194031 + r13194026;
double r13194033 = cbrt(r13194032);
double r13194034 = r13194033 * r13194033;
double r13194035 = r13194034 * r13194033;
double r13194036 = r13194019 * r13194035;
double r13194037 = r13194014 ? r13194036 : r13194012;
double r13194038 = r13194011 ? r13194012 : r13194037;
return r13194038;
}



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 < -5.629048561142467e-98 or 1.0056073422483475e-125 < d Initial program 59.2
Simplified55.7
Taylor expanded around inf 33.1
rmApplied mul031.4
if -5.629048561142467e-98 < d < 1.0056073422483475e-125Initial program 61.4
Simplified45.8
rmApplied add-cube-cbrt45.9
Final simplification33.7
herbie shell --seed 2019173
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
(* (/ c0 (* 2.0 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))))))