v + \left(\frac{1}{6} \cdot \left(\left(2 \cdot a1 + 5 \cdot a\right) - aprev\right)\right) \cdot dtv + \left(\frac{1}{6} \cdot \left(\left(2 \cdot a1 + 5 \cdot a\right) - aprev\right)\right) \cdot dtdouble code(double v, double a1, double a, double aprev, double dt) {
return ((double) (v + ((double) (((double) (((double) (1.0 / 6.0)) * ((double) (((double) (((double) (2.0 * a1)) + ((double) (5.0 * a)))) - aprev)))) * dt))));
}
double code(double v, double a1, double a, double aprev, double dt) {
return ((double) (v + ((double) (((double) (((double) (1.0 / 6.0)) * ((double) (((double) (((double) (2.0 * a1)) + ((double) (5.0 * a)))) - 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.3
Final simplification0.3
herbie shell --seed 2020152
(FPCore (v a1 a aprev dt)
:name "(+ v (* (* (/ 1 6) (- (+ (* 2 a1) (* 5 a)) aprev)) dt))"
:precision binary64
(+ v (* (* (/ 1.0 6.0) (- (+ (* 2.0 a1) (* 5.0 a)) aprev)) dt)))