Average Error: 0.1 → 0.1
Time: 6.0s
Precision: binary64
\[\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}} + 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}} + 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}} + 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));
}
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));
}

Error

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.1

    \[\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\]
  2. Final simplification0.1

    \[\leadsto \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\]

Reproduce

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