Average Error: 13.7 → 8.6
Time: 2.6s
Precision: binary64
\[\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)\]
\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))))));
}

Error

Bits error versus y

Bits error versus Y

Bits error versus Stride

Bits error versus x1

Bits error versus X

Bits error versus x2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 13.7

    \[\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\]
  2. Simplified8.6

    \[\leadsto \color{blue}{4 \cdot \left(\left(x1 - X\right) + \left(\left(x2 - x1\right) - X\right)\right) + \left(y - Y\right) \cdot \left(Stride + Stride\right)}\]
  3. Final simplification8.6

    \[\leadsto 4 \cdot \left(\left(x1 - X\right) + \left(\left(x2 - x1\right) - X\right)\right) + \left(y - Y\right) \cdot \left(Stride + Stride\right)\]

Reproduce

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)))