\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 r22878579 = a;
double r22878580 = r22878579 * r22878579;
double r22878581 = b;
double r22878582 = r22878581 * r22878581;
double r22878583 = r22878580 + r22878582;
double r22878584 = 2.0;
double r22878585 = pow(r22878583, r22878584);
double r22878586 = 4.0;
double r22878587 = 1.0;
double r22878588 = r22878587 + r22878579;
double r22878589 = r22878580 * r22878588;
double r22878590 = 3.0;
double r22878591 = r22878590 * r22878579;
double r22878592 = r22878587 - r22878591;
double r22878593 = r22878582 * r22878592;
double r22878594 = r22878589 + r22878593;
double r22878595 = r22878586 * r22878594;
double r22878596 = r22878585 + r22878595;
double r22878597 = r22878596 - r22878587;
return r22878597;
}
double f(double a, double b) {
double r22878598 = 4.0;
double r22878599 = a;
double r22878600 = r22878599 * r22878599;
double r22878601 = 1.0;
double r22878602 = r22878601 + r22878599;
double r22878603 = r22878600 * r22878602;
double r22878604 = b;
double r22878605 = r22878604 * r22878604;
double r22878606 = 3.0;
double r22878607 = r22878599 * r22878606;
double r22878608 = r22878601 - r22878607;
double r22878609 = r22878605 * r22878608;
double r22878610 = r22878603 + r22878609;
double r22878611 = r22878598 * r22878610;
double r22878612 = 2.0;
double r22878613 = r22878600 * r22878612;
double r22878614 = fma(r22878604, r22878604, r22878613);
double r22878615 = r22878614 * r22878604;
double r22878616 = pow(r22878599, r22878598);
double r22878617 = fma(r22878604, r22878615, r22878616);
double r22878618 = r22878611 + r22878617;
double r22878619 = r22878618 - r22878601;
return r22878619;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow-plus0.2
Applied pow20.2
Applied pow-prod-up0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019104 +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))