Average Error: 0.0 → 0.0
Time: 1.5s
Precision: binary64
\[\left(avx \cdot avx + avy \cdot avy\right) + avz \cdot avz\]
\[\left(avx \cdot avx + avy \cdot avy\right) + avz \cdot avz\]
\left(avx \cdot avx + avy \cdot avy\right) + avz \cdot avz
\left(avx \cdot avx + avy \cdot avy\right) + avz \cdot avz
double code(double avx, double avy, double avz) {
	return ((double) (((double) (((double) (avx * avx)) + ((double) (avy * avy)))) + ((double) (avz * avz))));
}
double code(double avx, double avy, double avz) {
	return ((double) (((double) (((double) (avx * avx)) + ((double) (avy * avy)))) + ((double) (avz * avz))));
}

Error

Bits error versus avx

Bits error versus avy

Bits error versus avz

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[\left(avx \cdot avx + avy \cdot avy\right) + avz \cdot avz\]
  2. Final simplification0.0

    \[\leadsto \left(avx \cdot avx + avy \cdot avy\right) + avz \cdot avz\]

Reproduce

herbie shell --seed 2020153 
(FPCore (avx avy avz)
  :name "(+ (+ (* avx avx) (* avy avy)) (* avz avz))"
  :precision binary64
  (+ (+ (* avx avx) (* avy avy)) (* avz avz)))