\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right)\right) - 1double f(double a, double b) {
double r47735700 = a;
double r47735701 = r47735700 * r47735700;
double r47735702 = b;
double r47735703 = r47735702 * r47735702;
double r47735704 = r47735701 + r47735703;
double r47735705 = 2.0;
double r47735706 = pow(r47735704, r47735705);
double r47735707 = 4.0;
double r47735708 = 1.0;
double r47735709 = r47735708 + r47735700;
double r47735710 = r47735701 * r47735709;
double r47735711 = 3.0;
double r47735712 = r47735711 * r47735700;
double r47735713 = r47735708 - r47735712;
double r47735714 = r47735703 * r47735713;
double r47735715 = r47735710 + r47735714;
double r47735716 = r47735707 * r47735715;
double r47735717 = r47735706 + r47735716;
double r47735718 = r47735717 - r47735708;
return r47735718;
}
double f(double a, double b) {
double r47735719 = 4.0;
double r47735720 = a;
double r47735721 = r47735720 * r47735720;
double r47735722 = 1.0;
double r47735723 = r47735722 + r47735720;
double r47735724 = r47735721 * r47735723;
double r47735725 = b;
double r47735726 = r47735725 * r47735725;
double r47735727 = 3.0;
double r47735728 = r47735720 * r47735727;
double r47735729 = r47735722 - r47735728;
double r47735730 = r47735726 * r47735729;
double r47735731 = r47735724 + r47735730;
double r47735732 = r47735719 * r47735731;
double r47735733 = 2.0;
double r47735734 = r47735721 * r47735733;
double r47735735 = fma(r47735725, r47735725, r47735734);
double r47735736 = r47735735 * r47735725;
double r47735737 = pow(r47735720, r47735719);
double r47735738 = fma(r47735725, r47735736, r47735737);
double r47735739 = r47735732 + r47735738;
double r47735740 = r47735739 - r47735722;
return r47735740;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
Taylor expanded around 0 0.1
Final simplification0.1
herbie shell --seed 2019120 +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))