\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(3 + a\right)\right)\right) - 1\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1double f(double a, double b) {
double r407699 = a;
double r407700 = r407699 * r407699;
double r407701 = b;
double r407702 = r407701 * r407701;
double r407703 = r407700 + r407702;
double r407704 = 2.0;
double r407705 = pow(r407703, r407704);
double r407706 = 4.0;
double r407707 = 1.0;
double r407708 = r407707 - r407699;
double r407709 = r407700 * r407708;
double r407710 = 3.0;
double r407711 = r407710 + r407699;
double r407712 = r407702 * r407711;
double r407713 = r407709 + r407712;
double r407714 = r407706 * r407713;
double r407715 = r407705 + r407714;
double r407716 = r407715 - r407707;
return r407716;
}
double f(double a, double b) {
double r407717 = a;
double r407718 = r407717 * r407717;
double r407719 = b;
double r407720 = r407719 * r407719;
double r407721 = r407718 + r407720;
double r407722 = 2.0;
double r407723 = 2.0;
double r407724 = r407722 / r407723;
double r407725 = pow(r407721, r407724);
double r407726 = 4.0;
double r407727 = 1.0;
double r407728 = r407727 - r407717;
double r407729 = r407718 * r407728;
double r407730 = 3.0;
double r407731 = r407730 + r407717;
double r407732 = r407720 * r407731;
double r407733 = r407729 + r407732;
double r407734 = r407726 * r407733;
double r407735 = fma(r407725, r407725, r407734);
double r407736 = r407735 - r407727;
return r407736;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020083 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))