\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)\frac{\sqrt[3]{c0} \cdot \sqrt[3]{c0}}{2} \cdot 0double f(double c0, double w, double h, double D, double d, double M) {
double r120502 = c0;
double r120503 = 2.0;
double r120504 = w;
double r120505 = r120503 * r120504;
double r120506 = r120502 / r120505;
double r120507 = d;
double r120508 = r120507 * r120507;
double r120509 = r120502 * r120508;
double r120510 = h;
double r120511 = r120504 * r120510;
double r120512 = D;
double r120513 = r120512 * r120512;
double r120514 = r120511 * r120513;
double r120515 = r120509 / r120514;
double r120516 = r120515 * r120515;
double r120517 = M;
double r120518 = r120517 * r120517;
double r120519 = r120516 - r120518;
double r120520 = sqrt(r120519);
double r120521 = r120515 + r120520;
double r120522 = r120506 * r120521;
return r120522;
}
double f(double c0, double __attribute__((unused)) w, double __attribute__((unused)) h, double __attribute__((unused)) D, double __attribute__((unused)) d, double __attribute__((unused)) M) {
double r120523 = c0;
double r120524 = cbrt(r120523);
double r120525 = r120524 * r120524;
double r120526 = 2.0;
double r120527 = r120525 / r120526;
double r120528 = 0.0;
double r120529 = r120527 * r120528;
return r120529;
}



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 58.9
Taylor expanded around inf 35.5
rmApplied add-cube-cbrt35.5
Applied times-frac35.5
Applied associate-*l*34.1
Simplified33.6
Final simplification33.6
herbie shell --seed 2019306
(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))))))