\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)0
double f(double c0, double w, double h, double D, double d, double M) {
double r140989 = c0;
double r140990 = 2.0;
double r140991 = w;
double r140992 = r140990 * r140991;
double r140993 = r140989 / r140992;
double r140994 = d;
double r140995 = r140994 * r140994;
double r140996 = r140989 * r140995;
double r140997 = h;
double r140998 = r140991 * r140997;
double r140999 = D;
double r141000 = r140999 * r140999;
double r141001 = r140998 * r141000;
double r141002 = r140996 / r141001;
double r141003 = r141002 * r141002;
double r141004 = M;
double r141005 = r141004 * r141004;
double r141006 = r141003 - r141005;
double r141007 = sqrt(r141006);
double r141008 = r141002 + r141007;
double r141009 = r140993 * r141008;
return r141009;
}
double f(double __attribute__((unused)) c0, double __attribute__((unused)) w, double __attribute__((unused)) h, double __attribute__((unused)) D, double __attribute__((unused)) d, double __attribute__((unused)) M) {
double r141010 = 0.0;
return r141010;
}



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
Initial program 59.3
Taylor expanded around inf 35.4
rmApplied add-log-exp35.4
Simplified33.4
Final simplification33.4
herbie shell --seed 2019303 +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))))))