\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 \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r164998 = a;
double r164999 = r164998 * r164998;
double r165000 = b;
double r165001 = r165000 * r165000;
double r165002 = r164999 + r165001;
double r165003 = 2.0;
double r165004 = pow(r165002, r165003);
double r165005 = 4.0;
double r165006 = 1.0;
double r165007 = r165006 - r164998;
double r165008 = r164999 * r165007;
double r165009 = 3.0;
double r165010 = r165009 + r164998;
double r165011 = r165001 * r165010;
double r165012 = r165008 + r165011;
double r165013 = r165005 * r165012;
double r165014 = r165004 + r165013;
double r165015 = r165014 - r165006;
return r165015;
}
double f(double a, double b) {
double r165016 = a;
double r165017 = r165016 * r165016;
double r165018 = 1.0;
double r165019 = r165018 - r165016;
double r165020 = b;
double r165021 = r165020 * r165020;
double r165022 = 3.0;
double r165023 = r165022 + r165016;
double r165024 = r165021 * r165023;
double r165025 = fma(r165017, r165019, r165024);
double r165026 = 4.0;
double r165027 = fma(r165016, r165016, r165021);
double r165028 = 2.0;
double r165029 = pow(r165027, r165028);
double r165030 = fma(r165025, r165026, r165029);
double r165031 = r165030 - r165018;
return r165031;
}



Bits error versus a



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