\left(\left(\left(\left(\left(\left(\left({a}^{2} + \left(2 \cdot a\right) \cdot {x}^{2}\right) - \left(2 \cdot a\right) \cdot {y}^{2}\right) + a\right) - {b}^{2}\right) - \left(\left(4 \cdot b\right) \cdot x\right) \cdot y\right) + {x}^{4}\right) - \left(6 \cdot {x}^{2}\right) \cdot {y}^{2}\right) + {y}^{4}\left(\left(\left(\left(\left(\left(\left({a}^{2} + \left(2 \cdot a\right) \cdot {x}^{2}\right) - \left(2 \cdot a\right) \cdot {y}^{2}\right) + a\right) - {b}^{2}\right) - \left(\left(4 \cdot b\right) \cdot x\right) \cdot y\right) + {x}^{4}\right) - \left(6 \cdot {x}^{2}\right) \cdot {y}^{2}\right) + {y}^{4}double code(double a, double x, double y, double b) {
return ((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) pow(a, 2.0)) + ((double) (((double) (2.0 * a)) * ((double) pow(x, 2.0)))))) - ((double) (((double) (2.0 * a)) * ((double) pow(y, 2.0)))))) + a)) - ((double) pow(b, 2.0)))) - ((double) (((double) (((double) (4.0 * b)) * x)) * y)))) + ((double) pow(x, 4.0)))) - ((double) (((double) (6.0 * ((double) pow(x, 2.0)))) * ((double) pow(y, 2.0)))))) + ((double) pow(y, 4.0))));
}
double code(double a, double x, double y, double b) {
return ((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) pow(a, 2.0)) + ((double) (((double) (2.0 * a)) * ((double) pow(x, 2.0)))))) - ((double) (((double) (2.0 * a)) * ((double) pow(y, 2.0)))))) + a)) - ((double) pow(b, 2.0)))) - ((double) (((double) (((double) (4.0 * b)) * x)) * y)))) + ((double) pow(x, 4.0)))) - ((double) (((double) (6.0 * ((double) pow(x, 2.0)))) * ((double) pow(y, 2.0)))))) + ((double) pow(y, 4.0))));
}



Bits error versus a



Bits error versus x



Bits error versus y



Bits error versus b
Results
Initial program 0.0
Final simplification0.0
herbie shell --seed 2020153
(FPCore (a x y b)
:name "(+ (- (+ (- (- (+ (- (+ (pow a 2) (* (* 2 a) (pow x 2))) (* (* 2 a) (pow y 2))) a) (pow b 2)) (* (* (* 4 b) x) y)) (pow x 4)) (* (* 6 (pow x 2)) (pow y 2))) (pow y 4))"
:precision binary64
(+ (- (+ (- (- (+ (- (+ (pow a 2.0) (* (* 2.0 a) (pow x 2.0))) (* (* 2.0 a) (pow y 2.0))) a) (pow b 2.0)) (* (* (* 4.0 b) x) y)) (pow x 4.0)) (* (* 6.0 (pow x 2.0)) (pow y 2.0))) (pow y 4.0)))