\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 r209078 = a;
double r209079 = r209078 * r209078;
double r209080 = b;
double r209081 = r209080 * r209080;
double r209082 = r209079 + r209081;
double r209083 = 2.0;
double r209084 = pow(r209082, r209083);
double r209085 = 4.0;
double r209086 = 1.0;
double r209087 = r209086 - r209078;
double r209088 = r209079 * r209087;
double r209089 = 3.0;
double r209090 = r209089 + r209078;
double r209091 = r209081 * r209090;
double r209092 = r209088 + r209091;
double r209093 = r209085 * r209092;
double r209094 = r209084 + r209093;
double r209095 = r209094 - r209086;
return r209095;
}
double f(double a, double b) {
double r209096 = a;
double r209097 = r209096 * r209096;
double r209098 = 1.0;
double r209099 = r209098 - r209096;
double r209100 = b;
double r209101 = r209100 * r209100;
double r209102 = 3.0;
double r209103 = r209102 + r209096;
double r209104 = r209101 * r209103;
double r209105 = fma(r209097, r209099, r209104);
double r209106 = 4.0;
double r209107 = fma(r209096, r209096, r209101);
double r209108 = 2.0;
double r209109 = pow(r209107, r209108);
double r209110 = fma(r209105, r209106, r209109);
double r209111 = r209110 - r209098;
return r209111;
}



Bits error versus a



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