\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}
t_0 := \left(w \cdot h\right) \cdot \left(D \cdot D\right)\\
t_1 := \frac{c0}{2 \cdot w}\\
t_2 := c0 \cdot \left(d \cdot d\right)\\
t_3 := \frac{t_2}{t_0}\\
t_4 := \sqrt{t_3 \cdot t_3 - M \cdot M}\\
t_5 := t_1 \cdot \left(t_3 + t_4\right)\\
\mathbf{if}\;t_5 \leq -\infty:\\
\;\;\;\;0.25 \cdot \frac{D \cdot \left(D \cdot \left(h \cdot {M}^{2}\right)\right)}{{d}^{2}}\\
\mathbf{elif}\;t_5 \leq 2.0377244853088395 \cdot 10^{+201}:\\
\;\;\;\;t_1 \cdot \left(t_4 + \frac{1}{\frac{t_0}{t_2}}\right)\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\frac{{D}^{2} \cdot \left(M \cdot \left(h \cdot M\right)\right)}{d}}{d}\\
\end{array}
(FPCore (c0 w h D d M)
:precision binary64
(*
(/ c0 (* 2.0 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))))))(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (* (* w h) (* D D)))
(t_1 (/ c0 (* 2.0 w)))
(t_2 (* c0 (* d d)))
(t_3 (/ t_2 t_0))
(t_4 (sqrt (- (* t_3 t_3) (* M M))))
(t_5 (* t_1 (+ t_3 t_4))))
(if (<= t_5 (- INFINITY))
(* 0.25 (/ (* D (* D (* h (pow M 2.0)))) (pow d 2.0)))
(if (<= t_5 2.0377244853088395e+201)
(* t_1 (+ t_4 (/ 1.0 (/ t_0 t_2))))
(* 0.25 (/ (/ (* (pow D 2.0) (* M (* h M))) d) d))))))double code(double c0, double w, double h, double D, double d, double M) {
return (c0 / (2.0 * 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)));
}
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (w * h) * (D * D);
double t_1 = c0 / (2.0 * w);
double t_2 = c0 * (d * d);
double t_3 = t_2 / t_0;
double t_4 = sqrt((t_3 * t_3) - (M * M));
double t_5 = t_1 * (t_3 + t_4);
double tmp;
if (t_5 <= -((double) INFINITY)) {
tmp = 0.25 * ((D * (D * (h * pow(M, 2.0)))) / pow(d, 2.0));
} else if (t_5 <= 2.0377244853088395e+201) {
tmp = t_1 * (t_4 + (1.0 / (t_0 / t_2)));
} else {
tmp = 0.25 * (((pow(D, 2.0) * (M * (h * M))) / d) / d);
}
return tmp;
}



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 (*.f64 (/.f64 c0 (*.f64 2 w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) < -inf.0Initial program 64.0
Taylor expanded in c0 around -inf 51.5
Taylor expanded in c0 around 0 49.2
Applied unpow2_binary6449.2
Applied associate-*l*_binary6448.9
if -inf.0 < (*.f64 (/.f64 c0 (*.f64 2 w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) < 2.0377244853088395e201Initial program 21.3
Applied clear-num_binary6423.8
if 2.0377244853088395e201 < (*.f64 (/.f64 c0 (*.f64 2 w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) Initial program 63.8
Taylor expanded in c0 around -inf 42.1
Taylor expanded in c0 around 0 35.0
Applied unpow2_binary6435.0
Applied associate-*l*_binary6433.0
Applied unpow2_binary6433.0
Applied associate-/r*_binary6429.6
Final simplification29.9
herbie shell --seed 2022081
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
:precision binary64
(* (/ c0 (* 2.0 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))))))