\frac{\left(n - 1\right) \cdot \left(\left(\left(\left({n}^{3} \cdot s_4 - 3 \cdot \left({n}^{2} \cdot s_4\right)\right) + 6 \cdot \left(n \cdot {s_2}^{2}\right)\right) + 3 \cdot \left(n \cdot s_4\right)\right) - 9 \cdot {s_2}^{2}\right)}{{n}^{5}}\frac{s_4 \cdot \left(3 \cdot n + \left({n}^{3} - 3 \cdot {n}^{2}\right)\right) + \left(6 \cdot \left(n \cdot {s_2}^{2}\right) - 9 \cdot {s_2}^{2}\right)}{{n}^{5}} \cdot \left(n - 1\right)double code(double n, double s_4, double s_2) {
return ((double) (((double) (((double) (n - 1.0)) * ((double) (((double) (((double) (((double) (((double) (((double) pow(n, 3.0)) * s_4)) - ((double) (3.0 * ((double) (((double) pow(n, 2.0)) * s_4)))))) + ((double) (6.0 * ((double) (n * ((double) pow(s_2, 2.0)))))))) + ((double) (3.0 * ((double) (n * s_4)))))) - ((double) (9.0 * ((double) pow(s_2, 2.0)))))))) / ((double) pow(n, 5.0))));
}
double code(double n, double s_4, double s_2) {
return ((double) (((double) (((double) (((double) (s_4 * ((double) (((double) (3.0 * n)) + ((double) (((double) pow(n, 3.0)) - ((double) (3.0 * ((double) pow(n, 2.0)))))))))) + ((double) (((double) (6.0 * ((double) (n * ((double) pow(s_2, 2.0)))))) - ((double) (9.0 * ((double) pow(s_2, 2.0)))))))) / ((double) pow(n, 5.0)))) * ((double) (n - 1.0))));
}



Bits error versus n



Bits error versus s_4



Bits error versus s_2
Results
Initial program 51.0
Simplified50.6
Final simplification50.6
herbie shell --seed 2020153
(FPCore (n s_4 s_2)
:name "(/ (* (- n 1) (- (+ (+ (- (* (pow n 3) s_4) (* 3 (* (pow n 2) s_4))) (* 6 (* n (pow s_2 2)))) (* 3 (* n s_4))) (* 9 (pow s_2 2)))) (pow n 5))"
:precision binary64
(/ (* (- n 1.0) (- (+ (+ (- (* (pow n 3.0) s_4) (* 3.0 (* (pow n 2.0) s_4))) (* 6.0 (* n (pow s_2 2.0)))) (* 3.0 (* n s_4))) (* 9.0 (pow s_2 2.0)))) (pow n 5.0)))