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

Error

Bits error versus x_element

Bits error versus x

Bits error versus dirX

Bits error versus z

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{2^{x_element - \left(x + dirX \cdot z\right)} + 2^{dirY \cdot z}} + z\]
  2. Final simplification0.1

    \[\leadsto \sqrt{2^{x_element - \left(x + dirX \cdot z\right)} + 2^{dirY \cdot z}} + z\]

Reproduce

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