\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, a \cdot \left(1 - a\right), \left(b \cdot b\right) \cdot \left(a + 3\right)\right), 4, \mathsf{fma}\left(\mathsf{fma}\left(a, a, b \cdot b\right), \mathsf{fma}\left(a, a, b \cdot b\right), -1\right)\right)double f(double a, double b) {
double r7921645 = a;
double r7921646 = r7921645 * r7921645;
double r7921647 = b;
double r7921648 = r7921647 * r7921647;
double r7921649 = r7921646 + r7921648;
double r7921650 = 2.0;
double r7921651 = pow(r7921649, r7921650);
double r7921652 = 4.0;
double r7921653 = 1.0;
double r7921654 = r7921653 - r7921645;
double r7921655 = r7921646 * r7921654;
double r7921656 = 3.0;
double r7921657 = r7921656 + r7921645;
double r7921658 = r7921648 * r7921657;
double r7921659 = r7921655 + r7921658;
double r7921660 = r7921652 * r7921659;
double r7921661 = r7921651 + r7921660;
double r7921662 = r7921661 - r7921653;
return r7921662;
}
double f(double a, double b) {
double r7921663 = a;
double r7921664 = 1.0;
double r7921665 = r7921664 - r7921663;
double r7921666 = r7921663 * r7921665;
double r7921667 = b;
double r7921668 = r7921667 * r7921667;
double r7921669 = 3.0;
double r7921670 = r7921663 + r7921669;
double r7921671 = r7921668 * r7921670;
double r7921672 = fma(r7921663, r7921666, r7921671);
double r7921673 = 4.0;
double r7921674 = fma(r7921663, r7921663, r7921668);
double r7921675 = -1.0;
double r7921676 = fma(r7921674, r7921674, r7921675);
double r7921677 = fma(r7921672, r7921673, r7921676);
return r7921677;
}



Bits error versus a



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