\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\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1double f(double a, double b) {
double r86528 = a;
double r86529 = r86528 * r86528;
double r86530 = b;
double r86531 = r86530 * r86530;
double r86532 = r86529 + r86531;
double r86533 = 2.0;
double r86534 = pow(r86532, r86533);
double r86535 = 4.0;
double r86536 = 1.0;
double r86537 = r86536 + r86528;
double r86538 = r86529 * r86537;
double r86539 = 3.0;
double r86540 = r86539 * r86528;
double r86541 = r86536 - r86540;
double r86542 = r86531 * r86541;
double r86543 = r86538 + r86542;
double r86544 = r86535 * r86543;
double r86545 = r86534 + r86544;
double r86546 = r86545 - r86536;
return r86546;
}
double f(double a, double b) {
double r86547 = a;
double r86548 = r86547 * r86547;
double r86549 = b;
double r86550 = r86549 * r86549;
double r86551 = r86548 + r86550;
double r86552 = 2.0;
double r86553 = pow(r86551, r86552);
double r86554 = 1.0;
double r86555 = r86547 + r86554;
double r86556 = r86548 * r86555;
double r86557 = 3.0;
double r86558 = r86557 * r86547;
double r86559 = r86554 - r86558;
double r86560 = r86550 * r86559;
double r86561 = r86556 + r86560;
double r86562 = 4.0;
double r86563 = r86561 * r86562;
double r86564 = r86553 + r86563;
double r86565 = r86564 - r86554;
return r86565;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))