\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(\left(a \cdot a + b \cdot b\right), \left(a \cdot a + b \cdot b\right), \left(4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right)\right)\right) - 1double f(double a, double b) {
double r8146753 = a;
double r8146754 = r8146753 * r8146753;
double r8146755 = b;
double r8146756 = r8146755 * r8146755;
double r8146757 = r8146754 + r8146756;
double r8146758 = 2.0;
double r8146759 = pow(r8146757, r8146758);
double r8146760 = 4.0;
double r8146761 = 1.0;
double r8146762 = r8146761 + r8146753;
double r8146763 = r8146754 * r8146762;
double r8146764 = 3.0;
double r8146765 = r8146764 * r8146753;
double r8146766 = r8146761 - r8146765;
double r8146767 = r8146756 * r8146766;
double r8146768 = r8146763 + r8146767;
double r8146769 = r8146760 * r8146768;
double r8146770 = r8146759 + r8146769;
double r8146771 = r8146770 - r8146761;
return r8146771;
}
double f(double a, double b) {
double r8146772 = a;
double r8146773 = r8146772 * r8146772;
double r8146774 = b;
double r8146775 = r8146774 * r8146774;
double r8146776 = r8146773 + r8146775;
double r8146777 = 4.0;
double r8146778 = 1.0;
double r8146779 = 3.0;
double r8146780 = r8146779 * r8146772;
double r8146781 = r8146778 - r8146780;
double r8146782 = r8146775 * r8146781;
double r8146783 = r8146772 + r8146778;
double r8146784 = r8146773 * r8146783;
double r8146785 = r8146782 + r8146784;
double r8146786 = r8146777 * r8146785;
double r8146787 = fma(r8146776, r8146776, r8146786);
double r8146788 = r8146787 - r8146778;
return r8146788;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied unpow20.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2019129 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))