\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\mathsf{fma}\left(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{{\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 r224322 = a;
double r224323 = r224322 * r224322;
double r224324 = b;
double r224325 = r224324 * r224324;
double r224326 = r224323 + r224325;
double r224327 = 2.0;
double r224328 = pow(r224326, r224327);
double r224329 = 4.0;
double r224330 = 1.0;
double r224331 = r224330 + r224322;
double r224332 = r224323 * r224331;
double r224333 = 3.0;
double r224334 = r224333 * r224322;
double r224335 = r224330 - r224334;
double r224336 = r224325 * r224335;
double r224337 = r224332 + r224336;
double r224338 = r224329 * r224337;
double r224339 = r224328 + r224338;
double r224340 = r224339 - r224330;
return r224340;
}
double f(double a, double b) {
double r224341 = a;
double r224342 = r224341 * r224341;
double r224343 = b;
double r224344 = r224343 * r224343;
double r224345 = r224342 + r224344;
double r224346 = 2.0;
double r224347 = pow(r224345, r224346);
double r224348 = sqrt(r224347);
double r224349 = 4.0;
double r224350 = 1.0;
double r224351 = r224350 + r224341;
double r224352 = r224342 * r224351;
double r224353 = 3.0;
double r224354 = r224353 * r224341;
double r224355 = r224350 - r224354;
double r224356 = r224344 * r224355;
double r224357 = r224352 + r224356;
double r224358 = r224349 * r224357;
double r224359 = fma(r224348, r224348, r224358);
double r224360 = r224359 - r224350;
return r224360;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020060 +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))