\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(\mathsf{fma}\left({a}^{2}, \left(1 + a\right) \cdot 4, {\left(a \cdot a + b \cdot b\right)}^{2}\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r89253 = a;
double r89254 = r89253 * r89253;
double r89255 = b;
double r89256 = r89255 * r89255;
double r89257 = r89254 + r89256;
double r89258 = 2.0;
double r89259 = pow(r89257, r89258);
double r89260 = 4.0;
double r89261 = 1.0;
double r89262 = r89261 + r89253;
double r89263 = r89254 * r89262;
double r89264 = 3.0;
double r89265 = r89264 * r89253;
double r89266 = r89261 - r89265;
double r89267 = r89256 * r89266;
double r89268 = r89263 + r89267;
double r89269 = r89260 * r89268;
double r89270 = r89259 + r89269;
double r89271 = r89270 - r89261;
return r89271;
}
double f(double a, double b) {
double r89272 = a;
double r89273 = 2.0;
double r89274 = pow(r89272, r89273);
double r89275 = 1.0;
double r89276 = r89275 + r89272;
double r89277 = 4.0;
double r89278 = r89276 * r89277;
double r89279 = r89272 * r89272;
double r89280 = b;
double r89281 = r89280 * r89280;
double r89282 = r89279 + r89281;
double r89283 = 2.0;
double r89284 = pow(r89282, r89283);
double r89285 = fma(r89274, r89278, r89284);
double r89286 = 3.0;
double r89287 = r89286 * r89272;
double r89288 = r89275 - r89287;
double r89289 = r89281 * r89288;
double r89290 = r89277 * r89289;
double r89291 = r89285 + r89290;
double r89292 = r89291 - r89275;
return r89292;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied distribute-lft-in0.2
Applied associate-+r+0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020024 +o rules:numerics
(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))