\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 r292779 = a;
double r292780 = r292779 * r292779;
double r292781 = b;
double r292782 = r292781 * r292781;
double r292783 = r292780 + r292782;
double r292784 = 2.0;
double r292785 = pow(r292783, r292784);
double r292786 = 4.0;
double r292787 = 1.0;
double r292788 = r292787 + r292779;
double r292789 = r292780 * r292788;
double r292790 = 3.0;
double r292791 = r292790 * r292779;
double r292792 = r292787 - r292791;
double r292793 = r292782 * r292792;
double r292794 = r292789 + r292793;
double r292795 = r292786 * r292794;
double r292796 = r292785 + r292795;
double r292797 = r292796 - r292787;
return r292797;
}
double f(double a, double b) {
double r292798 = a;
double r292799 = r292798 * r292798;
double r292800 = b;
double r292801 = r292800 * r292800;
double r292802 = r292799 + r292801;
double r292803 = 2.0;
double r292804 = pow(r292802, r292803);
double r292805 = 4.0;
double r292806 = 1.0;
double r292807 = r292806 + r292798;
double r292808 = r292799 * r292807;
double r292809 = 3.0;
double r292810 = r292809 * r292798;
double r292811 = r292806 - r292810;
double r292812 = r292801 * r292811;
double r292813 = r292808 + r292812;
double r292814 = r292805 * r292813;
double r292815 = r292804 + r292814;
double r292816 = r292815 - r292806;
return r292816;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019353 +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))