\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))))));
}



Bits error versus h2



Bits error versus h3



Bits error versus h1
Results
Initial program 19.2
Final simplification19.2
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))))