\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 9.238858072207594 \cdot 10^{-116}:\\
\;\;\;\;\left(\sqrt{\frac{d}{\sqrt[3]{\ell}}} \cdot \sqrt{\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}} - \frac{\left(\left(\sqrt{\frac{d}{\sqrt[3]{\ell}}} \cdot \sqrt{\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}\right) \cdot \frac{\frac{M}{d}}{\frac{2}{D}}\right) \cdot \frac{\frac{M}{d}}{\frac{2}{D}}}{2 \cdot \frac{\ell}{h}}\right) \cdot \left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}}} \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}} \cdot \frac{\sqrt[3]{d}}{\sqrt[3]{h}}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}}} \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}} \cdot \frac{\sqrt[3]{d}}{\sqrt[3]{h}}}\right) \cdot \left(\sqrt{\frac{d}{\sqrt[3]{\ell}}} \cdot \sqrt{\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r7596497 = d;
double r7596498 = h;
double r7596499 = r7596497 / r7596498;
double r7596500 = 1.0;
double r7596501 = 2.0;
double r7596502 = r7596500 / r7596501;
double r7596503 = pow(r7596499, r7596502);
double r7596504 = l;
double r7596505 = r7596497 / r7596504;
double r7596506 = pow(r7596505, r7596502);
double r7596507 = r7596503 * r7596506;
double r7596508 = M;
double r7596509 = D;
double r7596510 = r7596508 * r7596509;
double r7596511 = r7596501 * r7596497;
double r7596512 = r7596510 / r7596511;
double r7596513 = pow(r7596512, r7596501);
double r7596514 = r7596502 * r7596513;
double r7596515 = r7596498 / r7596504;
double r7596516 = r7596514 * r7596515;
double r7596517 = r7596500 - r7596516;
double r7596518 = r7596507 * r7596517;
return r7596518;
}
double f(double d, double h, double l, double M, double D) {
double r7596519 = 1.0;
double r7596520 = h;
double r7596521 = l;
double r7596522 = r7596520 / r7596521;
double r7596523 = M;
double r7596524 = D;
double r7596525 = r7596523 * r7596524;
double r7596526 = 2.0;
double r7596527 = d;
double r7596528 = r7596526 * r7596527;
double r7596529 = r7596525 / r7596528;
double r7596530 = pow(r7596529, r7596526);
double r7596531 = 0.5;
double r7596532 = r7596530 * r7596531;
double r7596533 = r7596522 * r7596532;
double r7596534 = r7596519 - r7596533;
double r7596535 = r7596527 / r7596521;
double r7596536 = pow(r7596535, r7596531);
double r7596537 = r7596527 / r7596520;
double r7596538 = pow(r7596537, r7596531);
double r7596539 = r7596536 * r7596538;
double r7596540 = r7596534 * r7596539;
double r7596541 = 9.238858072207594e-116;
bool r7596542 = r7596540 <= r7596541;
double r7596543 = cbrt(r7596521);
double r7596544 = r7596527 / r7596543;
double r7596545 = sqrt(r7596544);
double r7596546 = r7596543 * r7596543;
double r7596547 = r7596519 / r7596546;
double r7596548 = sqrt(r7596547);
double r7596549 = r7596545 * r7596548;
double r7596550 = r7596523 / r7596527;
double r7596551 = r7596526 / r7596524;
double r7596552 = r7596550 / r7596551;
double r7596553 = r7596549 * r7596552;
double r7596554 = r7596553 * r7596552;
double r7596555 = r7596521 / r7596520;
double r7596556 = r7596526 * r7596555;
double r7596557 = r7596554 / r7596556;
double r7596558 = r7596549 - r7596557;
double r7596559 = cbrt(r7596527);
double r7596560 = cbrt(r7596520);
double r7596561 = r7596559 / r7596560;
double r7596562 = sqrt(r7596561);
double r7596563 = r7596561 * r7596561;
double r7596564 = sqrt(r7596563);
double r7596565 = r7596562 * r7596564;
double r7596566 = r7596558 * r7596565;
double r7596567 = r7596565 * r7596549;
double r7596568 = r7596542 ? r7596566 : r7596567;
return r7596568;
}



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)))) < 9.238858072207594e-116Initial program 25.0
Simplified25.5
rmApplied add-cube-cbrt25.7
Applied add-cube-cbrt25.8
Applied times-frac25.8
Applied sqrt-prod23.2
Simplified23.2
rmApplied add-cube-cbrt23.3
Applied *-un-lft-identity23.3
Applied times-frac23.3
Applied sqrt-prod17.7
rmApplied add-cube-cbrt17.7
Applied *-un-lft-identity17.7
Applied times-frac17.7
Applied sqrt-prod16.5
rmApplied associate-*l*14.1
if 9.238858072207594e-116 < (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) Initial program 26.1
Simplified26.0
rmApplied add-cube-cbrt26.3
Applied add-cube-cbrt26.4
Applied times-frac26.4
Applied sqrt-prod19.4
Simplified19.4
rmApplied add-cube-cbrt19.5
Applied *-un-lft-identity19.5
Applied times-frac19.5
Applied sqrt-prod19.5
Taylor expanded around 0 13.8
Final simplification13.9
herbie shell --seed 2019135
(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)))))