\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 \cdot D \le 1.4002829474461056 \cdot 10^{-270}:\\
\;\;\;\;\frac{e^{\log \left(\frac{\frac{d}{D} \cdot \left(\frac{c0}{w} \cdot \frac{d}{D}\right)}{h} + \sqrt{\left(\frac{\frac{d}{D} \cdot \left(\frac{c0}{w} \cdot \frac{d}{D}\right)}{h} + M\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(\frac{c0}{w} \cdot \frac{d}{D}\right)}{h} - M\right)}\right)}}{w} \cdot \frac{c0}{2}\\
\mathbf{elif}\;D \cdot D \le 1.2358590730630332 \cdot 10^{+137}:\\
\;\;\;\;\frac{\frac{c0 \cdot 2}{\frac{D \cdot D}{d} \cdot \frac{w \cdot h}{d}}}{w} \cdot \frac{c0}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\log \left(\frac{\frac{d}{D} \cdot \left(\frac{c0}{w} \cdot \frac{d}{D}\right)}{h} + \sqrt{\left(\frac{\frac{d}{D} \cdot \left(\frac{c0}{w} \cdot \frac{d}{D}\right)}{h} + M\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(\frac{c0}{w} \cdot \frac{d}{D}\right)}{h} - M\right)}\right)}}{w} \cdot \frac{c0}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r6006573 = c0;
double r6006574 = 2.0;
double r6006575 = w;
double r6006576 = r6006574 * r6006575;
double r6006577 = r6006573 / r6006576;
double r6006578 = d;
double r6006579 = r6006578 * r6006578;
double r6006580 = r6006573 * r6006579;
double r6006581 = h;
double r6006582 = r6006575 * r6006581;
double r6006583 = D;
double r6006584 = r6006583 * r6006583;
double r6006585 = r6006582 * r6006584;
double r6006586 = r6006580 / r6006585;
double r6006587 = r6006586 * r6006586;
double r6006588 = M;
double r6006589 = r6006588 * r6006588;
double r6006590 = r6006587 - r6006589;
double r6006591 = sqrt(r6006590);
double r6006592 = r6006586 + r6006591;
double r6006593 = r6006577 * r6006592;
return r6006593;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r6006594 = D;
double r6006595 = r6006594 * r6006594;
double r6006596 = 1.4002829474461056e-270;
bool r6006597 = r6006595 <= r6006596;
double r6006598 = d;
double r6006599 = r6006598 / r6006594;
double r6006600 = c0;
double r6006601 = w;
double r6006602 = r6006600 / r6006601;
double r6006603 = r6006602 * r6006599;
double r6006604 = r6006599 * r6006603;
double r6006605 = h;
double r6006606 = r6006604 / r6006605;
double r6006607 = M;
double r6006608 = r6006606 + r6006607;
double r6006609 = r6006606 - r6006607;
double r6006610 = r6006608 * r6006609;
double r6006611 = sqrt(r6006610);
double r6006612 = r6006606 + r6006611;
double r6006613 = log(r6006612);
double r6006614 = exp(r6006613);
double r6006615 = r6006614 / r6006601;
double r6006616 = 2.0;
double r6006617 = r6006600 / r6006616;
double r6006618 = r6006615 * r6006617;
double r6006619 = 1.2358590730630332e+137;
bool r6006620 = r6006595 <= r6006619;
double r6006621 = r6006600 * r6006616;
double r6006622 = r6006595 / r6006598;
double r6006623 = r6006601 * r6006605;
double r6006624 = r6006623 / r6006598;
double r6006625 = r6006622 * r6006624;
double r6006626 = r6006621 / r6006625;
double r6006627 = r6006626 / r6006601;
double r6006628 = r6006627 * r6006617;
double r6006629 = r6006620 ? r6006628 : r6006618;
double r6006630 = r6006597 ? r6006618 : r6006629;
return r6006630;
}



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 D) < 1.4002829474461056e-270 or 1.2358590730630332e+137 < (* D D) Initial program 60.8
Simplified51.8
rmApplied div-inv52.6
rmApplied add-exp-log53.6
Simplified51.3
if 1.4002829474461056e-270 < (* D D) < 1.2358590730630332e+137Initial program 54.0
Simplified51.5
rmApplied div-inv52.3
Taylor expanded around 0 53.8
Simplified51.1
Final simplification51.2
herbie shell --seed 2019141
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
(* (/ 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))))))