\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 r37777647 = c0;
double r37777648 = 2.0;
double r37777649 = w;
double r37777650 = r37777648 * r37777649;
double r37777651 = r37777647 / r37777650;
double r37777652 = d;
double r37777653 = r37777652 * r37777652;
double r37777654 = r37777647 * r37777653;
double r37777655 = h;
double r37777656 = r37777649 * r37777655;
double r37777657 = D;
double r37777658 = r37777657 * r37777657;
double r37777659 = r37777656 * r37777658;
double r37777660 = r37777654 / r37777659;
double r37777661 = r37777660 * r37777660;
double r37777662 = M;
double r37777663 = r37777662 * r37777662;
double r37777664 = r37777661 - r37777663;
double r37777665 = sqrt(r37777664);
double r37777666 = r37777660 + r37777665;
double r37777667 = r37777651 * r37777666;
return r37777667;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r37777668 = M;
double r37777669 = -3.3977465073006914e+140;
bool r37777670 = r37777668 <= r37777669;
double r37777671 = 2.0;
double r37777672 = d;
double r37777673 = c0;
double r37777674 = r37777672 * r37777673;
double r37777675 = D;
double r37777676 = w;
double r37777677 = r37777675 * r37777676;
double r37777678 = r37777674 / r37777677;
double r37777679 = h;
double r37777680 = r37777674 / r37777676;
double r37777681 = r37777680 / r37777675;
double r37777682 = r37777679 / r37777681;
double r37777683 = r37777678 / r37777682;
double r37777684 = r37777671 * r37777683;
double r37777685 = r37777684 / r37777671;
double r37777686 = 3.6094771780886608;
bool r37777687 = r37777668 <= r37777686;
double r37777688 = 0.0;
double r37777689 = r37777687 ? r37777688 : r37777685;
double r37777690 = r37777670 ? r37777685 : r37777689;
return r37777690;
}



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