\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.761651198141392 \cdot 10^{-55}:\\
\;\;\;\;\left(\sqrt{\frac{d}{\ell}} - \frac{h \cdot \left(\sqrt{\frac{d}{\ell}} \cdot \left(\frac{M}{d} \cdot \frac{D}{2}\right)\right)}{\frac{\ell \cdot 2}{\frac{D}{2} \cdot M} \cdot d}\right) \cdot \left(\left|\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right| \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}}}\right)\\
\mathbf{elif}\;\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 5.2855475699966966 \cdot 10^{+84}:\\
\;\;\;\;\left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}} \cdot \left|\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right| - \left(\frac{\left(\frac{M}{d} \cdot \frac{D}{2}\right) \cdot \left(\frac{M}{d} \cdot \frac{D}{2}\right)}{\ell \cdot 2} \cdot \sqrt{\frac{d}{\ell}}\right) \cdot h\right) \cdot \sqrt{\frac{d}{h}}\\
\mathbf{else}:\\
\;\;\;\;\left(\left|\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right| \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}}}\right) \cdot \left(\sqrt{\frac{d}{\ell}} - \frac{h \cdot \left(\left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}} \cdot \left|\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right|\right) \cdot \left(\frac{M}{d} \cdot \frac{D}{2}\right)\right)}{\frac{\ell \cdot 2}{\frac{M}{d} \cdot \frac{D}{2}}}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r8031413 = d;
double r8031414 = h;
double r8031415 = r8031413 / r8031414;
double r8031416 = 1.0;
double r8031417 = 2.0;
double r8031418 = r8031416 / r8031417;
double r8031419 = pow(r8031415, r8031418);
double r8031420 = l;
double r8031421 = r8031413 / r8031420;
double r8031422 = pow(r8031421, r8031418);
double r8031423 = r8031419 * r8031422;
double r8031424 = M;
double r8031425 = D;
double r8031426 = r8031424 * r8031425;
double r8031427 = r8031417 * r8031413;
double r8031428 = r8031426 / r8031427;
double r8031429 = pow(r8031428, r8031417);
double r8031430 = r8031418 * r8031429;
double r8031431 = r8031414 / r8031420;
double r8031432 = r8031430 * r8031431;
double r8031433 = r8031416 - r8031432;
double r8031434 = r8031423 * r8031433;
return r8031434;
}
double f(double d, double h, double l, double M, double D) {
double r8031435 = 1.0;
double r8031436 = h;
double r8031437 = l;
double r8031438 = r8031436 / r8031437;
double r8031439 = M;
double r8031440 = D;
double r8031441 = r8031439 * r8031440;
double r8031442 = 2.0;
double r8031443 = d;
double r8031444 = r8031442 * r8031443;
double r8031445 = r8031441 / r8031444;
double r8031446 = pow(r8031445, r8031442);
double r8031447 = 0.5;
double r8031448 = r8031446 * r8031447;
double r8031449 = r8031438 * r8031448;
double r8031450 = r8031435 - r8031449;
double r8031451 = r8031443 / r8031437;
double r8031452 = pow(r8031451, r8031447);
double r8031453 = r8031443 / r8031436;
double r8031454 = pow(r8031453, r8031447);
double r8031455 = r8031452 * r8031454;
double r8031456 = r8031450 * r8031455;
double r8031457 = -1.761651198141392e-55;
bool r8031458 = r8031456 <= r8031457;
double r8031459 = sqrt(r8031451);
double r8031460 = r8031439 / r8031443;
double r8031461 = r8031440 / r8031442;
double r8031462 = r8031460 * r8031461;
double r8031463 = r8031459 * r8031462;
double r8031464 = r8031436 * r8031463;
double r8031465 = r8031437 * r8031442;
double r8031466 = r8031461 * r8031439;
double r8031467 = r8031465 / r8031466;
double r8031468 = r8031467 * r8031443;
double r8031469 = r8031464 / r8031468;
double r8031470 = r8031459 - r8031469;
double r8031471 = cbrt(r8031443);
double r8031472 = cbrt(r8031436);
double r8031473 = r8031471 / r8031472;
double r8031474 = fabs(r8031473);
double r8031475 = sqrt(r8031473);
double r8031476 = r8031474 * r8031475;
double r8031477 = r8031470 * r8031476;
double r8031478 = 5.2855475699966966e+84;
bool r8031479 = r8031456 <= r8031478;
double r8031480 = cbrt(r8031437);
double r8031481 = r8031471 / r8031480;
double r8031482 = sqrt(r8031481);
double r8031483 = fabs(r8031481);
double r8031484 = r8031482 * r8031483;
double r8031485 = r8031462 * r8031462;
double r8031486 = r8031485 / r8031465;
double r8031487 = r8031486 * r8031459;
double r8031488 = r8031487 * r8031436;
double r8031489 = r8031484 - r8031488;
double r8031490 = sqrt(r8031453);
double r8031491 = r8031489 * r8031490;
double r8031492 = r8031484 * r8031462;
double r8031493 = r8031436 * r8031492;
double r8031494 = r8031465 / r8031462;
double r8031495 = r8031493 / r8031494;
double r8031496 = r8031459 - r8031495;
double r8031497 = r8031476 * r8031496;
double r8031498 = r8031479 ? r8031491 : r8031497;
double r8031499 = r8031458 ? r8031477 : r8031498;
return r8031499;
}



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.761651198141392e-55Initial program 27.8
Simplified30.9
rmApplied add-cube-cbrt31.0
Applied add-cube-cbrt31.1
Applied times-frac31.1
Applied sqrt-prod30.5
Simplified30.5
rmApplied associate-/l*25.0
rmApplied associate-*r/21.9
Applied associate-*l/17.2
rmApplied associate-*l/19.3
Applied associate-/r/19.3
if -1.761651198141392e-55 < (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) < 5.2855475699966966e+84Initial program 10.6
Simplified11.2
rmApplied add-cube-cbrt11.5
Applied add-cube-cbrt11.7
Applied times-frac11.7
Applied sqrt-prod6.6
Simplified6.1
if 5.2855475699966966e+84 < (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) Initial program 40.7
Simplified38.2
rmApplied add-cube-cbrt38.4
Applied add-cube-cbrt38.5
Applied times-frac38.5
Applied sqrt-prod26.9
Simplified24.8
rmApplied associate-/l*22.6
rmApplied associate-*r/22.2
Applied associate-*l/21.9
rmApplied add-cube-cbrt21.9
Applied add-cube-cbrt22.0
Applied times-frac22.0
Applied sqrt-prod18.9
Simplified18.3
Final simplification13.4
herbie shell --seed 2019138
(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)))))