\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}\;M \le -3.3977465073006914 \cdot 10^{+140}:\\
\;\;\;\;\frac{2 \cdot \frac{\frac{d \cdot c0}{D \cdot w}}{\frac{h}{\frac{\frac{d \cdot c0}{w}}{D}}}}{2}\\
\mathbf{elif}\;M \le 3.6094771780886608:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{\frac{d \cdot c0}{D \cdot w}}{\frac{h}{\frac{\frac{d \cdot c0}{w}}{D}}}}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r54269624 = c0;
double r54269625 = 2.0;
double r54269626 = w;
double r54269627 = r54269625 * r54269626;
double r54269628 = r54269624 / r54269627;
double r54269629 = d;
double r54269630 = r54269629 * r54269629;
double r54269631 = r54269624 * r54269630;
double r54269632 = h;
double r54269633 = r54269626 * r54269632;
double r54269634 = D;
double r54269635 = r54269634 * r54269634;
double r54269636 = r54269633 * r54269635;
double r54269637 = r54269631 / r54269636;
double r54269638 = r54269637 * r54269637;
double r54269639 = M;
double r54269640 = r54269639 * r54269639;
double r54269641 = r54269638 - r54269640;
double r54269642 = sqrt(r54269641);
double r54269643 = r54269637 + r54269642;
double r54269644 = r54269628 * r54269643;
return r54269644;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r54269645 = M;
double r54269646 = -3.3977465073006914e+140;
bool r54269647 = r54269645 <= r54269646;
double r54269648 = 2.0;
double r54269649 = d;
double r54269650 = c0;
double r54269651 = r54269649 * r54269650;
double r54269652 = D;
double r54269653 = w;
double r54269654 = r54269652 * r54269653;
double r54269655 = r54269651 / r54269654;
double r54269656 = h;
double r54269657 = r54269651 / r54269653;
double r54269658 = r54269657 / r54269652;
double r54269659 = r54269656 / r54269658;
double r54269660 = r54269655 / r54269659;
double r54269661 = r54269648 * r54269660;
double r54269662 = r54269661 / r54269648;
double r54269663 = 3.6094771780886608;
bool r54269664 = r54269645 <= r54269663;
double r54269665 = 0.0;
double r54269666 = r54269664 ? r54269665 : r54269662;
double r54269667 = r54269647 ? r54269662 : r54269666;
return r54269667;
}



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 M < -3.3977465073006914e+140 or 3.6094771780886608 < M Initial program 61.6
Simplified60.3
Taylor expanded around 0 61.5
Simplified52.5
rmApplied associate-/l*50.8
rmApplied associate-/r*51.2
if -3.3977465073006914e+140 < M < 3.6094771780886608Initial program 56.5
Simplified48.8
Taylor expanded around -inf 29.8
Final simplification35.1
herbie shell --seed 2019107
(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))))))