\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(4, \mathsf{fma}\left(a, \left(1 - a\right) \cdot a, \left(a + 3\right) \cdot \left(b \cdot b\right)\right), {\left(\mathsf{fma}\left(b, b, a \cdot a\right)\right)}^{2} - 1\right)double f(double a, double b) {
double r254027 = a;
double r254028 = r254027 * r254027;
double r254029 = b;
double r254030 = r254029 * r254029;
double r254031 = r254028 + r254030;
double r254032 = 2.0;
double r254033 = pow(r254031, r254032);
double r254034 = 4.0;
double r254035 = 1.0;
double r254036 = r254035 - r254027;
double r254037 = r254028 * r254036;
double r254038 = 3.0;
double r254039 = r254038 + r254027;
double r254040 = r254030 * r254039;
double r254041 = r254037 + r254040;
double r254042 = r254034 * r254041;
double r254043 = r254033 + r254042;
double r254044 = r254043 - r254035;
return r254044;
}
double f(double a, double b) {
double r254045 = 4.0;
double r254046 = a;
double r254047 = 1.0;
double r254048 = r254047 - r254046;
double r254049 = r254048 * r254046;
double r254050 = 3.0;
double r254051 = r254046 + r254050;
double r254052 = b;
double r254053 = r254052 * r254052;
double r254054 = r254051 * r254053;
double r254055 = fma(r254046, r254049, r254054);
double r254056 = r254046 * r254046;
double r254057 = fma(r254052, r254052, r254056);
double r254058 = 2.0;
double r254059 = pow(r254057, r254058);
double r254060 = r254059 - r254047;
double r254061 = fma(r254045, r254055, r254060);
return r254061;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))