v + \left(\left(\frac{5}{12} \cdot a1 + \frac{2}{3} \cdot a\right) - \frac{1}{12} \cdot aprev\right) \cdot dtv + \left(\left(\frac{5}{12} \cdot a1 + \frac{2}{3} \cdot a\right) - \frac{1}{12} \cdot aprev\right) \cdot dtdouble code(double v, double a1, double a, double aprev, double dt) {
return ((double) (v + ((double) (((double) (((double) (((double) (((double) (5.0 / 12.0)) * a1)) + ((double) (((double) (2.0 / 3.0)) * a)))) - ((double) (((double) (1.0 / 12.0)) * aprev)))) * dt))));
}
double code(double v, double a1, double a, double aprev, double dt) {
return ((double) (v + ((double) (((double) (((double) (((double) (((double) (5.0 / 12.0)) * a1)) + ((double) (((double) (2.0 / 3.0)) * a)))) - ((double) (((double) (1.0 / 12.0)) * aprev)))) * dt))));
}



Bits error versus v



Bits error versus a1



Bits error versus a



Bits error versus aprev



Bits error versus dt
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2020153
(FPCore (v a1 a aprev dt)
:name "(+ v (* (- (+ (* (/ 5 12) a1) (* (/ 2 3) a)) (* (/ 1 12) aprev)) dt))"
:precision binary64
(+ v (* (- (+ (* (/ 5.0 12.0) a1) (* (/ 2.0 3.0) a)) (* (/ 1.0 12.0) aprev)) dt)))