\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(a \cdot a + b \cdot b\right)}^{2} - 1\right)double f(double a, double b) {
double r174514 = a;
double r174515 = r174514 * r174514;
double r174516 = b;
double r174517 = r174516 * r174516;
double r174518 = r174515 + r174517;
double r174519 = 2.0;
double r174520 = pow(r174518, r174519);
double r174521 = 4.0;
double r174522 = 1.0;
double r174523 = r174522 + r174514;
double r174524 = r174515 * r174523;
double r174525 = 3.0;
double r174526 = r174525 * r174514;
double r174527 = r174522 - r174526;
double r174528 = r174517 * r174527;
double r174529 = r174524 + r174528;
double r174530 = r174521 * r174529;
double r174531 = r174520 + r174530;
double r174532 = r174531 - r174522;
return r174532;
}
double f(double a, double b) {
double r174533 = 4.0;
double r174534 = a;
double r174535 = r174534 * r174534;
double r174536 = 1.0;
double r174537 = r174536 + r174534;
double r174538 = b;
double r174539 = r174538 * r174538;
double r174540 = 3.0;
double r174541 = r174540 * r174534;
double r174542 = r174536 - r174541;
double r174543 = r174539 * r174542;
double r174544 = fma(r174535, r174537, r174543);
double r174545 = r174535 + r174539;
double r174546 = 2.0;
double r174547 = pow(r174545, r174546);
double r174548 = r174547 - r174536;
double r174549 = fma(r174533, r174544, r174548);
return r174549;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020002 +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))