\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 r87973 = c0;
double r87974 = 2.0;
double r87975 = w;
double r87976 = r87974 * r87975;
double r87977 = r87973 / r87976;
double r87978 = d;
double r87979 = r87978 * r87978;
double r87980 = r87973 * r87979;
double r87981 = h;
double r87982 = r87975 * r87981;
double r87983 = D;
double r87984 = r87983 * r87983;
double r87985 = r87982 * r87984;
double r87986 = r87980 / r87985;
double r87987 = r87986 * r87986;
double r87988 = M;
double r87989 = r87988 * r87988;
double r87990 = r87987 - r87989;
double r87991 = sqrt(r87990);
double r87992 = r87986 + r87991;
double r87993 = r87977 * r87992;
return r87993;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r87994 = d;
double r87995 = 1.0280149463749771e-41;
bool r87996 = r87994 <= r87995;
double r87997 = 1.8791322752630873e+52;
bool r87998 = r87994 <= r87997;
double r87999 = !r87998;
bool r88000 = r87996 || r87999;
double r88001 = 0.0;
double r88002 = log(r88001);
double r88003 = exp(r88002);
double r88004 = c0;
double r88005 = 2.0;
double r88006 = w;
double r88007 = r88005 * r88006;
double r88008 = r88004 / r88007;
double r88009 = 2.0;
double r88010 = pow(r87994, r88009);
double r88011 = r88010 * r88004;
double r88012 = D;
double r88013 = pow(r88012, r88009);
double r88014 = h;
double r88015 = r88013 * r88014;
double r88016 = r88006 * r88015;
double r88017 = r88011 / r88016;
double r88018 = r88009 * r88017;
double r88019 = r88008 * r88018;
double r88020 = r88000 ? r88003 : r88019;
return r88020;
}



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 +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))))))