\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 r7650744 = a;
double r7650745 = r7650744 * r7650744;
double r7650746 = b;
double r7650747 = r7650746 * r7650746;
double r7650748 = r7650745 + r7650747;
double r7650749 = 2.0;
double r7650750 = pow(r7650748, r7650749);
double r7650751 = 4.0;
double r7650752 = 1.0;
double r7650753 = r7650752 + r7650744;
double r7650754 = r7650745 * r7650753;
double r7650755 = 3.0;
double r7650756 = r7650755 * r7650744;
double r7650757 = r7650752 - r7650756;
double r7650758 = r7650747 * r7650757;
double r7650759 = r7650754 + r7650758;
double r7650760 = r7650751 * r7650759;
double r7650761 = r7650750 + r7650760;
double r7650762 = r7650761 - r7650752;
return r7650762;
}
double f(double a, double b) {
double r7650763 = b;
double r7650764 = r7650763 * r7650763;
double r7650765 = a;
double r7650766 = r7650765 * r7650765;
double r7650767 = r7650766 * r7650764;
double r7650768 = 2.0;
double r7650769 = 4.0;
double r7650770 = pow(r7650765, r7650769);
double r7650771 = fma(r7650767, r7650768, r7650770);
double r7650772 = fma(r7650764, r7650764, r7650771);
double r7650773 = 1.0;
double r7650774 = 3.0;
double r7650775 = r7650765 * r7650774;
double r7650776 = r7650773 - r7650775;
double r7650777 = r7650776 * r7650764;
double r7650778 = r7650773 + r7650765;
double r7650779 = r7650766 * r7650778;
double r7650780 = r7650777 + r7650779;
double r7650781 = r7650769 * r7650780;
double r7650782 = r7650772 + r7650781;
double r7650783 = r7650782 - r7650773;
return r7650783;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around inf 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-prod-up0.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))