\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}\;h \le -9.514944127719383 \cdot 10^{-225}:\\
\;\;\;\;\frac{\frac{\frac{d \cdot c0}{D \cdot w}}{\frac{h}{\frac{d \cdot c0}{D \cdot w}}} \cdot 2}{2}\\
\mathbf{elif}\;h \le 4.592127201203666 \cdot 10^{-181}:\\
\;\;\;\;\frac{2 \cdot \frac{\left(\frac{c0}{D} \cdot \frac{d}{w}\right) \cdot \left(\frac{c0}{D} \cdot \frac{d}{w}\right)}{h}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{d \cdot c0}{D \cdot w}}{\frac{h}{\frac{d \cdot c0}{D \cdot w}}} \cdot 2}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r49815980 = c0;
double r49815981 = 2.0;
double r49815982 = w;
double r49815983 = r49815981 * r49815982;
double r49815984 = r49815980 / r49815983;
double r49815985 = d;
double r49815986 = r49815985 * r49815985;
double r49815987 = r49815980 * r49815986;
double r49815988 = h;
double r49815989 = r49815982 * r49815988;
double r49815990 = D;
double r49815991 = r49815990 * r49815990;
double r49815992 = r49815989 * r49815991;
double r49815993 = r49815987 / r49815992;
double r49815994 = r49815993 * r49815993;
double r49815995 = M;
double r49815996 = r49815995 * r49815995;
double r49815997 = r49815994 - r49815996;
double r49815998 = sqrt(r49815997);
double r49815999 = r49815993 + r49815998;
double r49816000 = r49815984 * r49815999;
return r49816000;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r49816001 = h;
double r49816002 = -9.514944127719383e-225;
bool r49816003 = r49816001 <= r49816002;
double r49816004 = d;
double r49816005 = c0;
double r49816006 = r49816004 * r49816005;
double r49816007 = D;
double r49816008 = w;
double r49816009 = r49816007 * r49816008;
double r49816010 = r49816006 / r49816009;
double r49816011 = r49816001 / r49816010;
double r49816012 = r49816010 / r49816011;
double r49816013 = 2.0;
double r49816014 = r49816012 * r49816013;
double r49816015 = r49816014 / r49816013;
double r49816016 = 4.592127201203666e-181;
bool r49816017 = r49816001 <= r49816016;
double r49816018 = r49816005 / r49816007;
double r49816019 = r49816004 / r49816008;
double r49816020 = r49816018 * r49816019;
double r49816021 = r49816020 * r49816020;
double r49816022 = r49816021 / r49816001;
double r49816023 = r49816013 * r49816022;
double r49816024 = r49816023 / r49816013;
double r49816025 = r49816017 ? r49816024 : r49816015;
double r49816026 = r49816003 ? r49816015 : r49816025;
return r49816026;
}



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 h < -9.514944127719383e-225 or 4.592127201203666e-181 < h Initial program 57.9
Simplified51.7
rmApplied associate-*r*52.2
Taylor expanded around 0 59.4
Simplified54.3
Taylor expanded around inf 60.0
Simplified47.9
rmApplied associate-/l*45.7
if -9.514944127719383e-225 < h < 4.592127201203666e-181Initial program 58.7
Simplified52.8
rmApplied associate-*r*53.4
Taylor expanded around 0 58.9
Simplified53.6
Taylor expanded around inf 60.2
Simplified46.0
Taylor expanded around inf 57.6
Simplified45.3
Final simplification45.6
herbie shell --seed 2019112
(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))))))