\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(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left({a}^{4}\right)\right)\right)\right) + 4 \cdot \left(\left(1 - a \cdot 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 + a\right)\right)\right) - 1double f(double a, double b) {
double r3048659 = a;
double r3048660 = r3048659 * r3048659;
double r3048661 = b;
double r3048662 = r3048661 * r3048661;
double r3048663 = r3048660 + r3048662;
double r3048664 = 2.0;
double r3048665 = pow(r3048663, r3048664);
double r3048666 = 4.0;
double r3048667 = 1.0;
double r3048668 = r3048667 + r3048659;
double r3048669 = r3048660 * r3048668;
double r3048670 = 3.0;
double r3048671 = r3048670 * r3048659;
double r3048672 = r3048667 - r3048671;
double r3048673 = r3048662 * r3048672;
double r3048674 = r3048669 + r3048673;
double r3048675 = r3048666 * r3048674;
double r3048676 = r3048665 + r3048675;
double r3048677 = r3048676 - r3048667;
return r3048677;
}
double f(double a, double b) {
double r3048678 = b;
double r3048679 = r3048678 * r3048678;
double r3048680 = a;
double r3048681 = r3048680 * r3048680;
double r3048682 = r3048681 * r3048679;
double r3048683 = 2.0;
double r3048684 = 4.0;
double r3048685 = pow(r3048680, r3048684);
double r3048686 = fma(r3048682, r3048683, r3048685);
double r3048687 = fma(r3048679, r3048679, r3048686);
double r3048688 = 1.0;
double r3048689 = 3.0;
double r3048690 = r3048680 * r3048689;
double r3048691 = r3048688 - r3048690;
double r3048692 = r3048691 * r3048679;
double r3048693 = r3048688 + r3048680;
double r3048694 = r3048681 * r3048693;
double r3048695 = r3048692 + r3048694;
double r3048696 = r3048684 * r3048695;
double r3048697 = r3048687 + r3048696;
double r3048698 = r3048697 - r3048688;
return r3048698;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around inf 0.0
Simplified0.2
rmApplied pow20.2
Applied pow20.2
Applied pow-prod-up0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019132 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))