\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 1.028014946374977112793459567345674978253 \cdot 10^{-41} \lor \neg \left(d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}\right):\\
\;\;\;\;e^{\log 0}\\
\mathbf{else}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r109071 = c0;
double r109072 = 2.0;
double r109073 = w;
double r109074 = r109072 * r109073;
double r109075 = r109071 / r109074;
double r109076 = d;
double r109077 = r109076 * r109076;
double r109078 = r109071 * r109077;
double r109079 = h;
double r109080 = r109073 * r109079;
double r109081 = D;
double r109082 = r109081 * r109081;
double r109083 = r109080 * r109082;
double r109084 = r109078 / r109083;
double r109085 = r109084 * r109084;
double r109086 = M;
double r109087 = r109086 * r109086;
double r109088 = r109085 - r109087;
double r109089 = sqrt(r109088);
double r109090 = r109084 + r109089;
double r109091 = r109075 * r109090;
return r109091;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r109092 = d;
double r109093 = 1.0280149463749771e-41;
bool r109094 = r109092 <= r109093;
double r109095 = 1.8791322752630873e+52;
bool r109096 = r109092 <= r109095;
double r109097 = !r109096;
bool r109098 = r109094 || r109097;
double r109099 = 0.0;
double r109100 = log(r109099);
double r109101 = exp(r109100);
double r109102 = c0;
double r109103 = 2.0;
double r109104 = w;
double r109105 = r109103 * r109104;
double r109106 = r109102 / r109105;
double r109107 = 2.0;
double r109108 = pow(r109092, r109107);
double r109109 = r109108 * r109102;
double r109110 = D;
double r109111 = pow(r109110, r109107);
double r109112 = h;
double r109113 = r109111 * r109112;
double r109114 = r109104 * r109113;
double r109115 = r109109 / r109114;
double r109116 = r109107 * r109115;
double r109117 = r109106 * r109116;
double r109118 = r109098 ? r109101 : r109117;
return r109118;
}



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 < 1.0280149463749771e-41 or 1.8791322752630873e+52 < d Initial program 59.9
Taylor expanded around inf 34.6
rmApplied add-exp-log34.6
Applied add-exp-log48.9
Applied add-exp-log48.9
Applied prod-exp48.9
Applied add-exp-log56.5
Applied div-exp56.5
Applied prod-exp56.0
Simplified32.7
if 1.0280149463749771e-41 < d < 1.8791322752630873e+52Initial program 52.7
rmApplied associate-/l*53.8
Taylor expanded around inf 54.7
Final simplification34.5
herbie shell --seed 2019323
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
:precision binary64
(* (/ 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))))))