\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} + 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) - 1double f(double a, double b) {
double r187632 = a;
double r187633 = r187632 * r187632;
double r187634 = b;
double r187635 = r187634 * r187634;
double r187636 = r187633 + r187635;
double r187637 = 2.0;
double r187638 = pow(r187636, r187637);
double r187639 = 4.0;
double r187640 = 1.0;
double r187641 = r187640 + r187632;
double r187642 = r187633 * r187641;
double r187643 = 3.0;
double r187644 = r187643 * r187632;
double r187645 = r187640 - r187644;
double r187646 = r187635 * r187645;
double r187647 = r187642 + r187646;
double r187648 = r187639 * r187647;
double r187649 = r187638 + r187648;
double r187650 = r187649 - r187640;
return r187650;
}
double f(double a, double b) {
double r187651 = a;
double r187652 = r187651 * r187651;
double r187653 = b;
double r187654 = r187653 * r187653;
double r187655 = r187652 + r187654;
double r187656 = 2.0;
double r187657 = pow(r187655, r187656);
double r187658 = 4.0;
double r187659 = 1.0;
double r187660 = r187659 + r187651;
double r187661 = r187652 * r187660;
double r187662 = 3.0;
double r187663 = r187662 * r187651;
double r187664 = r187659 - r187663;
double r187665 = r187654 * r187664;
double r187666 = r187661 + r187665;
double r187667 = r187658 * r187666;
double r187668 = r187657 + r187667;
double r187669 = r187668 - r187659;
return r187669;
}



Bits error versus a



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