Average Error: 19.2 → 19.2
Time: 3.3s
Precision: binary64
\[\left({h2}^{2} \cdot {h3}^{2} + {h1}^{2} \cdot {h3}^{2}\right) + {h1}^{2} \cdot {h2}^{2}\]
\[\left({h2}^{2} \cdot {h3}^{2} + {h1}^{2} \cdot {h3}^{2}\right) + {h1}^{2} \cdot {h2}^{2}\]
\left({h2}^{2} \cdot {h3}^{2} + {h1}^{2} \cdot {h3}^{2}\right) + {h1}^{2} \cdot {h2}^{2}
\left({h2}^{2} \cdot {h3}^{2} + {h1}^{2} \cdot {h3}^{2}\right) + {h1}^{2} \cdot {h2}^{2}
double code(double h2, double h3, double h1) {
	return ((double) (((double) (((double) (((double) pow(h2, 2.0)) * ((double) pow(h3, 2.0)))) + ((double) (((double) pow(h1, 2.0)) * ((double) pow(h3, 2.0)))))) + ((double) (((double) pow(h1, 2.0)) * ((double) pow(h2, 2.0))))));
}
double code(double h2, double h3, double h1) {
	return ((double) (((double) (((double) (((double) pow(h2, 2.0)) * ((double) pow(h3, 2.0)))) + ((double) (((double) pow(h1, 2.0)) * ((double) pow(h3, 2.0)))))) + ((double) (((double) pow(h1, 2.0)) * ((double) pow(h2, 2.0))))));
}

Error

Bits error versus h2

Bits error versus h3

Bits error versus h1

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 19.2

    \[\left({h2}^{2} \cdot {h3}^{2} + {h1}^{2} \cdot {h3}^{2}\right) + {h1}^{2} \cdot {h2}^{2}\]
  2. Final simplification19.2

    \[\leadsto \left({h2}^{2} \cdot {h3}^{2} + {h1}^{2} \cdot {h3}^{2}\right) + {h1}^{2} \cdot {h2}^{2}\]

Reproduce

herbie shell --seed 2020153 
(FPCore (h2 h3 h1)
  :name "(+ (+ (* (pow h2 2) (pow h3 2)) (* (pow h1 2) (pow h3 2))) (* (pow h1 2) (pow h2 2)))"
  :precision binary64
  (+ (+ (* (pow h2 2.0) (pow h3 2.0)) (* (pow h1 2.0) (pow h3 2.0))) (* (pow h1 2.0) (pow h2 2.0))))