w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \leq 5.0984987494098346 \cdot 10^{-160}:\\
\;\;\;\;w0 \cdot \sqrt[3]{{\left(\sqrt{1 - \frac{\frac{\frac{D}{d}}{\frac{2}{M}} \cdot \left(h \cdot \frac{\frac{D}{d}}{\frac{2}{M}}\right)}{\ell}}\right)}^{3}}\\
\mathbf{elif}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \leq 7.944018704189104 \cdot 10^{+257}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{M}{2} \cdot \left(\frac{D}{d} \cdot \frac{h}{\ell}\right)\right)}\\
\end{array}(FPCore (w0 M D h l d) :precision binary64 (* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))
(FPCore (w0 M D h l d)
:precision binary64
(if (<= (pow (/ (* M D) (* 2.0 d)) 2.0) 5.0984987494098346e-160)
(*
w0
(cbrt
(pow
(sqrt
(- 1.0 (/ (* (/ (/ D d) (/ 2.0 M)) (* h (/ (/ D d) (/ 2.0 M)))) l)))
3.0)))
(if (<= (pow (/ (* M D) (* 2.0 d)) 2.0) 7.944018704189104e+257)
(* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l)))))
(*
w0
(sqrt
(- 1.0 (* (* (/ D d) (/ M 2.0)) (* (/ M 2.0) (* (/ D d) (/ h l))))))))))double code(double w0, double M, double D, double h, double l, double d) {
return w0 * sqrt(1.0 - (pow(((M * D) / (2.0 * d)), 2.0) * (h / l)));
}
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (pow(((M * D) / (2.0 * d)), 2.0) <= 5.0984987494098346e-160) {
tmp = w0 * cbrt(pow(sqrt(1.0 - ((((D / d) / (2.0 / M)) * (h * ((D / d) / (2.0 / M)))) / l)), 3.0));
} else if (pow(((M * D) / (2.0 * d)), 2.0) <= 7.944018704189104e+257) {
tmp = w0 * sqrt(1.0 - (pow(((M * D) / (2.0 * d)), 2.0) * (h / l)));
} else {
tmp = w0 * sqrt(1.0 - (((D / d) * (M / 2.0)) * ((M / 2.0) * ((D / d) * (h / l)))));
}
return tmp;
}



Bits error versus w0



Bits error versus M



Bits error versus D



Bits error versus h



Bits error versus l



Bits error versus d
Results
if (pow.f64 (/.f64 (*.f64 M D) (*.f64 2 d)) 2) < 5.0984987494098346e-160Initial program 6.4
Simplified6.4
rmApplied *-un-lft-identity_binary64_11016.4
Applied add-cube-cbrt_binary64_11366.4
Applied times-frac_binary64_11076.4
Applied associate-*r*_binary64_10412.5
Simplified2.5
rmApplied associate-*r*_binary64_10412.5
Simplified2.5
rmApplied add-cbrt-cube_binary64_11372.6
Simplified1.2
rmApplied unpow2_binary64_11661.2
Applied associate-*r*_binary64_10410.6
if 5.0984987494098346e-160 < (pow.f64 (/.f64 (*.f64 M D) (*.f64 2 d)) 2) < 7.94401870418910368e257Initial program 6.8
if 7.94401870418910368e257 < (pow.f64 (/.f64 (*.f64 M D) (*.f64 2 d)) 2) Initial program 59.4
Simplified56.5
rmApplied unpow2_binary64_116656.5
Applied associate-*l*_binary64_104245.8
Simplified46.1
Final simplification8.7
herbie shell --seed 2021058
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
:precision binary64
(* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))