\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}\;d \le 1.80321521015937387307221327977087141273 \cdot 10^{-41}:\\
\;\;\;\;\left(\left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}} \cdot \frac{\sqrt[3]{d}}{\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) \cdot \left(1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}\right)\\
\mathbf{elif}\;d \le 1.068364151692615464348686690737471161262 \cdot 10^{145}:\\
\;\;\;\;\left(1 - \frac{\left({\left(\frac{1}{{d}^{2}}\right)}^{1} \cdot 0.125\right) \cdot \left(\left(M \cdot D\right) \cdot \left(h \cdot \left(M \cdot D\right)\right)\right)}{\ell}\right) \cdot \left(\left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left({\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\sqrt[3]{d} \cdot \sqrt[3]{d}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}\right)\right) \cdot \left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r8955504 = d;
double r8955505 = h;
double r8955506 = r8955504 / r8955505;
double r8955507 = 1.0;
double r8955508 = 2.0;
double r8955509 = r8955507 / r8955508;
double r8955510 = pow(r8955506, r8955509);
double r8955511 = l;
double r8955512 = r8955504 / r8955511;
double r8955513 = pow(r8955512, r8955509);
double r8955514 = r8955510 * r8955513;
double r8955515 = M;
double r8955516 = D;
double r8955517 = r8955515 * r8955516;
double r8955518 = r8955508 * r8955504;
double r8955519 = r8955517 / r8955518;
double r8955520 = pow(r8955519, r8955508);
double r8955521 = r8955509 * r8955520;
double r8955522 = r8955505 / r8955511;
double r8955523 = r8955521 * r8955522;
double r8955524 = r8955507 - r8955523;
double r8955525 = r8955514 * r8955524;
return r8955525;
}
double f(double d, double h, double l, double M, double D) {
double r8955526 = d;
double r8955527 = 1.803215210159374e-41;
bool r8955528 = r8955526 <= r8955527;
double r8955529 = 1.0;
double r8955530 = h;
double r8955531 = cbrt(r8955530);
double r8955532 = r8955531 * r8955531;
double r8955533 = r8955529 / r8955532;
double r8955534 = 1.0;
double r8955535 = 2.0;
double r8955536 = r8955534 / r8955535;
double r8955537 = pow(r8955533, r8955536);
double r8955538 = r8955526 / r8955531;
double r8955539 = pow(r8955538, r8955536);
double r8955540 = r8955537 * r8955539;
double r8955541 = cbrt(r8955526);
double r8955542 = l;
double r8955543 = cbrt(r8955542);
double r8955544 = r8955541 / r8955543;
double r8955545 = r8955544 * r8955544;
double r8955546 = pow(r8955545, r8955536);
double r8955547 = pow(r8955544, r8955536);
double r8955548 = r8955546 * r8955547;
double r8955549 = r8955540 * r8955548;
double r8955550 = M;
double r8955551 = D;
double r8955552 = r8955550 * r8955551;
double r8955553 = r8955535 * r8955526;
double r8955554 = r8955552 / r8955553;
double r8955555 = pow(r8955554, r8955535);
double r8955556 = r8955536 * r8955555;
double r8955557 = r8955556 * r8955530;
double r8955558 = r8955557 / r8955542;
double r8955559 = r8955534 - r8955558;
double r8955560 = r8955549 * r8955559;
double r8955561 = 1.0683641516926155e+145;
bool r8955562 = r8955526 <= r8955561;
double r8955563 = pow(r8955526, r8955535);
double r8955564 = r8955529 / r8955563;
double r8955565 = pow(r8955564, r8955534);
double r8955566 = 0.125;
double r8955567 = r8955565 * r8955566;
double r8955568 = r8955530 * r8955552;
double r8955569 = r8955552 * r8955568;
double r8955570 = r8955567 * r8955569;
double r8955571 = r8955570 / r8955542;
double r8955572 = r8955534 - r8955571;
double r8955573 = r8955526 / r8955542;
double r8955574 = pow(r8955573, r8955536);
double r8955575 = r8955540 * r8955574;
double r8955576 = r8955572 * r8955575;
double r8955577 = r8955541 / r8955542;
double r8955578 = pow(r8955577, r8955536);
double r8955579 = r8955541 * r8955541;
double r8955580 = pow(r8955579, r8955536);
double r8955581 = r8955578 * r8955580;
double r8955582 = r8955581 * r8955559;
double r8955583 = r8955582 * r8955540;
double r8955584 = r8955562 ? r8955576 : r8955583;
double r8955585 = r8955528 ? r8955560 : r8955584;
return r8955585;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if d < 1.803215210159374e-41Initial program 28.2
rmApplied add-cube-cbrt28.4
Applied *-un-lft-identity28.4
Applied times-frac28.4
Applied unpow-prod-down24.4
rmApplied associate-*r/23.3
rmApplied add-cube-cbrt23.4
Applied add-cube-cbrt23.5
Applied times-frac23.5
Applied unpow-prod-down18.2
Simplified18.2
if 1.803215210159374e-41 < d < 1.0683641516926155e+145Initial program 17.4
rmApplied add-cube-cbrt17.8
Applied *-un-lft-identity17.8
Applied times-frac17.8
Applied unpow-prod-down12.7
rmApplied associate-*r/11.2
Taylor expanded around 0 27.8
Simplified11.8
if 1.0683641516926155e+145 < d Initial program 29.4
rmApplied add-cube-cbrt29.7
Applied *-un-lft-identity29.7
Applied times-frac29.7
Applied unpow-prod-down19.6
rmApplied associate-*r/19.0
rmApplied *-un-lft-identity19.0
Applied add-cube-cbrt19.2
Applied times-frac19.2
Applied unpow-prod-down10.2
Simplified10.2
rmApplied associate-*l*10.4
Final simplification16.1
herbie shell --seed 2019172
(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)))))