\frac{x}{\left(\left(\left(s \cdot R\right) \cdot R\right) \cdot R\right) \cdot \sqrt{1 - {\left(\frac{x}{R}\right)}^{2}}}\begin{array}{l}
\mathbf{if}\;x \le -3.9377723723314305 \cdot 10^{-56} \lor \neg \left(x \le -1.3579511830668391 \cdot 10^{-243}\right):\\
\;\;\;\;\frac{x}{\left(\left(\left(s \cdot R\right) \cdot R\right) \cdot R\right) \cdot \sqrt{1 - {\left(\frac{x}{R}\right)}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{s}}{{R}^{3} \cdot \sqrt{1 - {\left(\frac{x}{R}\right)}^{2}}}\\
\end{array}double code(double x, double s, double R) {
return ((double) (x / ((double) (((double) (((double) (((double) (s * R)) * R)) * R)) * ((double) sqrt(((double) (1.0 - ((double) pow(((double) (x / R)), 2.0))))))))));
}
double code(double x, double s, double R) {
double VAR;
if (((x <= -3.9377723723314305e-56) || !(x <= -1.357951183066839e-243))) {
VAR = ((double) (x / ((double) (((double) (((double) (((double) (s * R)) * R)) * R)) * ((double) sqrt(((double) (1.0 - ((double) pow(((double) (x / R)), 2.0))))))))));
} else {
VAR = ((double) (((double) (x / s)) / ((double) (((double) pow(R, 3.0)) * ((double) sqrt(((double) (1.0 - ((double) pow(((double) (x / R)), 2.0))))))))));
}
return VAR;
}



Bits error versus x



Bits error versus s



Bits error versus R
Results
if x < -3.9377723723314305e-56 or -1.3579511830668391e-243 < x Initial program 5.7
if -3.9377723723314305e-56 < x < -1.3579511830668391e-243Initial program 4.8
Simplified7.9
Final simplification6.2
herbie shell --seed 2020153
(FPCore (x s R)
:name "(/ x (* (* (* (* s R) R) R) (sqrt (- 1 (pow (/ x R) 2)))))"
:precision binary64
(/ x (* (* (* (* s R) R) R) (sqrt (- 1.0 (pow (/ x R) 2.0))))))