\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\begin{array}{l}
\mathbf{if}\;\left(1 - \frac{h}{\ell} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{1}{2}\right)\right) \cdot \left({\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)}\right) \le -1.332074362493885807282809284139451105714 \cdot 10^{-71}:\\
\;\;\;\;\left(\left(1 - \frac{1}{2} \cdot \left({\left(\frac{M}{2 \cdot \frac{d}{D}}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{{\left(D \cdot \frac{M}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}}{\frac{\ell}{h}}\right)\right) \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot {\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)}\\
\mathbf{else}:\\
\;\;\;\;\left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(\left(1 - \frac{1}{2} \cdot \left(h \cdot \left(\frac{\frac{{\left(D \cdot \frac{M}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}}{\sqrt[3]{\ell}}}{\sqrt[3]{\ell}} \cdot \frac{{\left(D \cdot \frac{M}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}}{\sqrt[3]{\ell}}\right)\right)\right) \cdot \left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r224226 = d;
double r224227 = h;
double r224228 = r224226 / r224227;
double r224229 = 1.0;
double r224230 = 2.0;
double r224231 = r224229 / r224230;
double r224232 = pow(r224228, r224231);
double r224233 = l;
double r224234 = r224226 / r224233;
double r224235 = pow(r224234, r224231);
double r224236 = r224232 * r224235;
double r224237 = M;
double r224238 = D;
double r224239 = r224237 * r224238;
double r224240 = r224230 * r224226;
double r224241 = r224239 / r224240;
double r224242 = pow(r224241, r224230);
double r224243 = r224231 * r224242;
double r224244 = r224227 / r224233;
double r224245 = r224243 * r224244;
double r224246 = r224229 - r224245;
double r224247 = r224236 * r224246;
return r224247;
}
double f(double d, double h, double l, double M, double D) {
double r224248 = 1.0;
double r224249 = h;
double r224250 = l;
double r224251 = r224249 / r224250;
double r224252 = M;
double r224253 = D;
double r224254 = r224252 * r224253;
double r224255 = 2.0;
double r224256 = d;
double r224257 = r224255 * r224256;
double r224258 = r224254 / r224257;
double r224259 = pow(r224258, r224255);
double r224260 = r224248 / r224255;
double r224261 = r224259 * r224260;
double r224262 = r224251 * r224261;
double r224263 = r224248 - r224262;
double r224264 = r224256 / r224250;
double r224265 = pow(r224264, r224260);
double r224266 = r224256 / r224249;
double r224267 = pow(r224266, r224260);
double r224268 = r224265 * r224267;
double r224269 = r224263 * r224268;
double r224270 = -1.3320743624938858e-71;
bool r224271 = r224269 <= r224270;
double r224272 = r224256 / r224253;
double r224273 = r224255 * r224272;
double r224274 = r224252 / r224273;
double r224275 = 2.0;
double r224276 = r224255 / r224275;
double r224277 = pow(r224274, r224276);
double r224278 = r224252 / r224257;
double r224279 = r224253 * r224278;
double r224280 = pow(r224279, r224276);
double r224281 = r224250 / r224249;
double r224282 = r224280 / r224281;
double r224283 = r224277 * r224282;
double r224284 = r224260 * r224283;
double r224285 = r224248 - r224284;
double r224286 = r224285 * r224265;
double r224287 = r224286 * r224267;
double r224288 = cbrt(r224256);
double r224289 = cbrt(r224249);
double r224290 = r224288 / r224289;
double r224291 = pow(r224290, r224260);
double r224292 = r224288 * r224288;
double r224293 = r224289 * r224289;
double r224294 = r224292 / r224293;
double r224295 = pow(r224294, r224260);
double r224296 = r224291 * r224295;
double r224297 = cbrt(r224250);
double r224298 = r224280 / r224297;
double r224299 = r224298 / r224297;
double r224300 = r224299 * r224298;
double r224301 = r224249 * r224300;
double r224302 = r224260 * r224301;
double r224303 = r224248 - r224302;
double r224304 = r224297 * r224297;
double r224305 = r224292 / r224304;
double r224306 = pow(r224305, r224260);
double r224307 = r224288 / r224297;
double r224308 = pow(r224307, r224260);
double r224309 = r224306 * r224308;
double r224310 = r224303 * r224309;
double r224311 = r224296 * r224310;
double r224312 = r224271 ? r224287 : r224311;
return r224312;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) < -1.3320743624938858e-71Initial program 29.8
Simplified31.9
rmApplied *-un-lft-identity31.9
Applied sqr-pow31.9
Applied times-frac27.0
Applied associate-*l*21.7
Simplified26.5
if -1.3320743624938858e-71 < (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) Initial program 26.5
Simplified25.4
rmApplied add-cube-cbrt25.7
Applied add-cube-cbrt25.8
Applied times-frac25.8
Applied unpow-prod-down19.0
rmApplied add-cube-cbrt19.0
Applied add-cube-cbrt19.2
Applied times-frac19.2
Applied unpow-prod-down12.3
rmApplied add-cube-cbrt12.4
Applied sqr-pow12.4
Applied times-frac10.3
Simplified11.4
Simplified10.5
Final simplification13.2
herbie shell --seed 2019179
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
(* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))))