\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 r3464633 = a;
double r3464634 = r3464633 * r3464633;
double r3464635 = b;
double r3464636 = r3464635 * r3464635;
double r3464637 = r3464634 + r3464636;
double r3464638 = 2.0;
double r3464639 = pow(r3464637, r3464638);
double r3464640 = 4.0;
double r3464641 = 1.0;
double r3464642 = r3464641 + r3464633;
double r3464643 = r3464634 * r3464642;
double r3464644 = 3.0;
double r3464645 = r3464644 * r3464633;
double r3464646 = r3464641 - r3464645;
double r3464647 = r3464636 * r3464646;
double r3464648 = r3464643 + r3464647;
double r3464649 = r3464640 * r3464648;
double r3464650 = r3464639 + r3464649;
double r3464651 = r3464650 - r3464641;
return r3464651;
}
double f(double a, double b) {
double r3464652 = 1.0;
double r3464653 = 3.0;
double r3464654 = a;
double r3464655 = r3464653 * r3464654;
double r3464656 = r3464652 - r3464655;
double r3464657 = b;
double r3464658 = r3464657 * r3464657;
double r3464659 = r3464656 * r3464658;
double r3464660 = r3464654 * r3464654;
double r3464661 = r3464654 + r3464652;
double r3464662 = r3464660 * r3464661;
double r3464663 = r3464659 + r3464662;
double r3464664 = 4.0;
double r3464665 = r3464663 * r3464664;
double r3464666 = pow(r3464654, r3464664);
double r3464667 = 2.0;
double r3464668 = r3464660 * r3464667;
double r3464669 = r3464658 + r3464668;
double r3464670 = r3464657 * r3464669;
double r3464671 = r3464670 * r3464657;
double r3464672 = r3464666 + r3464671;
double r3464673 = r3464665 + r3464672;
double r3464674 = r3464673 - r3464652;
return r3464674;
}



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 2019156
(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))