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



Bits error versus x_element



Bits error versus x



Bits error versus dirX



Bits error versus d



Bits error versus z_element



Bits error versus z



Bits error versus dirZ



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