\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(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1double f(double a, double b) {
double r3757024 = a;
double r3757025 = r3757024 * r3757024;
double r3757026 = b;
double r3757027 = r3757026 * r3757026;
double r3757028 = r3757025 + r3757027;
double r3757029 = 2.0;
double r3757030 = pow(r3757028, r3757029);
double r3757031 = 4.0;
double r3757032 = 1.0;
double r3757033 = r3757032 - r3757024;
double r3757034 = r3757025 * r3757033;
double r3757035 = 3.0;
double r3757036 = r3757035 + r3757024;
double r3757037 = r3757027 * r3757036;
double r3757038 = r3757034 + r3757037;
double r3757039 = r3757031 * r3757038;
double r3757040 = r3757030 + r3757039;
double r3757041 = r3757040 - r3757032;
return r3757041;
}
double f(double a, double b) {
double r3757042 = a;
double r3757043 = r3757042 * r3757042;
double r3757044 = b;
double r3757045 = r3757044 * r3757044;
double r3757046 = r3757043 + r3757045;
double r3757047 = 2.0;
double r3757048 = pow(r3757046, r3757047);
double r3757049 = 3.0;
double r3757050 = r3757042 + r3757049;
double r3757051 = r3757050 * r3757045;
double r3757052 = 1.0;
double r3757053 = r3757052 - r3757042;
double r3757054 = r3757043 * r3757053;
double r3757055 = r3757051 + r3757054;
double r3757056 = 4.0;
double r3757057 = r3757055 * r3757056;
double r3757058 = r3757048 + r3757057;
double r3757059 = r3757058 - r3757052;
return r3757059;
}



Bits error versus a



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