\frac{c0}{2 \cdot w} \cdot \left(\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} + \sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} - M \cdot M}\right)\begin{array}{l}
\mathbf{if}\;d \le -2.9492825602009192 \cdot 10^{-83}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 2.3329283069719116 \cdot 10^{-99}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) - M \cdot M}} \cdot \left(\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) - M \cdot M}} \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) - M \cdot M}}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r45630564 = c0;
double r45630565 = 2.0;
double r45630566 = w;
double r45630567 = r45630565 * r45630566;
double r45630568 = r45630564 / r45630567;
double r45630569 = d;
double r45630570 = r45630569 * r45630569;
double r45630571 = r45630564 * r45630570;
double r45630572 = h;
double r45630573 = r45630566 * r45630572;
double r45630574 = D;
double r45630575 = r45630574 * r45630574;
double r45630576 = r45630573 * r45630575;
double r45630577 = r45630571 / r45630576;
double r45630578 = r45630577 * r45630577;
double r45630579 = M;
double r45630580 = r45630579 * r45630579;
double r45630581 = r45630578 - r45630580;
double r45630582 = sqrt(r45630581);
double r45630583 = r45630577 + r45630582;
double r45630584 = r45630568 * r45630583;
return r45630584;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r45630585 = d;
double r45630586 = -2.9492825602009192e-83;
bool r45630587 = r45630585 <= r45630586;
double r45630588 = 0.0;
double r45630589 = 2.3329283069719116e-99;
bool r45630590 = r45630585 <= r45630589;
double r45630591 = c0;
double r45630592 = w;
double r45630593 = r45630591 / r45630592;
double r45630594 = D;
double r45630595 = r45630585 / r45630594;
double r45630596 = r45630595 * r45630595;
double r45630597 = h;
double r45630598 = r45630596 / r45630597;
double r45630599 = r45630598 * r45630593;
double r45630600 = r45630599 * r45630599;
double r45630601 = M;
double r45630602 = r45630601 * r45630601;
double r45630603 = r45630600 - r45630602;
double r45630604 = sqrt(r45630603);
double r45630605 = r45630599 + r45630604;
double r45630606 = cbrt(r45630605);
double r45630607 = r45630606 * r45630606;
double r45630608 = r45630606 * r45630607;
double r45630609 = 2.0;
double r45630610 = r45630608 / r45630609;
double r45630611 = r45630593 * r45630610;
double r45630612 = r45630590 ? r45630611 : r45630588;
double r45630613 = r45630587 ? r45630588 : r45630612;
return r45630613;
}



Bits error versus c0



Bits error versus w



Bits error versus h



Bits error versus D



Bits error versus d



Bits error versus M
Results
if d < -2.9492825602009192e-83 or 2.3329283069719116e-99 < d Initial program 57.8
Simplified54.7
Taylor expanded around -inf 32.1
if -2.9492825602009192e-83 < d < 2.3329283069719116e-99Initial program 59.5
Simplified46.4
rmApplied pow146.4
Applied pow146.4
Applied pow-prod-down46.4
Simplified45.0
rmApplied add-cube-cbrt45.1
Final simplification34.5
herbie shell --seed 2019120 +o rules:numerics
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
(* (/ c0 (* 2 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M))))))