\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\sqrt{\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} \cdot \sqrt{\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} - 1double f(double a, double b) {
double r282010 = a;
double r282011 = r282010 * r282010;
double r282012 = b;
double r282013 = r282012 * r282012;
double r282014 = r282011 + r282013;
double r282015 = 2.0;
double r282016 = pow(r282014, r282015);
double r282017 = 4.0;
double r282018 = 1.0;
double r282019 = r282018 + r282010;
double r282020 = r282011 * r282019;
double r282021 = 3.0;
double r282022 = r282021 * r282010;
double r282023 = r282018 - r282022;
double r282024 = r282013 * r282023;
double r282025 = r282020 + r282024;
double r282026 = r282017 * r282025;
double r282027 = r282016 + r282026;
double r282028 = r282027 - r282018;
return r282028;
}
double f(double a, double b) {
double r282029 = 4.0;
double r282030 = a;
double r282031 = r282030 * r282030;
double r282032 = 1.0;
double r282033 = r282032 + r282030;
double r282034 = b;
double r282035 = r282034 * r282034;
double r282036 = 3.0;
double r282037 = r282036 * r282030;
double r282038 = r282032 - r282037;
double r282039 = r282035 * r282038;
double r282040 = fma(r282031, r282033, r282039);
double r282041 = fma(r282030, r282030, r282035);
double r282042 = 2.0;
double r282043 = pow(r282041, r282042);
double r282044 = fma(r282029, r282040, r282043);
double r282045 = sqrt(r282044);
double r282046 = r282045 * r282045;
double r282047 = r282046 - r282032;
return r282047;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
rmApplied add-sqr-sqrt0.2
Final simplification0.2
herbie shell --seed 2019305 +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))