\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\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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) - 1double f(double a, double b) {
double r243084 = a;
double r243085 = r243084 * r243084;
double r243086 = b;
double r243087 = r243086 * r243086;
double r243088 = r243085 + r243087;
double r243089 = 2.0;
double r243090 = pow(r243088, r243089);
double r243091 = 4.0;
double r243092 = 1.0;
double r243093 = r243092 - r243084;
double r243094 = r243085 * r243093;
double r243095 = 3.0;
double r243096 = r243095 + r243084;
double r243097 = r243087 * r243096;
double r243098 = r243094 + r243097;
double r243099 = r243091 * r243098;
double r243100 = r243090 + r243099;
double r243101 = r243100 - r243092;
return r243101;
}
double f(double a, double b) {
double r243102 = a;
double r243103 = r243102 * r243102;
double r243104 = b;
double r243105 = r243104 * r243104;
double r243106 = r243103 + r243105;
double r243107 = 2.0;
double r243108 = 2.0;
double r243109 = r243107 / r243108;
double r243110 = pow(r243106, r243109);
double r243111 = 4.0;
double r243112 = 1.0;
double r243113 = r243112 - r243102;
double r243114 = r243103 * r243113;
double r243115 = 3.0;
double r243116 = r243115 + r243102;
double r243117 = r243105 * r243116;
double r243118 = r243114 + r243117;
double r243119 = r243111 * r243118;
double r243120 = fma(r243110, r243110, r243119);
double r243121 = r243120 - r243112;
return r243121;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020062 +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))