\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\mathsf{fma}\left(\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r222323 = a;
double r222324 = r222323 * r222323;
double r222325 = b;
double r222326 = r222325 * r222325;
double r222327 = r222324 + r222326;
double r222328 = 2.0;
double r222329 = pow(r222327, r222328);
double r222330 = 4.0;
double r222331 = 1.0;
double r222332 = r222331 - r222323;
double r222333 = r222324 * r222332;
double r222334 = 3.0;
double r222335 = r222334 + r222323;
double r222336 = r222326 * r222335;
double r222337 = r222333 + r222336;
double r222338 = r222330 * r222337;
double r222339 = r222329 + r222338;
double r222340 = r222339 - r222331;
return r222340;
}
double f(double a, double b) {
double r222341 = a;
double r222342 = r222341 * r222341;
double r222343 = 1.0;
double r222344 = r222343 - r222341;
double r222345 = b;
double r222346 = r222345 * r222345;
double r222347 = 3.0;
double r222348 = r222347 + r222341;
double r222349 = r222346 * r222348;
double r222350 = fma(r222342, r222344, r222349);
double r222351 = 4.0;
double r222352 = fma(r222341, r222341, r222346);
double r222353 = 2.0;
double r222354 = pow(r222352, r222353);
double r222355 = fma(r222350, r222351, r222354);
double r222356 = r222355 - r222343;
return r222356;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019303 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))