\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)}^{\frac{1}{2}} \cdot {\left(\frac{d}{h}\right)}^{\frac{1}{2}}\right) \le -1.5951901487005102 \cdot 10^{-112}:\\
\;\;\;\;\left({\left(\frac{d}{\ell}\right)}^{\frac{1}{2}} \cdot {\left(\frac{d}{h}\right)}^{\frac{1}{2}}\right) \cdot \left(1 - \frac{\left(\sqrt[3]{\frac{h}{\ell}} \cdot \frac{\frac{M}{2} \cdot D}{d}\right) \cdot \left(\sqrt[3]{\frac{h}{\ell}} \cdot \frac{\frac{M}{2} \cdot D}{d}\right)}{2} \cdot \sqrt[3]{\frac{h}{\ell}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\frac{1}{2}} \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}} \cdot \frac{\sqrt[3]{d}}{\sqrt[3]{h}}}\right) \cdot \left(\left(\sqrt{\frac{d}{\sqrt[3]{\ell}}} \cdot \sqrt{\frac{\frac{1}{\sqrt[3]{\ell}}}{\sqrt[3]{\ell}}}\right) \cdot \left(1 - \frac{h}{2} \cdot \frac{\frac{M}{\frac{2 \cdot d}{D}} \cdot \frac{M}{\frac{2 \cdot d}{D}}}{\ell}\right)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r5249384 = d;
double r5249385 = h;
double r5249386 = r5249384 / r5249385;
double r5249387 = 1.0;
double r5249388 = 2.0;
double r5249389 = r5249387 / r5249388;
double r5249390 = pow(r5249386, r5249389);
double r5249391 = l;
double r5249392 = r5249384 / r5249391;
double r5249393 = pow(r5249392, r5249389);
double r5249394 = r5249390 * r5249393;
double r5249395 = M;
double r5249396 = D;
double r5249397 = r5249395 * r5249396;
double r5249398 = r5249388 * r5249384;
double r5249399 = r5249397 / r5249398;
double r5249400 = pow(r5249399, r5249388);
double r5249401 = r5249389 * r5249400;
double r5249402 = r5249385 / r5249391;
double r5249403 = r5249401 * r5249402;
double r5249404 = r5249387 - r5249403;
double r5249405 = r5249394 * r5249404;
return r5249405;
}
double f(double d, double h, double l, double M, double D) {
double r5249406 = 1.0;
double r5249407 = h;
double r5249408 = l;
double r5249409 = r5249407 / r5249408;
double r5249410 = M;
double r5249411 = D;
double r5249412 = r5249410 * r5249411;
double r5249413 = 2.0;
double r5249414 = d;
double r5249415 = r5249413 * r5249414;
double r5249416 = r5249412 / r5249415;
double r5249417 = pow(r5249416, r5249413);
double r5249418 = 0.5;
double r5249419 = r5249417 * r5249418;
double r5249420 = r5249409 * r5249419;
double r5249421 = r5249406 - r5249420;
double r5249422 = r5249414 / r5249408;
double r5249423 = pow(r5249422, r5249418);
double r5249424 = r5249414 / r5249407;
double r5249425 = pow(r5249424, r5249418);
double r5249426 = r5249423 * r5249425;
double r5249427 = r5249421 * r5249426;
double r5249428 = -1.5951901487005102e-112;
bool r5249429 = r5249427 <= r5249428;
double r5249430 = cbrt(r5249409);
double r5249431 = r5249410 / r5249413;
double r5249432 = r5249431 * r5249411;
double r5249433 = r5249432 / r5249414;
double r5249434 = r5249430 * r5249433;
double r5249435 = r5249434 * r5249434;
double r5249436 = r5249435 / r5249413;
double r5249437 = r5249436 * r5249430;
double r5249438 = r5249406 - r5249437;
double r5249439 = r5249426 * r5249438;
double r5249440 = cbrt(r5249414);
double r5249441 = cbrt(r5249407);
double r5249442 = r5249440 / r5249441;
double r5249443 = pow(r5249442, r5249418);
double r5249444 = r5249442 * r5249442;
double r5249445 = sqrt(r5249444);
double r5249446 = r5249443 * r5249445;
double r5249447 = cbrt(r5249408);
double r5249448 = r5249414 / r5249447;
double r5249449 = sqrt(r5249448);
double r5249450 = r5249406 / r5249447;
double r5249451 = r5249450 / r5249447;
double r5249452 = sqrt(r5249451);
double r5249453 = r5249449 * r5249452;
double r5249454 = r5249407 / r5249413;
double r5249455 = r5249415 / r5249411;
double r5249456 = r5249410 / r5249455;
double r5249457 = r5249456 * r5249456;
double r5249458 = r5249457 / r5249408;
double r5249459 = r5249454 * r5249458;
double r5249460 = r5249406 - r5249459;
double r5249461 = r5249453 * r5249460;
double r5249462 = r5249446 * r5249461;
double r5249463 = r5249429 ? r5249439 : r5249462;
return r5249463;
}



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 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) < -1.5951901487005102e-112Initial program 28.4
rmApplied add-cube-cbrt28.7
Applied associate-*r*28.7
Simplified23.4
if -1.5951901487005102e-112 < (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) Initial program 25.2
rmApplied add-cube-cbrt25.5
Applied *-un-lft-identity25.5
Applied times-frac25.5
Applied unpow-prod-down21.1
Simplified21.1
Simplified21.1
rmApplied add-cube-cbrt21.3
Applied add-cube-cbrt21.3
Applied times-frac21.3
Applied unpow-prod-down15.4
Simplified15.4
rmApplied associate-*l/15.4
Applied frac-times12.5
Simplified12.5
rmApplied pow112.5
Applied pow112.5
Applied pow112.5
Applied pow-prod-down12.5
Applied pow-prod-down12.5
Simplified12.0
Final simplification13.9
herbie shell --seed 2019135 +o rules:numerics
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
(* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))))