\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 -1.5985938909858085 \cdot 10^{-110}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M}, \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}, \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right)}{2} \cdot \frac{c0}{w}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r3251829 = c0;
double r3251830 = 2.0;
double r3251831 = w;
double r3251832 = r3251830 * r3251831;
double r3251833 = r3251829 / r3251832;
double r3251834 = d;
double r3251835 = r3251834 * r3251834;
double r3251836 = r3251829 * r3251835;
double r3251837 = h;
double r3251838 = r3251831 * r3251837;
double r3251839 = D;
double r3251840 = r3251839 * r3251839;
double r3251841 = r3251838 * r3251840;
double r3251842 = r3251836 / r3251841;
double r3251843 = r3251842 * r3251842;
double r3251844 = M;
double r3251845 = r3251844 * r3251844;
double r3251846 = r3251843 - r3251845;
double r3251847 = sqrt(r3251846);
double r3251848 = r3251842 + r3251847;
double r3251849 = r3251833 * r3251848;
return r3251849;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r3251850 = c0;
double r3251851 = w;
double r3251852 = 2.0;
double r3251853 = r3251851 * r3251852;
double r3251854 = r3251850 / r3251853;
double r3251855 = d;
double r3251856 = r3251855 * r3251855;
double r3251857 = r3251850 * r3251856;
double r3251858 = D;
double r3251859 = r3251858 * r3251858;
double r3251860 = h;
double r3251861 = r3251851 * r3251860;
double r3251862 = r3251859 * r3251861;
double r3251863 = r3251857 / r3251862;
double r3251864 = r3251863 * r3251863;
double r3251865 = M;
double r3251866 = r3251865 * r3251865;
double r3251867 = r3251864 - r3251866;
double r3251868 = sqrt(r3251867);
double r3251869 = r3251868 + r3251863;
double r3251870 = r3251854 * r3251869;
double r3251871 = -1.5985938909858085e-110;
bool r3251872 = r3251870 <= r3251871;
double r3251873 = r3251850 / r3251860;
double r3251874 = r3251855 / r3251858;
double r3251875 = r3251874 * r3251874;
double r3251876 = r3251875 / r3251851;
double r3251877 = r3251873 * r3251876;
double r3251878 = r3251877 + r3251865;
double r3251879 = sqrt(r3251878);
double r3251880 = r3251877 - r3251865;
double r3251881 = sqrt(r3251880);
double r3251882 = fma(r3251879, r3251881, r3251877);
double r3251883 = r3251882 / r3251852;
double r3251884 = r3251850 / r3251851;
double r3251885 = r3251883 * r3251884;
double r3251886 = 0.0;
double r3251887 = r3251872 ? r3251885 : r3251886;
return r3251887;
}



Bits error versus c0



Bits error versus w



Bits error versus h



Bits error versus D



Bits error versus d



Bits error versus M
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))))) < -1.5985938909858085e-110Initial program 47.3
Simplified48.7
rmApplied difference-of-squares48.7
Applied sqrt-prod42.4
Applied fma-def42.4
if -1.5985938909858085e-110 < (* (/ 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 58.9
Simplified53.7
Taylor expanded around -inf 34.6
Taylor expanded around -inf 32.4
Final simplification33.1
herbie shell --seed 2019153 +o rules:numerics
(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))))))