\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + (b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_*\right) - 1double f(double a, double b) {
double r35532314 = a;
double r35532315 = r35532314 * r35532314;
double r35532316 = b;
double r35532317 = r35532316 * r35532316;
double r35532318 = r35532315 + r35532317;
double r35532319 = 2.0;
double r35532320 = pow(r35532318, r35532319);
double r35532321 = 4.0;
double r35532322 = 1.0;
double r35532323 = r35532322 + r35532314;
double r35532324 = r35532315 * r35532323;
double r35532325 = 3.0;
double r35532326 = r35532325 * r35532314;
double r35532327 = r35532322 - r35532326;
double r35532328 = r35532317 * r35532327;
double r35532329 = r35532324 + r35532328;
double r35532330 = r35532321 * r35532329;
double r35532331 = r35532320 + r35532330;
double r35532332 = r35532331 - r35532322;
return r35532332;
}
double f(double a, double b) {
double r35532333 = 4.0;
double r35532334 = a;
double r35532335 = r35532334 * r35532334;
double r35532336 = 1.0;
double r35532337 = r35532336 + r35532334;
double r35532338 = r35532335 * r35532337;
double r35532339 = b;
double r35532340 = r35532339 * r35532339;
double r35532341 = 3.0;
double r35532342 = r35532334 * r35532341;
double r35532343 = r35532336 - r35532342;
double r35532344 = r35532340 * r35532343;
double r35532345 = r35532338 + r35532344;
double r35532346 = r35532333 * r35532345;
double r35532347 = 2.0;
double r35532348 = r35532335 * r35532347;
double r35532349 = fma(r35532339, r35532339, r35532348);
double r35532350 = r35532349 * r35532339;
double r35532351 = pow(r35532334, r35532333);
double r35532352 = fma(r35532339, r35532350, r35532351);
double r35532353 = r35532346 + r35532352;
double r35532354 = r35532353 - r35532336;
return r35532354;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow10.2
Applied pow-plus0.2
Applied pow-sqr0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))