\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(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) - 1double f(double a, double b) {
double r360794 = a;
double r360795 = r360794 * r360794;
double r360796 = b;
double r360797 = r360796 * r360796;
double r360798 = r360795 + r360797;
double r360799 = 2.0;
double r360800 = pow(r360798, r360799);
double r360801 = 4.0;
double r360802 = 1.0;
double r360803 = r360802 + r360794;
double r360804 = r360795 * r360803;
double r360805 = 3.0;
double r360806 = r360805 * r360794;
double r360807 = r360802 - r360806;
double r360808 = r360797 * r360807;
double r360809 = r360804 + r360808;
double r360810 = r360801 * r360809;
double r360811 = r360800 + r360810;
double r360812 = r360811 - r360802;
return r360812;
}
double f(double a, double b) {
double r360813 = a;
double r360814 = r360813 * r360813;
double r360815 = b;
double r360816 = r360815 * r360815;
double r360817 = r360814 + r360816;
double r360818 = 2.0;
double r360819 = pow(r360817, r360818);
double r360820 = 4.0;
double r360821 = 1.0;
double r360822 = r360821 + r360813;
double r360823 = r360814 * r360822;
double r360824 = 3.0;
double r360825 = r360824 * r360813;
double r360826 = r360821 - r360825;
double r360827 = r360816 * r360826;
double r360828 = r360823 + r360827;
double r360829 = r360820 * r360828;
double r360830 = r360819 + r360829;
double r360831 = r360830 - r360821;
return r360831;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2020057 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))