\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\left(4 \cdot \left(b \cdot b\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 r64454751 = a;
double r64454752 = r64454751 * r64454751;
double r64454753 = b;
double r64454754 = r64454753 * r64454753;
double r64454755 = r64454752 + r64454754;
double r64454756 = 2.0;
double r64454757 = pow(r64454755, r64454756);
double r64454758 = 4.0;
double r64454759 = r64454758 * r64454754;
double r64454760 = r64454757 + r64454759;
double r64454761 = 1.0;
double r64454762 = r64454760 - r64454761;
return r64454762;
}
double f(double a, double b) {
double r64454763 = 4.0;
double r64454764 = b;
double r64454765 = r64454764 * r64454764;
double r64454766 = r64454763 * r64454765;
double r64454767 = a;
double r64454768 = r64454767 * r64454767;
double r64454769 = 2.0;
double r64454770 = r64454768 * r64454769;
double r64454771 = fma(r64454764, r64454764, r64454770);
double r64454772 = r64454771 * r64454764;
double r64454773 = pow(r64454767, r64454763);
double r64454774 = fma(r64454764, r64454772, r64454773);
double r64454775 = r64454766 + r64454774;
double r64454776 = 1.0;
double r64454777 = r64454775 - r64454776;
return r64454777;
}



Bits error versus a



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