\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(1 - 3 \cdot a\right)\right)\right) - 1\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r113503 = a;
double r113504 = r113503 * r113503;
double r113505 = b;
double r113506 = r113505 * r113505;
double r113507 = r113504 + r113506;
double r113508 = 2.0;
double r113509 = pow(r113507, r113508);
double r113510 = 4.0;
double r113511 = 1.0;
double r113512 = r113511 + r113503;
double r113513 = r113504 * r113512;
double r113514 = 3.0;
double r113515 = r113514 * r113503;
double r113516 = r113511 - r113515;
double r113517 = r113506 * r113516;
double r113518 = r113513 + r113517;
double r113519 = r113510 * r113518;
double r113520 = r113509 + r113519;
double r113521 = r113520 - r113511;
return r113521;
}
double f(double a, double b) {
double r113522 = 4.0;
double r113523 = a;
double r113524 = r113523 * r113523;
double r113525 = 1.0;
double r113526 = r113525 + r113523;
double r113527 = b;
double r113528 = r113527 * r113527;
double r113529 = 3.0;
double r113530 = r113529 * r113523;
double r113531 = r113525 - r113530;
double r113532 = r113528 * r113531;
double r113533 = fma(r113524, r113526, r113532);
double r113534 = fma(r113523, r113523, r113528);
double r113535 = 2.0;
double r113536 = pow(r113534, r113535);
double r113537 = fma(r113522, r113533, r113536);
double r113538 = r113537 - r113525;
return r113538;
}



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 (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))