\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}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r158066 = c0;
double r158067 = 2.0;
double r158068 = w;
double r158069 = r158067 * r158068;
double r158070 = r158066 / r158069;
double r158071 = d;
double r158072 = r158071 * r158071;
double r158073 = r158066 * r158072;
double r158074 = h;
double r158075 = r158068 * r158074;
double r158076 = D;
double r158077 = r158076 * r158076;
double r158078 = r158075 * r158077;
double r158079 = r158073 / r158078;
double r158080 = r158079 * r158079;
double r158081 = M;
double r158082 = r158081 * r158081;
double r158083 = r158080 - r158082;
double r158084 = sqrt(r158083);
double r158085 = r158079 + r158084;
double r158086 = r158070 * r158085;
return r158086;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r158087 = d;
double r158088 = 1.0280149463749771e-41;
bool r158089 = r158087 <= r158088;
double r158090 = 0.0;
double r158091 = 1.8791322752630873e+52;
bool r158092 = r158087 <= r158091;
double r158093 = c0;
double r158094 = 2.0;
double r158095 = w;
double r158096 = r158094 * r158095;
double r158097 = r158093 / r158096;
double r158098 = 2.0;
double r158099 = pow(r158087, r158098);
double r158100 = r158099 * r158093;
double r158101 = D;
double r158102 = pow(r158101, r158098);
double r158103 = h;
double r158104 = r158102 * r158103;
double r158105 = r158095 * r158104;
double r158106 = r158100 / r158105;
double r158107 = r158098 * r158106;
double r158108 = r158097 * r158107;
double r158109 = r158092 ? r158108 : r158090;
double r158110 = r158089 ? r158090 : r158109;
return r158110;
}



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-cbrt-cube34.6
Applied add-cbrt-cube41.5
Applied add-cbrt-cube41.5
Applied cbrt-unprod41.5
Applied add-cbrt-cube48.4
Applied cbrt-undiv48.8
Applied cbrt-unprod48.8
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 +o rules:numerics
(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))))))