\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({\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) \le -1.624495708136576 \cdot 10^{286}:\\
\;\;\;\;\left(\left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \frac{\frac{1}{2} \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}} \cdot \frac{h}{\sqrt[3]{\ell}}\right)\\
\mathbf{elif}\;\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) \le 3.0092666112745297 \cdot 10^{143}:\\
\;\;\;\;\left(\left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left({\left(\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\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)\\
\mathbf{else}:\\
\;\;\;\;\left(\left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{1}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \frac{\frac{\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}} \cdot h}{\sqrt[3]{\ell}}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r193224 = d;
double r193225 = h;
double r193226 = r193224 / r193225;
double r193227 = 1.0;
double r193228 = 2.0;
double r193229 = r193227 / r193228;
double r193230 = pow(r193226, r193229);
double r193231 = l;
double r193232 = r193224 / r193231;
double r193233 = pow(r193232, r193229);
double r193234 = r193230 * r193233;
double r193235 = M;
double r193236 = D;
double r193237 = r193235 * r193236;
double r193238 = r193228 * r193224;
double r193239 = r193237 / r193238;
double r193240 = pow(r193239, r193228);
double r193241 = r193229 * r193240;
double r193242 = r193225 / r193231;
double r193243 = r193241 * r193242;
double r193244 = r193227 - r193243;
double r193245 = r193234 * r193244;
return r193245;
}
double f(double d, double h, double l, double M, double D) {
double r193246 = d;
double r193247 = h;
double r193248 = r193246 / r193247;
double r193249 = 1.0;
double r193250 = 2.0;
double r193251 = r193249 / r193250;
double r193252 = pow(r193248, r193251);
double r193253 = l;
double r193254 = r193246 / r193253;
double r193255 = pow(r193254, r193251);
double r193256 = r193252 * r193255;
double r193257 = M;
double r193258 = D;
double r193259 = r193257 * r193258;
double r193260 = r193250 * r193246;
double r193261 = r193259 / r193260;
double r193262 = pow(r193261, r193250);
double r193263 = r193251 * r193262;
double r193264 = r193247 / r193253;
double r193265 = r193263 * r193264;
double r193266 = r193249 - r193265;
double r193267 = r193256 * r193266;
double r193268 = -1.624495708136576e+286;
bool r193269 = r193267 <= r193268;
double r193270 = cbrt(r193246);
double r193271 = r193270 * r193270;
double r193272 = cbrt(r193247);
double r193273 = r193272 * r193272;
double r193274 = r193271 / r193273;
double r193275 = pow(r193274, r193251);
double r193276 = r193270 / r193272;
double r193277 = pow(r193276, r193251);
double r193278 = r193275 * r193277;
double r193279 = r193278 * r193255;
double r193280 = r193257 / r193250;
double r193281 = r193258 / r193246;
double r193282 = r193280 * r193281;
double r193283 = pow(r193282, r193250);
double r193284 = r193251 * r193283;
double r193285 = cbrt(r193253);
double r193286 = r193285 * r193285;
double r193287 = r193284 / r193286;
double r193288 = r193247 / r193285;
double r193289 = r193287 * r193288;
double r193290 = r193249 - r193289;
double r193291 = r193279 * r193290;
double r193292 = 3.0092666112745297e+143;
bool r193293 = r193267 <= r193292;
double r193294 = 1.0;
double r193295 = r193294 / r193286;
double r193296 = pow(r193295, r193251);
double r193297 = r193246 / r193285;
double r193298 = pow(r193297, r193251);
double r193299 = r193296 * r193298;
double r193300 = r193278 * r193299;
double r193301 = r193300 * r193266;
double r193302 = r193271 / r193294;
double r193303 = pow(r193302, r193251);
double r193304 = r193270 / r193253;
double r193305 = pow(r193304, r193251);
double r193306 = r193303 * r193305;
double r193307 = r193278 * r193306;
double r193308 = r193263 / r193286;
double r193309 = r193308 * r193247;
double r193310 = r193309 / r193285;
double r193311 = r193249 - r193310;
double r193312 = r193307 * r193311;
double r193313 = r193293 ? r193301 : r193312;
double r193314 = r193269 ? r193291 : r193313;
return r193314;
}



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.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)))) < -1.624495708136576e+286Initial program 60.9
rmApplied add-cube-cbrt60.9
Applied add-cube-cbrt61.0
Applied times-frac61.0
Applied unpow-prod-down61.0
rmApplied add-cube-cbrt61.0
Applied *-un-lft-identity61.0
Applied times-frac61.0
Applied associate-*r*55.1
Simplified55.1
rmApplied times-frac51.9
if -1.624495708136576e+286 < (* (* (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)))) < 3.0092666112745297e+143Initial program 7.8
rmApplied add-cube-cbrt8.2
Applied add-cube-cbrt8.3
Applied times-frac8.3
Applied unpow-prod-down6.9
rmApplied add-cube-cbrt7.1
Applied *-un-lft-identity7.1
Applied times-frac7.1
Applied unpow-prod-down3.1
if 3.0092666112745297e+143 < (* (* (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)))) Initial program 48.7
rmApplied add-cube-cbrt48.8
Applied add-cube-cbrt48.9
Applied times-frac48.9
Applied unpow-prod-down35.6
rmApplied add-cube-cbrt35.6
Applied *-un-lft-identity35.6
Applied times-frac35.6
Applied associate-*r*32.7
Simplified32.7
rmApplied *-un-lft-identity32.7
Applied add-cube-cbrt32.9
Applied times-frac32.9
Applied unpow-prod-down27.1
rmApplied associate-*r/25.2
Final simplification15.2
herbie shell --seed 2020060
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
:precision binary64
(* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))))