0.0 + \left(\left(\left(w0 \cdot \left(0.0 - m0\right)\right) \cdot \left(-3 \cdot \left(\left(1 \cdot \frac{a0}{w0}\right) \cdot \frac{a0}{w0}\right)\right)\right) \cdot 1 + \left(\left(\left(w1 \cdot \left(0.0 - m1\right)\right) \cdot \left(-3 \cdot \left(\left(1 \cdot \frac{a1}{w1}\right) \cdot \frac{a1}{w1}\right)\right)\right) \cdot 1 + \left(\left(\left(w2 \cdot \left(0.0 - m2\right)\right) \cdot \left(-3 \cdot \left(\left(1 \cdot \frac{a2}{w2}\right) \cdot \frac{a2}{w2}\right)\right)\right) \cdot 1 + 0.0\right)\right)\right)\left(0.0 + 1 \cdot \left(-3 \cdot \left(\left(\left(1 \cdot \frac{a0}{w0}\right) \cdot \frac{a0}{w0}\right) \cdot \left(w0 \cdot \left(0.0 - m0\right)\right) + \left(\left(1 \cdot \frac{a1}{w1}\right) \cdot \frac{a1}{w1}\right) \cdot \left(w1 \cdot \left(0.0 - m1\right)\right)\right) + \left(w2 \cdot \left(0.0 - m2\right)\right) \cdot \left(-3 \cdot \left(\left(1 \cdot \frac{a2}{w2}\right) \cdot \frac{a2}{w2}\right)\right)\right)\right) + 0.0double code(double w0, double m0, double a0, double w1, double m1, double a1, double w2, double m2, double a2) {
return ((double) (0.0 + ((double) (((double) (((double) (((double) (w0 * ((double) (0.0 - m0)))) * ((double) (-3.0 * ((double) (((double) (1.0 * ((double) (a0 / w0)))) * ((double) (a0 / w0)))))))) * 1.0)) + ((double) (((double) (((double) (((double) (w1 * ((double) (0.0 - m1)))) * ((double) (-3.0 * ((double) (((double) (1.0 * ((double) (a1 / w1)))) * ((double) (a1 / w1)))))))) * 1.0)) + ((double) (((double) (((double) (((double) (w2 * ((double) (0.0 - m2)))) * ((double) (-3.0 * ((double) (((double) (1.0 * ((double) (a2 / w2)))) * ((double) (a2 / w2)))))))) * 1.0)) + 0.0))))))));
}
double code(double w0, double m0, double a0, double w1, double m1, double a1, double w2, double m2, double a2) {
return ((double) (((double) (0.0 + ((double) (1.0 * ((double) (((double) (-3.0 * ((double) (((double) (((double) (((double) (1.0 * ((double) (a0 / w0)))) * ((double) (a0 / w0)))) * ((double) (w0 * ((double) (0.0 - m0)))))) + ((double) (((double) (((double) (1.0 * ((double) (a1 / w1)))) * ((double) (a1 / w1)))) * ((double) (w1 * ((double) (0.0 - m1)))))))))) + ((double) (((double) (w2 * ((double) (0.0 - m2)))) * ((double) (-3.0 * ((double) (((double) (1.0 * ((double) (a2 / w2)))) * ((double) (a2 / w2)))))))))))))) + 0.0));
}



Bits error versus w0



Bits error versus m0



Bits error versus a0



Bits error versus w1



Bits error versus m1



Bits error versus a1



Bits error versus w2



Bits error versus m2



Bits error versus a2
Results
Initial program 38.1
Simplified38.1
Final simplification38.1
herbie shell --seed 2020153
(FPCore (w0 m0 a0 w1 m1 a1 w2 m2 a2)
:name "(+ 0.0 (+ (* (* (* w0 (- 0.0 m0)) (* -3 (* (* 1 (/ a0 w0)) (/ a0 w0)))) 1) (+ (* (* (* w1 (- 0.0 m1)) (* -3 (* (* 1 (/ a1 w1)) (/ a1 w1)))) 1) (+ (* (* (* w2 (- 0.0 m2)) (* -3 (* (* 1 (/ a2 w2)) (/ a2 w2)))) 1) 0.0))))"
:precision binary64
(+ 0.0 (+ (* (* (* w0 (- 0.0 m0)) (* -3.0 (* (* 1.0 (/ a0 w0)) (/ a0 w0)))) 1.0) (+ (* (* (* w1 (- 0.0 m1)) (* -3.0 (* (* 1.0 (/ a1 w1)) (/ a1 w1)))) 1.0) (+ (* (* (* w2 (- 0.0 m2)) (* -3.0 (* (* 1.0 (/ a2 w2)) (/ a2 w2)))) 1.0) 0.0)))))