\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 r127633 = a;
double r127634 = r127633 * r127633;
double r127635 = b;
double r127636 = r127635 * r127635;
double r127637 = r127634 + r127636;
double r127638 = 2.0;
double r127639 = pow(r127637, r127638);
double r127640 = 4.0;
double r127641 = 1.0;
double r127642 = r127641 + r127633;
double r127643 = r127634 * r127642;
double r127644 = 3.0;
double r127645 = r127644 * r127633;
double r127646 = r127641 - r127645;
double r127647 = r127636 * r127646;
double r127648 = r127643 + r127647;
double r127649 = r127640 * r127648;
double r127650 = r127639 + r127649;
double r127651 = r127650 - r127641;
return r127651;
}
double f(double a, double b) {
double r127652 = 4.0;
double r127653 = a;
double r127654 = r127653 * r127653;
double r127655 = 1.0;
double r127656 = r127655 + r127653;
double r127657 = b;
double r127658 = r127657 * r127657;
double r127659 = 3.0;
double r127660 = r127659 * r127653;
double r127661 = r127655 - r127660;
double r127662 = r127658 * r127661;
double r127663 = fma(r127654, r127656, r127662);
double r127664 = r127654 + r127658;
double r127665 = 2.0;
double r127666 = pow(r127664, r127665);
double r127667 = r127666 - r127655;
double r127668 = fma(r127652, r127663, r127667);
return r127668;
}



Bits error versus a



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