\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(3 + a\right)\right)\right) - 1\mathsf{fma}\left(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \left|{\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}\right|, 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1double f(double a, double b) {
double r489511 = a;
double r489512 = r489511 * r489511;
double r489513 = b;
double r489514 = r489513 * r489513;
double r489515 = r489512 + r489514;
double r489516 = 2.0;
double r489517 = pow(r489515, r489516);
double r489518 = 4.0;
double r489519 = 1.0;
double r489520 = r489519 - r489511;
double r489521 = r489512 * r489520;
double r489522 = 3.0;
double r489523 = r489522 + r489511;
double r489524 = r489514 * r489523;
double r489525 = r489521 + r489524;
double r489526 = r489518 * r489525;
double r489527 = r489517 + r489526;
double r489528 = r489527 - r489519;
return r489528;
}
double f(double a, double b) {
double r489529 = a;
double r489530 = r489529 * r489529;
double r489531 = b;
double r489532 = r489531 * r489531;
double r489533 = r489530 + r489532;
double r489534 = 2.0;
double r489535 = pow(r489533, r489534);
double r489536 = sqrt(r489535);
double r489537 = sqrt(r489533);
double r489538 = pow(r489537, r489534);
double r489539 = fabs(r489538);
double r489540 = 4.0;
double r489541 = 1.0;
double r489542 = r489541 - r489529;
double r489543 = r489530 * r489542;
double r489544 = 3.0;
double r489545 = r489544 + r489529;
double r489546 = r489532 * r489545;
double r489547 = r489543 + r489546;
double r489548 = r489540 * r489547;
double r489549 = fma(r489536, r489539, r489548);
double r489550 = r489549 - r489541;
return r489550;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied fma-def0.2
rmApplied add-sqr-sqrt0.2
Applied unpow-prod-down0.2
Applied rem-sqrt-square0.2
Final simplification0.2
herbie shell --seed 2020059 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))