\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}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 3.9339264335359494 \cdot 10^{+223}:\\
\;\;\;\;\frac{c0}{2} \cdot \frac{\frac{c0 \cdot \frac{d}{D}}{\frac{w \cdot h}{\frac{d}{D}}} + \sqrt{\left(\frac{c0 \cdot \frac{d}{D}}{\frac{w \cdot h}{\frac{d}{D}}} - M\right) \cdot \left(M + \frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{w \cdot h}\right)}}{w}\\
\mathbf{else}:\\
\;\;\;\;\frac{c0}{2} \cdot \frac{0}{w}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r7034815 = c0;
double r7034816 = 2.0;
double r7034817 = w;
double r7034818 = r7034816 * r7034817;
double r7034819 = r7034815 / r7034818;
double r7034820 = d;
double r7034821 = r7034820 * r7034820;
double r7034822 = r7034815 * r7034821;
double r7034823 = h;
double r7034824 = r7034817 * r7034823;
double r7034825 = D;
double r7034826 = r7034825 * r7034825;
double r7034827 = r7034824 * r7034826;
double r7034828 = r7034822 / r7034827;
double r7034829 = r7034828 * r7034828;
double r7034830 = M;
double r7034831 = r7034830 * r7034830;
double r7034832 = r7034829 - r7034831;
double r7034833 = sqrt(r7034832);
double r7034834 = r7034828 + r7034833;
double r7034835 = r7034819 * r7034834;
return r7034835;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r7034836 = c0;
double r7034837 = w;
double r7034838 = 2.0;
double r7034839 = r7034837 * r7034838;
double r7034840 = r7034836 / r7034839;
double r7034841 = d;
double r7034842 = r7034841 * r7034841;
double r7034843 = r7034836 * r7034842;
double r7034844 = D;
double r7034845 = r7034844 * r7034844;
double r7034846 = h;
double r7034847 = r7034837 * r7034846;
double r7034848 = r7034845 * r7034847;
double r7034849 = r7034843 / r7034848;
double r7034850 = r7034849 * r7034849;
double r7034851 = M;
double r7034852 = r7034851 * r7034851;
double r7034853 = r7034850 - r7034852;
double r7034854 = sqrt(r7034853);
double r7034855 = r7034854 + r7034849;
double r7034856 = r7034840 * r7034855;
double r7034857 = 3.9339264335359494e+223;
bool r7034858 = r7034856 <= r7034857;
double r7034859 = r7034836 / r7034838;
double r7034860 = r7034841 / r7034844;
double r7034861 = r7034836 * r7034860;
double r7034862 = r7034847 / r7034860;
double r7034863 = r7034861 / r7034862;
double r7034864 = r7034863 - r7034851;
double r7034865 = r7034860 * r7034861;
double r7034866 = r7034865 / r7034847;
double r7034867 = r7034851 + r7034866;
double r7034868 = r7034864 * r7034867;
double r7034869 = sqrt(r7034868);
double r7034870 = r7034863 + r7034869;
double r7034871 = r7034870 / r7034837;
double r7034872 = r7034859 * r7034871;
double r7034873 = 0.0;
double r7034874 = r7034873 / r7034837;
double r7034875 = r7034859 * r7034874;
double r7034876 = r7034858 ? r7034872 : r7034875;
return r7034876;
}



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 (* (/ 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))))) < 3.9339264335359494e+223Initial program 35.3
Simplified34.2
rmApplied associate-/l*35.6
rmApplied associate-/l*35.2
if 3.9339264335359494e+223 < (* (/ 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))))) Initial program 62.6
Simplified55.9
rmApplied associate-/l*56.1
rmApplied *-un-lft-identity56.1
Applied *-un-lft-identity56.1
Applied distribute-lft-out56.1
Simplified55.9
Taylor expanded around inf 32.3
Final simplification32.8
herbie shell --seed 2019163
(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))))))