\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(\mathsf{fma}\left({a}^{2}, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} \cdot \sqrt{\mathsf{fma}\left(\mathsf{fma}\left({a}^{2}, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} - 1double f(double a, double b) {
double r150092 = a;
double r150093 = r150092 * r150092;
double r150094 = b;
double r150095 = r150094 * r150094;
double r150096 = r150093 + r150095;
double r150097 = 2.0;
double r150098 = pow(r150096, r150097);
double r150099 = 4.0;
double r150100 = 1.0;
double r150101 = r150100 + r150092;
double r150102 = r150093 * r150101;
double r150103 = 3.0;
double r150104 = r150103 * r150092;
double r150105 = r150100 - r150104;
double r150106 = r150095 * r150105;
double r150107 = r150102 + r150106;
double r150108 = r150099 * r150107;
double r150109 = r150098 + r150108;
double r150110 = r150109 - r150100;
return r150110;
}
double f(double a, double b) {
double r150111 = a;
double r150112 = 2.0;
double r150113 = pow(r150111, r150112);
double r150114 = 1.0;
double r150115 = r150114 + r150111;
double r150116 = b;
double r150117 = r150116 * r150116;
double r150118 = 3.0;
double r150119 = r150118 * r150111;
double r150120 = r150114 - r150119;
double r150121 = r150117 * r150120;
double r150122 = fma(r150113, r150115, r150121);
double r150123 = 4.0;
double r150124 = fma(r150111, r150111, r150117);
double r150125 = 2.0;
double r150126 = pow(r150124, r150125);
double r150127 = fma(r150122, r150123, r150126);
double r150128 = sqrt(r150127);
double r150129 = r150128 * r150128;
double r150130 = r150129 - r150114;
return r150130;
}



Bits error versus a



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