\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\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) - 1double f(double a, double b) {
double r287057 = a;
double r287058 = r287057 * r287057;
double r287059 = b;
double r287060 = r287059 * r287059;
double r287061 = r287058 + r287060;
double r287062 = 2.0;
double r287063 = pow(r287061, r287062);
double r287064 = 4.0;
double r287065 = 1.0;
double r287066 = r287065 + r287057;
double r287067 = r287058 * r287066;
double r287068 = 3.0;
double r287069 = r287068 * r287057;
double r287070 = r287065 - r287069;
double r287071 = r287060 * r287070;
double r287072 = r287067 + r287071;
double r287073 = r287064 * r287072;
double r287074 = r287063 + r287073;
double r287075 = r287074 - r287065;
return r287075;
}
double f(double a, double b) {
double r287076 = a;
double r287077 = r287076 * r287076;
double r287078 = b;
double r287079 = r287078 * r287078;
double r287080 = r287077 + r287079;
double r287081 = 2.0;
double r287082 = pow(r287080, r287081);
double r287083 = 4.0;
double r287084 = 1.0;
double r287085 = r287084 + r287076;
double r287086 = r287077 * r287085;
double r287087 = 3.0;
double r287088 = r287087 * r287076;
double r287089 = r287084 - r287088;
double r287090 = r287079 * r287089;
double r287091 = r287086 + r287090;
double r287092 = r287083 * r287091;
double r287093 = r287082 + r287092;
double r287094 = r287093 - r287084;
return r287094;
}



Bits error versus a



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