\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(\mathsf{fma}\left(a, a \cdot \left(1 - a\right), \left(\left(a + 3\right) \cdot b\right) \cdot b\right), 4, \mathsf{fma}\left(\mathsf{fma}\left(a, a, b \cdot b\right), \mathsf{fma}\left(a, a, b \cdot b\right), -1\right)\right)double f(double a, double b) {
double r3176239 = a;
double r3176240 = r3176239 * r3176239;
double r3176241 = b;
double r3176242 = r3176241 * r3176241;
double r3176243 = r3176240 + r3176242;
double r3176244 = 2.0;
double r3176245 = pow(r3176243, r3176244);
double r3176246 = 4.0;
double r3176247 = 1.0;
double r3176248 = r3176247 - r3176239;
double r3176249 = r3176240 * r3176248;
double r3176250 = 3.0;
double r3176251 = r3176250 + r3176239;
double r3176252 = r3176242 * r3176251;
double r3176253 = r3176249 + r3176252;
double r3176254 = r3176246 * r3176253;
double r3176255 = r3176245 + r3176254;
double r3176256 = r3176255 - r3176247;
return r3176256;
}
double f(double a, double b) {
double r3176257 = a;
double r3176258 = 1.0;
double r3176259 = r3176258 - r3176257;
double r3176260 = r3176257 * r3176259;
double r3176261 = 3.0;
double r3176262 = r3176257 + r3176261;
double r3176263 = b;
double r3176264 = r3176262 * r3176263;
double r3176265 = r3176264 * r3176263;
double r3176266 = fma(r3176257, r3176260, r3176265);
double r3176267 = 4.0;
double r3176268 = r3176263 * r3176263;
double r3176269 = fma(r3176257, r3176257, r3176268);
double r3176270 = -1.0;
double r3176271 = fma(r3176269, r3176269, r3176270);
double r3176272 = fma(r3176266, r3176267, r3176271);
return r3176272;
}



Bits error versus a



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