\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({1}^{2} \cdot {\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 r119598 = a;
double r119599 = r119598 * r119598;
double r119600 = b;
double r119601 = r119600 * r119600;
double r119602 = r119599 + r119601;
double r119603 = 2.0;
double r119604 = pow(r119602, r119603);
double r119605 = 4.0;
double r119606 = 1.0;
double r119607 = r119606 + r119598;
double r119608 = r119599 * r119607;
double r119609 = 3.0;
double r119610 = r119609 * r119598;
double r119611 = r119606 - r119610;
double r119612 = r119601 * r119611;
double r119613 = r119608 + r119612;
double r119614 = r119605 * r119613;
double r119615 = r119604 + r119614;
double r119616 = r119615 - r119606;
return r119616;
}
double f(double a, double b) {
double r119617 = 1.0;
double r119618 = 2.0;
double r119619 = pow(r119617, r119618);
double r119620 = a;
double r119621 = b;
double r119622 = hypot(r119620, r119621);
double r119623 = 2.0;
double r119624 = r119623 * r119618;
double r119625 = pow(r119622, r119624);
double r119626 = r119619 * r119625;
double r119627 = 4.0;
double r119628 = r119620 * r119620;
double r119629 = 1.0;
double r119630 = r119629 + r119620;
double r119631 = r119628 * r119630;
double r119632 = r119621 * r119621;
double r119633 = 3.0;
double r119634 = r119633 * r119620;
double r119635 = r119629 - r119634;
double r119636 = r119632 * r119635;
double r119637 = r119631 + r119636;
double r119638 = r119627 * r119637;
double r119639 = r119626 + r119638;
double r119640 = r119639 - r119629;
return r119640;
}



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 2020034 +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))