\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\left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\right)} + 4 \cdot \left(\frac{\left(a \cdot a\right) \cdot \left(1 \cdot 1 - a \cdot a\right)}{1 - a} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r123280 = a;
double r123281 = r123280 * r123280;
double r123282 = b;
double r123283 = r123282 * r123282;
double r123284 = r123281 + r123283;
double r123285 = 2.0;
double r123286 = pow(r123284, r123285);
double r123287 = 4.0;
double r123288 = 1.0;
double r123289 = r123288 + r123280;
double r123290 = r123281 * r123289;
double r123291 = 3.0;
double r123292 = r123291 * r123280;
double r123293 = r123288 - r123292;
double r123294 = r123283 * r123293;
double r123295 = r123290 + r123294;
double r123296 = r123287 * r123295;
double r123297 = r123286 + r123296;
double r123298 = r123297 - r123288;
return r123298;
}
double f(double a, double b) {
double r123299 = a;
double r123300 = b;
double r123301 = hypot(r123299, r123300);
double r123302 = 2.0;
double r123303 = 2.0;
double r123304 = r123302 * r123303;
double r123305 = pow(r123301, r123304);
double r123306 = 4.0;
double r123307 = r123299 * r123299;
double r123308 = 1.0;
double r123309 = r123308 * r123308;
double r123310 = r123309 - r123307;
double r123311 = r123307 * r123310;
double r123312 = r123308 - r123299;
double r123313 = r123311 / r123312;
double r123314 = r123300 * r123300;
double r123315 = 3.0;
double r123316 = r123315 * r123299;
double r123317 = r123308 - r123316;
double r123318 = r123314 * r123317;
double r123319 = r123313 + r123318;
double r123320 = r123306 * r123319;
double r123321 = r123305 + r123320;
double r123322 = r123321 - r123308;
return r123322;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied unpow-prod-down0.2
Applied fma-def0.2
rmApplied fma-udef0.2
Simplified0.0
rmApplied flip-+0.0
Applied associate-*r/0.0
Final simplification0.0
herbie shell --seed 2020047 +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))