\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\left({1}^{2} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\right)} + 4 \cdot \left(b \cdot b\right)\right) - 1double f(double a, double b) {
double r373243 = a;
double r373244 = r373243 * r373243;
double r373245 = b;
double r373246 = r373245 * r373245;
double r373247 = r373244 + r373246;
double r373248 = 2.0;
double r373249 = pow(r373247, r373248);
double r373250 = 4.0;
double r373251 = r373250 * r373246;
double r373252 = r373249 + r373251;
double r373253 = 1.0;
double r373254 = r373252 - r373253;
return r373254;
}
double f(double a, double b) {
double r373255 = 1.0;
double r373256 = 2.0;
double r373257 = pow(r373255, r373256);
double r373258 = a;
double r373259 = b;
double r373260 = hypot(r373258, r373259);
double r373261 = 2.0;
double r373262 = r373261 * r373256;
double r373263 = pow(r373260, r373262);
double r373264 = r373257 * r373263;
double r373265 = 4.0;
double r373266 = r373259 * r373259;
double r373267 = r373265 * r373266;
double r373268 = r373264 + r373267;
double r373269 = 1.0;
double r373270 = r373268 - r373269;
return r373270;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied unpow-prod-down0.2
Simplified0.2
Simplified0.2
rmApplied *-un-lft-identity0.2
Applied unpow-prod-down0.2
Applied associate-*l*0.2
Simplified0.0
Final simplification0.0
herbie shell --seed 2020089 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))