\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}\;d \le -2.3788084210232337 \cdot 10^{-114}:\\
\;\;\;\;\frac{c0}{2} \cdot \frac{0}{w}\\
\mathbf{elif}\;d \le -5.1398908857458564 \cdot 10^{-300}:\\
\;\;\;\;\frac{2 \cdot \left(\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h \cdot w}\right)}{w} \cdot \frac{c0}{2}\\
\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 r4471947 = c0;
double r4471948 = 2.0;
double r4471949 = w;
double r4471950 = r4471948 * r4471949;
double r4471951 = r4471947 / r4471950;
double r4471952 = d;
double r4471953 = r4471952 * r4471952;
double r4471954 = r4471947 * r4471953;
double r4471955 = h;
double r4471956 = r4471949 * r4471955;
double r4471957 = D;
double r4471958 = r4471957 * r4471957;
double r4471959 = r4471956 * r4471958;
double r4471960 = r4471954 / r4471959;
double r4471961 = r4471960 * r4471960;
double r4471962 = M;
double r4471963 = r4471962 * r4471962;
double r4471964 = r4471961 - r4471963;
double r4471965 = sqrt(r4471964);
double r4471966 = r4471960 + r4471965;
double r4471967 = r4471951 * r4471966;
return r4471967;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r4471968 = d;
double r4471969 = -2.3788084210232337e-114;
bool r4471970 = r4471968 <= r4471969;
double r4471971 = c0;
double r4471972 = 2.0;
double r4471973 = r4471971 / r4471972;
double r4471974 = 0.0;
double r4471975 = w;
double r4471976 = r4471974 / r4471975;
double r4471977 = r4471973 * r4471976;
double r4471978 = -5.1398908857458564e-300;
bool r4471979 = r4471968 <= r4471978;
double r4471980 = D;
double r4471981 = r4471968 / r4471980;
double r4471982 = r4471981 * r4471981;
double r4471983 = h;
double r4471984 = r4471983 * r4471975;
double r4471985 = r4471971 / r4471984;
double r4471986 = r4471982 * r4471985;
double r4471987 = r4471972 * r4471986;
double r4471988 = r4471987 / r4471975;
double r4471989 = r4471988 * r4471973;
double r4471990 = r4471979 ? r4471989 : r4471977;
double r4471991 = r4471970 ? r4471977 : r4471990;
return r4471991;
}



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 d < -2.3788084210232337e-114 or -5.1398908857458564e-300 < d Initial program 57.9
Simplified52.1
rmApplied add-cube-cbrt53.8
rmApplied *-un-lft-identity53.8
Applied *-un-lft-identity53.8
Applied distribute-lft-out53.8
Simplified50.4
Taylor expanded around -inf 33.0
if -2.3788084210232337e-114 < d < -5.1398908857458564e-300Initial program 60.0
Simplified44.4
Taylor expanded around 0 59.9
Simplified47.0
Final simplification34.0
herbie shell --seed 2019143
(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))))))