\left(\left(\left(y - Y\right) \cdot Stride + \left(x1 - X\right) \cdot 4\right) + \left(y - Y\right) \cdot Stride\right) + \left(\left(x2 - x1\right) - X\right) \cdot 4
4 \cdot \left(\left(x1 - X\right) + \left(\left(x2 - x1\right) - X\right)\right) + \left(y - Y\right) \cdot \left(Stride + Stride\right)
double code(double y, double Y, double Stride, double x1, double X, double x2) {
return ((double) (((double) (((double) (((double) (((double) (y - Y)) * Stride)) + ((double) (((double) (x1 - X)) * 4.0)))) + ((double) (((double) (y - Y)) * Stride)))) + ((double) (((double) (((double) (x2 - x1)) - X)) * 4.0))));
}
double code(double y, double Y, double Stride, double x1, double X, double x2) {
return ((double) (((double) (4.0 * ((double) (((double) (x1 - X)) + ((double) (((double) (x2 - x1)) - X)))))) + ((double) (((double) (y - Y)) * ((double) (Stride + Stride))))));
}



Bits error versus y



Bits error versus Y



Bits error versus Stride



Bits error versus x1



Bits error versus X



Bits error versus x2
Results
Initial program 13.7
Simplified8.6
Final simplification8.6
herbie shell --seed 2020153
(FPCore (y Y Stride x1 X x2)
:name "(+ (+ (+ (* (- y Y) Stride) (* (- x1 X) 4)) (* (- y Y) Stride)) (* (- (- x2 x1) X) 4))"
:precision binary64
(+ (+ (+ (* (- y Y) Stride) (* (- x1 X) 4.0)) (* (- y Y) Stride)) (* (- (- x2 x1) X) 4.0)))