\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 r249179 = d;
double r249180 = h;
double r249181 = r249179 / r249180;
double r249182 = 1.0;
double r249183 = 2.0;
double r249184 = r249182 / r249183;
double r249185 = pow(r249181, r249184);
double r249186 = l;
double r249187 = r249179 / r249186;
double r249188 = pow(r249187, r249184);
double r249189 = r249185 * r249188;
double r249190 = M;
double r249191 = D;
double r249192 = r249190 * r249191;
double r249193 = r249183 * r249179;
double r249194 = r249192 / r249193;
double r249195 = pow(r249194, r249183);
double r249196 = r249184 * r249195;
double r249197 = r249180 / r249186;
double r249198 = r249196 * r249197;
double r249199 = r249182 - r249198;
double r249200 = r249189 * r249199;
return r249200;
}
double f(double d, double h, double l, double M, double D) {
double r249201 = d;
double r249202 = 3.3506520359231006e+239;
bool r249203 = r249201 <= r249202;
double r249204 = cbrt(r249201);
double r249205 = r249204 * r249204;
double r249206 = h;
double r249207 = cbrt(r249206);
double r249208 = r249207 * r249207;
double r249209 = r249205 / r249208;
double r249210 = 1.0;
double r249211 = 2.0;
double r249212 = r249210 / r249211;
double r249213 = pow(r249209, r249212);
double r249214 = r249204 / r249207;
double r249215 = pow(r249214, r249212);
double r249216 = r249213 * r249215;
double r249217 = 1.0;
double r249218 = l;
double r249219 = cbrt(r249218);
double r249220 = r249219 * r249219;
double r249221 = r249217 / r249220;
double r249222 = pow(r249221, r249212);
double r249223 = cbrt(r249220);
double r249224 = r249217 / r249223;
double r249225 = pow(r249224, r249212);
double r249226 = cbrt(r249219);
double r249227 = r249201 / r249226;
double r249228 = pow(r249227, r249212);
double r249229 = r249225 * r249228;
double r249230 = r249222 * r249229;
double r249231 = r249216 * r249230;
double r249232 = M;
double r249233 = D;
double r249234 = r249232 * r249233;
double r249235 = r249211 * r249201;
double r249236 = r249234 / r249235;
double r249237 = pow(r249236, r249211);
double r249238 = r249212 * r249237;
double r249239 = r249208 / r249220;
double r249240 = r249238 * r249239;
double r249241 = r249207 / r249219;
double r249242 = r249240 * r249241;
double r249243 = r249210 - r249242;
double r249244 = r249231 * r249243;
double r249245 = pow(r249201, r249210);
double r249246 = pow(r249245, r249210);
double r249247 = pow(r249206, r249210);
double r249248 = pow(r249218, r249210);
double r249249 = r249247 * r249248;
double r249250 = r249217 / r249249;
double r249251 = 0.5;
double r249252 = pow(r249250, r249251);
double r249253 = r249246 * r249252;
double r249254 = r249210 * r249253;
double r249255 = r249203 ? r249244 : r249254;
return r249255;
}



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
(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)))))