\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(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r403 = a;
double r404 = r403 * r403;
double r405 = b;
double r406 = r405 * r405;
double r407 = r404 + r406;
double r408 = 2.0;
double r409 = pow(r407, r408);
double r410 = 4.0;
double r411 = 1.0;
double r412 = r411 + r403;
double r413 = r404 * r412;
double r414 = 3.0;
double r415 = r414 * r403;
double r416 = r411 - r415;
double r417 = r406 * r416;
double r418 = r413 + r417;
double r419 = r410 * r418;
double r420 = r409 + r419;
double r421 = r420 - r411;
return r421;
}
double f(double a, double b) {
double r422 = a;
double r423 = b;
double r424 = hypot(r422, r423);
double r425 = 2.0;
double r426 = 2.0;
double r427 = r425 * r426;
double r428 = pow(r424, r427);
double r429 = 4.0;
double r430 = r422 * r422;
double r431 = 1.0;
double r432 = r431 + r422;
double r433 = r430 * r432;
double r434 = r423 * r423;
double r435 = 3.0;
double r436 = r435 * r422;
double r437 = r431 - r436;
double r438 = r434 * r437;
double r439 = r433 + r438;
double r440 = r429 * r439;
double r441 = r428 + r440;
double r442 = r441 - r431;
return r442;
}



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
Final simplification0.0
herbie shell --seed 2020025 +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))