\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(\left(h \cdot \left(M \cdot D\right)\right) \cdot \left(M \cdot D\right)\right) \cdot 0.125\right) \cdot {\left(\frac{1}{{d}^{2}}\right)}^{1}}{\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 r6798599 = d;
double r6798600 = h;
double r6798601 = r6798599 / r6798600;
double r6798602 = 1.0;
double r6798603 = 2.0;
double r6798604 = r6798602 / r6798603;
double r6798605 = pow(r6798601, r6798604);
double r6798606 = l;
double r6798607 = r6798599 / r6798606;
double r6798608 = pow(r6798607, r6798604);
double r6798609 = r6798605 * r6798608;
double r6798610 = M;
double r6798611 = D;
double r6798612 = r6798610 * r6798611;
double r6798613 = r6798603 * r6798599;
double r6798614 = r6798612 / r6798613;
double r6798615 = pow(r6798614, r6798603);
double r6798616 = r6798604 * r6798615;
double r6798617 = r6798600 / r6798606;
double r6798618 = r6798616 * r6798617;
double r6798619 = r6798602 - r6798618;
double r6798620 = r6798609 * r6798619;
return r6798620;
}
double f(double d, double h, double l, double M, double D) {
double r6798621 = d;
double r6798622 = 1.803215210159374e-41;
bool r6798623 = r6798621 <= r6798622;
double r6798624 = 1.0;
double r6798625 = h;
double r6798626 = cbrt(r6798625);
double r6798627 = r6798626 * r6798626;
double r6798628 = r6798624 / r6798627;
double r6798629 = 1.0;
double r6798630 = 2.0;
double r6798631 = r6798629 / r6798630;
double r6798632 = pow(r6798628, r6798631);
double r6798633 = r6798621 / r6798626;
double r6798634 = pow(r6798633, r6798631);
double r6798635 = r6798632 * r6798634;
double r6798636 = cbrt(r6798621);
double r6798637 = l;
double r6798638 = cbrt(r6798637);
double r6798639 = r6798636 / r6798638;
double r6798640 = r6798639 * r6798639;
double r6798641 = pow(r6798640, r6798631);
double r6798642 = pow(r6798639, r6798631);
double r6798643 = r6798641 * r6798642;
double r6798644 = r6798635 * r6798643;
double r6798645 = M;
double r6798646 = D;
double r6798647 = r6798645 * r6798646;
double r6798648 = r6798630 * r6798621;
double r6798649 = r6798647 / r6798648;
double r6798650 = pow(r6798649, r6798630);
double r6798651 = r6798631 * r6798650;
double r6798652 = r6798651 * r6798625;
double r6798653 = r6798652 / r6798637;
double r6798654 = r6798629 - r6798653;
double r6798655 = r6798644 * r6798654;
double r6798656 = 1.0683641516926155e+145;
bool r6798657 = r6798621 <= r6798656;
double r6798658 = r6798625 * r6798647;
double r6798659 = r6798658 * r6798647;
double r6798660 = 0.125;
double r6798661 = r6798659 * r6798660;
double r6798662 = pow(r6798621, r6798630);
double r6798663 = r6798624 / r6798662;
double r6798664 = pow(r6798663, r6798629);
double r6798665 = r6798661 * r6798664;
double r6798666 = r6798665 / r6798637;
double r6798667 = r6798629 - r6798666;
double r6798668 = r6798621 / r6798637;
double r6798669 = pow(r6798668, r6798631);
double r6798670 = r6798635 * r6798669;
double r6798671 = r6798667 * r6798670;
double r6798672 = r6798636 / r6798637;
double r6798673 = pow(r6798672, r6798631);
double r6798674 = r6798636 * r6798636;
double r6798675 = pow(r6798674, r6798631);
double r6798676 = r6798673 * r6798675;
double r6798677 = r6798676 * r6798654;
double r6798678 = r6798677 * r6798635;
double r6798679 = r6798657 ? r6798671 : r6798678;
double r6798680 = r6798623 ? r6798655 : r6798679;
return r6798680;
}



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 +o rules:numerics
(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)))))