\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(3 + a\right)\right)\right) - 1\sqrt{{\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(3 + a\right)\right)} \cdot \sqrt{{\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(3 + a\right)\right)} - 1double f(double a, double b) {
double r284094 = a;
double r284095 = r284094 * r284094;
double r284096 = b;
double r284097 = r284096 * r284096;
double r284098 = r284095 + r284097;
double r284099 = 2.0;
double r284100 = pow(r284098, r284099);
double r284101 = 4.0;
double r284102 = 1.0;
double r284103 = r284102 - r284094;
double r284104 = r284095 * r284103;
double r284105 = 3.0;
double r284106 = r284105 + r284094;
double r284107 = r284097 * r284106;
double r284108 = r284104 + r284107;
double r284109 = r284101 * r284108;
double r284110 = r284100 + r284109;
double r284111 = r284110 - r284102;
return r284111;
}
double f(double a, double b) {
double r284112 = a;
double r284113 = r284112 * r284112;
double r284114 = b;
double r284115 = r284114 * r284114;
double r284116 = r284113 + r284115;
double r284117 = 2.0;
double r284118 = pow(r284116, r284117);
double r284119 = 4.0;
double r284120 = 1.0;
double r284121 = r284120 - r284112;
double r284122 = r284113 * r284121;
double r284123 = 3.0;
double r284124 = r284123 + r284112;
double r284125 = r284115 * r284124;
double r284126 = r284122 + r284125;
double r284127 = r284119 * r284126;
double r284128 = r284118 + r284127;
double r284129 = sqrt(r284128);
double r284130 = r284129 * r284129;
double r284131 = r284130 - r284120;
return r284131;
}



Bits error versus a



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