\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 -1.960688023451719 \cdot 10^{-143}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 3.860215906667738 \cdot 10^{-266}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r4791197 = c0;
double r4791198 = 2.0;
double r4791199 = w;
double r4791200 = r4791198 * r4791199;
double r4791201 = r4791197 / r4791200;
double r4791202 = d;
double r4791203 = r4791202 * r4791202;
double r4791204 = r4791197 * r4791203;
double r4791205 = h;
double r4791206 = r4791199 * r4791205;
double r4791207 = D;
double r4791208 = r4791207 * r4791207;
double r4791209 = r4791206 * r4791208;
double r4791210 = r4791204 / r4791209;
double r4791211 = r4791210 * r4791210;
double r4791212 = M;
double r4791213 = r4791212 * r4791212;
double r4791214 = r4791211 - r4791213;
double r4791215 = sqrt(r4791214);
double r4791216 = r4791210 + r4791215;
double r4791217 = r4791201 * r4791216;
return r4791217;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r4791218 = d;
double r4791219 = -1.960688023451719e-143;
bool r4791220 = r4791218 <= r4791219;
double r4791221 = 0.0;
double r4791222 = 3.860215906667738e-266;
bool r4791223 = r4791218 <= r4791222;
double r4791224 = c0;
double r4791225 = w;
double r4791226 = r4791224 / r4791225;
double r4791227 = D;
double r4791228 = r4791218 / r4791227;
double r4791229 = r4791228 * r4791228;
double r4791230 = h;
double r4791231 = r4791229 / r4791230;
double r4791232 = r4791231 * r4791226;
double r4791233 = M;
double r4791234 = r4791232 + r4791233;
double r4791235 = sqrt(r4791234);
double r4791236 = r4791232 - r4791233;
double r4791237 = sqrt(r4791236);
double r4791238 = fma(r4791235, r4791237, r4791232);
double r4791239 = 2.0;
double r4791240 = r4791238 / r4791239;
double r4791241 = r4791226 * r4791240;
double r4791242 = r4791223 ? r4791241 : r4791221;
double r4791243 = r4791220 ? r4791221 : r4791242;
return r4791243;
}



Bits error versus c0



Bits error versus w



Bits error versus h



Bits error versus D



Bits error versus d



Bits error versus M
if d < -1.960688023451719e-143 or 3.860215906667738e-266 < d Initial program 57.7
Simplified53.1
Taylor expanded around inf 34.3
Taylor expanded around 0 32.9
if -1.960688023451719e-143 < d < 3.860215906667738e-266Initial program 60.6
Simplified42.8
rmApplied difference-of-squares42.8
Applied sqrt-prod46.8
Applied fma-def46.8
Final simplification33.8
herbie shell --seed 2019162 +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))))))