\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(4 \cdot \left((a \cdot \left(\left(1 - a\right) \cdot a\right) + \left(\left(a + 3\right) \cdot \left(b \cdot b\right)\right))_*\right) + \left((\left((b \cdot b + \left(a \cdot a\right))_*\right) \cdot \left((b \cdot b + \left(a \cdot a\right))_*\right) + -1)_*\right))_*
double f(double a, double b) {
double r34138009 = a;
double r34138010 = r34138009 * r34138009;
double r34138011 = b;
double r34138012 = r34138011 * r34138011;
double r34138013 = r34138010 + r34138012;
double r34138014 = 2.0;
double r34138015 = pow(r34138013, r34138014);
double r34138016 = 4.0;
double r34138017 = 1.0;
double r34138018 = r34138017 - r34138009;
double r34138019 = r34138010 * r34138018;
double r34138020 = 3.0;
double r34138021 = r34138020 + r34138009;
double r34138022 = r34138012 * r34138021;
double r34138023 = r34138019 + r34138022;
double r34138024 = r34138016 * r34138023;
double r34138025 = r34138015 + r34138024;
double r34138026 = r34138025 - r34138017;
return r34138026;
}
double f(double a, double b) {
double r34138027 = 4.0;
double r34138028 = a;
double r34138029 = 1.0;
double r34138030 = r34138029 - r34138028;
double r34138031 = r34138030 * r34138028;
double r34138032 = 3.0;
double r34138033 = r34138028 + r34138032;
double r34138034 = b;
double r34138035 = r34138034 * r34138034;
double r34138036 = r34138033 * r34138035;
double r34138037 = fma(r34138028, r34138031, r34138036);
double r34138038 = r34138028 * r34138028;
double r34138039 = fma(r34138034, r34138034, r34138038);
double r34138040 = -1.0;
double r34138041 = fma(r34138039, r34138039, r34138040);
double r34138042 = fma(r34138027, r34138037, r34138041);
return r34138042;
}



Bits error versus a



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