\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(\left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right) \cdot 4 + \left({a}^{4} + \left(b \cdot \left(b \cdot b + \left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right)\right) - 1double f(double a, double b) {
double r5377563 = a;
double r5377564 = r5377563 * r5377563;
double r5377565 = b;
double r5377566 = r5377565 * r5377565;
double r5377567 = r5377564 + r5377566;
double r5377568 = 2.0;
double r5377569 = pow(r5377567, r5377568);
double r5377570 = 4.0;
double r5377571 = 1.0;
double r5377572 = r5377571 + r5377563;
double r5377573 = r5377564 * r5377572;
double r5377574 = 3.0;
double r5377575 = r5377574 * r5377563;
double r5377576 = r5377571 - r5377575;
double r5377577 = r5377566 * r5377576;
double r5377578 = r5377573 + r5377577;
double r5377579 = r5377570 * r5377578;
double r5377580 = r5377569 + r5377579;
double r5377581 = r5377580 - r5377571;
return r5377581;
}
double f(double a, double b) {
double r5377582 = 1.0;
double r5377583 = 3.0;
double r5377584 = a;
double r5377585 = r5377583 * r5377584;
double r5377586 = r5377582 - r5377585;
double r5377587 = b;
double r5377588 = r5377587 * r5377587;
double r5377589 = r5377586 * r5377588;
double r5377590 = r5377584 * r5377584;
double r5377591 = r5377584 + r5377582;
double r5377592 = r5377590 * r5377591;
double r5377593 = r5377589 + r5377592;
double r5377594 = 4.0;
double r5377595 = r5377593 * r5377594;
double r5377596 = pow(r5377584, r5377594);
double r5377597 = 2.0;
double r5377598 = r5377590 * r5377597;
double r5377599 = r5377588 + r5377598;
double r5377600 = r5377587 * r5377599;
double r5377601 = r5377600 * r5377587;
double r5377602 = r5377596 + r5377601;
double r5377603 = r5377595 + r5377602;
double r5377604 = r5377603 - r5377582;
return r5377604;
}



Bits error versus a



Bits error versus b
Results
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 pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019164
(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))