\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}\;c0 \le 4.0744135505134066 \cdot 10^{-238}:\\
\;\;\;\;0\\
\mathbf{elif}\;c0 \le 1.369182672428857 \cdot 10^{-186}:\\
\;\;\;\;\frac{2 \cdot \left(\left(c0 \cdot d\right) \cdot \left(\frac{1}{w \cdot D} \cdot \frac{\frac{c0 \cdot d}{w \cdot D}}{h}\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r43899285 = c0;
double r43899286 = 2.0;
double r43899287 = w;
double r43899288 = r43899286 * r43899287;
double r43899289 = r43899285 / r43899288;
double r43899290 = d;
double r43899291 = r43899290 * r43899290;
double r43899292 = r43899285 * r43899291;
double r43899293 = h;
double r43899294 = r43899287 * r43899293;
double r43899295 = D;
double r43899296 = r43899295 * r43899295;
double r43899297 = r43899294 * r43899296;
double r43899298 = r43899292 / r43899297;
double r43899299 = r43899298 * r43899298;
double r43899300 = M;
double r43899301 = r43899300 * r43899300;
double r43899302 = r43899299 - r43899301;
double r43899303 = sqrt(r43899302);
double r43899304 = r43899298 + r43899303;
double r43899305 = r43899289 * r43899304;
return r43899305;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r43899306 = c0;
double r43899307 = 4.0744135505134066e-238;
bool r43899308 = r43899306 <= r43899307;
double r43899309 = 0.0;
double r43899310 = 1.369182672428857e-186;
bool r43899311 = r43899306 <= r43899310;
double r43899312 = 2.0;
double r43899313 = d;
double r43899314 = r43899306 * r43899313;
double r43899315 = 1.0;
double r43899316 = w;
double r43899317 = D;
double r43899318 = r43899316 * r43899317;
double r43899319 = r43899315 / r43899318;
double r43899320 = r43899314 / r43899318;
double r43899321 = h;
double r43899322 = r43899320 / r43899321;
double r43899323 = r43899319 * r43899322;
double r43899324 = r43899314 * r43899323;
double r43899325 = r43899312 * r43899324;
double r43899326 = r43899325 / r43899312;
double r43899327 = r43899311 ? r43899326 : r43899309;
double r43899328 = r43899308 ? r43899309 : r43899327;
return r43899328;
}



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 c0 < 4.0744135505134066e-238 or 1.369182672428857e-186 < c0 Initial program 58.1
Simplified52.0
Taylor expanded around -inf 34.0
if 4.0744135505134066e-238 < c0 < 1.369182672428857e-186Initial program 57.7
Simplified51.1
Taylor expanded around 0 60.3
Simplified37.2
rmApplied *-un-lft-identity37.2
Applied times-frac35.3
Simplified35.3
rmApplied div-inv35.5
Applied associate-*l*37.7
Final simplification34.2
herbie shell --seed 2019120
(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))))))