\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(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a + 1\right) \cdot \left(a \cdot a\right)\right) + {\left(b \cdot b + a \cdot a\right)}^{2}\right) - 1double f(double a, double b) {
double r10692653 = a;
double r10692654 = r10692653 * r10692653;
double r10692655 = b;
double r10692656 = r10692655 * r10692655;
double r10692657 = r10692654 + r10692656;
double r10692658 = 2.0;
double r10692659 = pow(r10692657, r10692658);
double r10692660 = 4.0;
double r10692661 = 1.0;
double r10692662 = r10692661 + r10692653;
double r10692663 = r10692654 * r10692662;
double r10692664 = 3.0;
double r10692665 = r10692664 * r10692653;
double r10692666 = r10692661 - r10692665;
double r10692667 = r10692656 * r10692666;
double r10692668 = r10692663 + r10692667;
double r10692669 = r10692660 * r10692668;
double r10692670 = r10692659 + r10692669;
double r10692671 = r10692670 - r10692661;
return r10692671;
}
double f(double a, double b) {
double r10692672 = 4.0;
double r10692673 = 1.0;
double r10692674 = 3.0;
double r10692675 = a;
double r10692676 = r10692674 * r10692675;
double r10692677 = r10692673 - r10692676;
double r10692678 = b;
double r10692679 = r10692678 * r10692678;
double r10692680 = r10692677 * r10692679;
double r10692681 = r10692675 + r10692673;
double r10692682 = r10692675 * r10692675;
double r10692683 = r10692681 * r10692682;
double r10692684 = r10692680 + r10692683;
double r10692685 = r10692672 * r10692684;
double r10692686 = r10692679 + r10692682;
double r10692687 = 2.0;
double r10692688 = pow(r10692686, r10692687);
double r10692689 = r10692685 + r10692688;
double r10692690 = r10692689 - r10692673;
return r10692690;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019200
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))