\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 r1759752 = c0;
double r1759753 = 2.0;
double r1759754 = w;
double r1759755 = r1759753 * r1759754;
double r1759756 = r1759752 / r1759755;
double r1759757 = d;
double r1759758 = r1759757 * r1759757;
double r1759759 = r1759752 * r1759758;
double r1759760 = h;
double r1759761 = r1759754 * r1759760;
double r1759762 = D;
double r1759763 = r1759762 * r1759762;
double r1759764 = r1759761 * r1759763;
double r1759765 = r1759759 / r1759764;
double r1759766 = r1759765 * r1759765;
double r1759767 = M;
double r1759768 = r1759767 * r1759767;
double r1759769 = r1759766 - r1759768;
double r1759770 = sqrt(r1759769);
double r1759771 = r1759765 + r1759770;
double r1759772 = r1759756 * r1759771;
return r1759772;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r1759773 = c0;
double r1759774 = w;
double r1759775 = 2.0;
double r1759776 = r1759774 * r1759775;
double r1759777 = r1759773 / r1759776;
double r1759778 = d;
double r1759779 = r1759778 * r1759778;
double r1759780 = r1759773 * r1759779;
double r1759781 = D;
double r1759782 = r1759781 * r1759781;
double r1759783 = h;
double r1759784 = r1759774 * r1759783;
double r1759785 = r1759782 * r1759784;
double r1759786 = r1759780 / r1759785;
double r1759787 = r1759786 * r1759786;
double r1759788 = M;
double r1759789 = r1759788 * r1759788;
double r1759790 = r1759787 - r1759789;
double r1759791 = sqrt(r1759790);
double r1759792 = r1759791 + r1759786;
double r1759793 = r1759777 * r1759792;
double r1759794 = -1.5985938909858085e-110;
bool r1759795 = r1759793 <= r1759794;
double r1759796 = r1759773 / r1759783;
double r1759797 = r1759778 / r1759781;
double r1759798 = r1759797 * r1759797;
double r1759799 = r1759798 / r1759774;
double r1759800 = r1759796 * r1759799;
double r1759801 = r1759800 + r1759788;
double r1759802 = sqrt(r1759801);
double r1759803 = r1759800 - r1759788;
double r1759804 = sqrt(r1759803);
double r1759805 = fma(r1759802, r1759804, r1759800);
double r1759806 = r1759805 / r1759775;
double r1759807 = r1759773 / r1759774;
double r1759808 = r1759806 * r1759807;
double r1759809 = 0.0;
double r1759810 = r1759795 ? r1759808 : r1759809;
return r1759810;
}



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