\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\left(\left(b \cdot b\right) \cdot \left(3 + a\right) + a \cdot \left(\left(1 - a\right) \cdot a\right)\right) \cdot 4 - \left(1 - {\left(b \cdot b + a \cdot a\right)}^{2}\right)double f(double a, double b) {
double r222080 = a;
double r222081 = r222080 * r222080;
double r222082 = b;
double r222083 = r222082 * r222082;
double r222084 = r222081 + r222083;
double r222085 = 2.0;
double r222086 = pow(r222084, r222085);
double r222087 = 4.0;
double r222088 = 1.0;
double r222089 = r222088 - r222080;
double r222090 = r222081 * r222089;
double r222091 = 3.0;
double r222092 = r222091 + r222080;
double r222093 = r222083 * r222092;
double r222094 = r222090 + r222093;
double r222095 = r222087 * r222094;
double r222096 = r222086 + r222095;
double r222097 = r222096 - r222088;
return r222097;
}
double f(double a, double b) {
double r222098 = b;
double r222099 = r222098 * r222098;
double r222100 = 3.0;
double r222101 = a;
double r222102 = r222100 + r222101;
double r222103 = r222099 * r222102;
double r222104 = 1.0;
double r222105 = r222104 - r222101;
double r222106 = r222105 * r222101;
double r222107 = r222101 * r222106;
double r222108 = r222103 + r222107;
double r222109 = 4.0;
double r222110 = r222108 * r222109;
double r222111 = r222101 * r222101;
double r222112 = r222099 + r222111;
double r222113 = 2.0;
double r222114 = pow(r222112, r222113);
double r222115 = r222104 - r222114;
double r222116 = r222110 - r222115;
return r222116;
}



Bits error versus a



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