\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 3.350652035923100598278714097320687860487 \cdot 10^{239}:\\
\;\;\;\;\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({\left(\frac{1}{\sqrt[3]{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\sqrt[3]{\ell}}}\right)}^{\left(\frac{1}{2}\right)}\right)\right)\right) \cdot \left(1 - \left(\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{\sqrt[3]{h} \cdot \sqrt[3]{h}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right) \cdot \frac{\sqrt[3]{h}}{\sqrt[3]{\ell}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left({\left({d}^{1}\right)}^{1} \cdot {\left(\frac{1}{{h}^{1} \cdot {\ell}^{1}}\right)}^{0.5}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r215282 = d;
double r215283 = h;
double r215284 = r215282 / r215283;
double r215285 = 1.0;
double r215286 = 2.0;
double r215287 = r215285 / r215286;
double r215288 = pow(r215284, r215287);
double r215289 = l;
double r215290 = r215282 / r215289;
double r215291 = pow(r215290, r215287);
double r215292 = r215288 * r215291;
double r215293 = M;
double r215294 = D;
double r215295 = r215293 * r215294;
double r215296 = r215286 * r215282;
double r215297 = r215295 / r215296;
double r215298 = pow(r215297, r215286);
double r215299 = r215287 * r215298;
double r215300 = r215283 / r215289;
double r215301 = r215299 * r215300;
double r215302 = r215285 - r215301;
double r215303 = r215292 * r215302;
return r215303;
}
double f(double d, double h, double l, double M, double D) {
double r215304 = d;
double r215305 = 3.3506520359231006e+239;
bool r215306 = r215304 <= r215305;
double r215307 = cbrt(r215304);
double r215308 = r215307 * r215307;
double r215309 = h;
double r215310 = cbrt(r215309);
double r215311 = r215310 * r215310;
double r215312 = r215308 / r215311;
double r215313 = 1.0;
double r215314 = 2.0;
double r215315 = r215313 / r215314;
double r215316 = pow(r215312, r215315);
double r215317 = r215307 / r215310;
double r215318 = pow(r215317, r215315);
double r215319 = r215316 * r215318;
double r215320 = 1.0;
double r215321 = l;
double r215322 = cbrt(r215321);
double r215323 = r215322 * r215322;
double r215324 = r215320 / r215323;
double r215325 = pow(r215324, r215315);
double r215326 = cbrt(r215323);
double r215327 = r215320 / r215326;
double r215328 = pow(r215327, r215315);
double r215329 = cbrt(r215322);
double r215330 = r215304 / r215329;
double r215331 = pow(r215330, r215315);
double r215332 = r215328 * r215331;
double r215333 = r215325 * r215332;
double r215334 = r215319 * r215333;
double r215335 = M;
double r215336 = D;
double r215337 = r215335 * r215336;
double r215338 = r215314 * r215304;
double r215339 = r215337 / r215338;
double r215340 = pow(r215339, r215314);
double r215341 = r215315 * r215340;
double r215342 = r215311 / r215323;
double r215343 = r215341 * r215342;
double r215344 = r215310 / r215322;
double r215345 = r215343 * r215344;
double r215346 = r215313 - r215345;
double r215347 = r215334 * r215346;
double r215348 = pow(r215304, r215313);
double r215349 = pow(r215348, r215313);
double r215350 = pow(r215309, r215313);
double r215351 = pow(r215321, r215313);
double r215352 = r215350 * r215351;
double r215353 = r215320 / r215352;
double r215354 = 0.5;
double r215355 = pow(r215353, r215354);
double r215356 = r215349 * r215355;
double r215357 = r215313 * r215356;
double r215358 = r215306 ? r215347 : r215357;
return r215358;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if d < 3.3506520359231006e+239Initial program 25.8
rmApplied add-cube-cbrt26.1
Applied add-cube-cbrt26.2
Applied times-frac26.2
Applied unpow-prod-down21.3
rmApplied add-cube-cbrt21.4
Applied *-un-lft-identity21.4
Applied times-frac21.4
Applied unpow-prod-down17.8
rmApplied add-cube-cbrt17.8
Applied add-cube-cbrt17.8
Applied times-frac17.8
Applied associate-*r*14.8
rmApplied add-cube-cbrt14.8
Applied cbrt-prod14.8
Applied *-un-lft-identity14.8
Applied times-frac14.8
Applied unpow-prod-down14.4
if 3.3506520359231006e+239 < d Initial program 32.2
Taylor expanded around 0 15.9
Final simplification14.5
herbie shell --seed 2019356 +o rules:numerics
(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)))))