\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) + (b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_*\right) - 1double f(double a, double b) {
double r50551588 = a;
double r50551589 = r50551588 * r50551588;
double r50551590 = b;
double r50551591 = r50551590 * r50551590;
double r50551592 = r50551589 + r50551591;
double r50551593 = 2.0;
double r50551594 = pow(r50551592, r50551593);
double r50551595 = 4.0;
double r50551596 = 1.0;
double r50551597 = r50551596 + r50551588;
double r50551598 = r50551589 * r50551597;
double r50551599 = 3.0;
double r50551600 = r50551599 * r50551588;
double r50551601 = r50551596 - r50551600;
double r50551602 = r50551591 * r50551601;
double r50551603 = r50551598 + r50551602;
double r50551604 = r50551595 * r50551603;
double r50551605 = r50551594 + r50551604;
double r50551606 = r50551605 - r50551596;
return r50551606;
}
double f(double a, double b) {
double r50551607 = 4.0;
double r50551608 = a;
double r50551609 = r50551608 * r50551608;
double r50551610 = 1.0;
double r50551611 = r50551610 + r50551608;
double r50551612 = r50551609 * r50551611;
double r50551613 = b;
double r50551614 = r50551613 * r50551613;
double r50551615 = 3.0;
double r50551616 = r50551608 * r50551615;
double r50551617 = r50551610 - r50551616;
double r50551618 = r50551614 * r50551617;
double r50551619 = r50551612 + r50551618;
double r50551620 = r50551607 * r50551619;
double r50551621 = 2.0;
double r50551622 = r50551609 * r50551621;
double r50551623 = fma(r50551613, r50551613, r50551622);
double r50551624 = r50551623 * r50551613;
double r50551625 = pow(r50551608, r50551607);
double r50551626 = fma(r50551613, r50551624, r50551625);
double r50551627 = r50551620 + r50551626;
double r50551628 = r50551627 - r50551610;
return r50551628;
}



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