\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(1 - a \cdot a\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)
\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(1 - a \cdot a\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)
double code(double c, double a, double b, double d, double R) {
return ((double) (((double) (((double) (c - ((double) (a * b)))) * ((double) (c - ((double) (a * b)))))) - ((double) (((double) (1.0 - ((double) (a * a)))) * ((double) (((double) (d - ((double) (b * b)))) - ((double) (R * R))))))));
}
double code(double c, double a, double b, double d, double R) {
return ((double) (((double) (((double) (c - ((double) (a * b)))) * ((double) (c - ((double) (a * b)))))) - ((double) (((double) (1.0 - ((double) (a * a)))) * ((double) (((double) (d - ((double) (b * b)))) - ((double) (R * R))))))));
}



Bits error versus c



Bits error versus a



Bits error versus b



Bits error versus d



Bits error versus R
Results
Initial program 7.4
Final simplification7.4
herbie shell --seed 2020153
(FPCore (c a b d R)
:name "(- (* (- c (* a b)) (- c (* a b))) (* (- 1 (* a a)) (- (- d (* b b)) (* R R))))"
:precision binary64
(- (* (- c (* a b)) (- c (* a b))) (* (- 1.0 (* a a)) (- (- d (* b b)) (* R R)))))