\left(\left(zy \cdot zy - zx \cdot zx\right) + cx\right) \cdot \left(\left(zy \cdot zy - zx \cdot zx\right) + cx\right) - \left(\left(zx \cdot zy + zy \cdot zx\right) + cy\right) \cdot \left(\left(zx \cdot zy + zy \cdot zx\right) + cy\right)
\left(\left(\left(\left(zy \cdot zy - zx \cdot zx\right) + cx\right) - zy \cdot \left(zx + zx\right)\right) - cy\right) \cdot \left(\left(\left(\left(zy \cdot zy - zx \cdot zx\right) + cx\right) + zy \cdot \left(zx + zx\right)\right) + cy\right)
double code(double zy, double zx, double cx, double cy) {
return ((double) (((double) (((double) (((double) (((double) (zy * zy)) - ((double) (zx * zx)))) + cx)) * ((double) (((double) (((double) (zy * zy)) - ((double) (zx * zx)))) + cx)))) - ((double) (((double) (((double) (((double) (zx * zy)) + ((double) (zy * zx)))) + cy)) * ((double) (((double) (((double) (zx * zy)) + ((double) (zy * zx)))) + cy))))));
}
double code(double zy, double zx, double cx, double cy) {
return ((double) (((double) (((double) (((double) (((double) (((double) (zy * zy)) - ((double) (zx * zx)))) + cx)) - ((double) (zy * ((double) (zx + zx)))))) - cy)) * ((double) (((double) (((double) (((double) (((double) (zy * zy)) - ((double) (zx * zx)))) + cx)) + ((double) (zy * ((double) (zx + zx)))))) + cy))));
}



Bits error versus zy



Bits error versus zx



Bits error versus cx



Bits error versus cy
Results
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020153
(FPCore (zy zx cx cy)
:name "(- (* (+ (- (* zy zy) (* zx zx)) cx) (+ (- (* zy zy) (* zx zx)) cx)) (* (+ (+ (* zx zy) (* zy zx)) cy) (+ (+ (* zx zy) (* zy zx)) cy)))"
:precision binary64
(- (* (+ (- (* zy zy) (* zx zx)) cx) (+ (- (* zy zy) (* zx zx)) cx)) (* (+ (+ (* zx zy) (* zy zx)) cy) (+ (+ (* zx zy) (* zy zx)) cy))))