\sqrt{2^{x_element - \left(x + dirX \cdot z\right)} + 2^{dirY \cdot z}} + z\sqrt{2^{x_element - \left(x + dirX \cdot z\right)} + 2^{dirY \cdot z}} + zdouble code(double x_element, double x, double dirX, double z, double dirY) {
return ((double) (((double) sqrt(((double) (((double) exp2(((double) (x_element - ((double) (x + ((double) (dirX * z)))))))) + ((double) exp2(((double) (dirY * z)))))))) + z));
}
double code(double x_element, double x, double dirX, double z, double dirY) {
return ((double) (((double) sqrt(((double) (((double) exp2(((double) (x_element - ((double) (x + ((double) (dirX * z)))))))) + ((double) exp2(((double) (dirY * z)))))))) + z));
}



Bits error versus x_element



Bits error versus x



Bits error versus dirX



Bits error versus z



Bits error versus dirY
Results
Initial program 0.1
Final simplification0.1
herbie shell --seed 2020153
(FPCore (x_element x dirX z dirY)
:name "(+ (sqrt (+ (exp2 (- x_element (+ x (* dirX z)))) (exp2 (* dirY z)))) z)"
:precision binary64
(+ (sqrt (+ (exp2 (- x_element (+ x (* dirX z)))) (exp2 (* dirY z)))) z))