\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(b \cdot b\right) \cdot \left(1 - a \cdot 3\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right) + \left(\left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right) + {a}^{4}\right)\right) - 1double f(double a, double b) {
double r71389832 = a;
double r71389833 = r71389832 * r71389832;
double r71389834 = b;
double r71389835 = r71389834 * r71389834;
double r71389836 = r71389833 + r71389835;
double r71389837 = 2.0;
double r71389838 = pow(r71389836, r71389837);
double r71389839 = 4.0;
double r71389840 = 1.0;
double r71389841 = r71389840 + r71389832;
double r71389842 = r71389833 * r71389841;
double r71389843 = 3.0;
double r71389844 = r71389843 * r71389832;
double r71389845 = r71389840 - r71389844;
double r71389846 = r71389835 * r71389845;
double r71389847 = r71389842 + r71389846;
double r71389848 = r71389839 * r71389847;
double r71389849 = r71389838 + r71389848;
double r71389850 = r71389849 - r71389840;
return r71389850;
}
double f(double a, double b) {
double r71389851 = 4.0;
double r71389852 = b;
double r71389853 = r71389852 * r71389852;
double r71389854 = 1.0;
double r71389855 = a;
double r71389856 = 3.0;
double r71389857 = r71389855 * r71389856;
double r71389858 = r71389854 - r71389857;
double r71389859 = r71389853 * r71389858;
double r71389860 = r71389855 * r71389855;
double r71389861 = r71389855 + r71389854;
double r71389862 = r71389860 * r71389861;
double r71389863 = r71389859 + r71389862;
double r71389864 = r71389851 * r71389863;
double r71389865 = 2.0;
double r71389866 = r71389865 * r71389860;
double r71389867 = r71389866 + r71389853;
double r71389868 = r71389853 * r71389867;
double r71389869 = pow(r71389855, r71389851);
double r71389870 = r71389868 + r71389869;
double r71389871 = r71389864 + r71389870;
double r71389872 = r71389871 - r71389854;
return r71389872;
}



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-sqr0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019120
(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))