\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\mathsf{fma}\left(\left(b \cdot b\right), \left(4 + -12 \cdot a\right), \left(\mathsf{fma}\left(\left(a \cdot a\right), \left(\mathsf{fma}\left(4, a, 4\right)\right), \left(\mathsf{fma}\left(\left(\mathsf{fma}\left(b, b, \left(a \cdot a\right)\right)\right), \left(\mathsf{fma}\left(b, b, \left(a \cdot a\right)\right)\right), -1\right)\right)\right)\right)\right)double f(double a, double b) {
double r3143924 = a;
double r3143925 = r3143924 * r3143924;
double r3143926 = b;
double r3143927 = r3143926 * r3143926;
double r3143928 = r3143925 + r3143927;
double r3143929 = 2.0;
double r3143930 = pow(r3143928, r3143929);
double r3143931 = 4.0;
double r3143932 = 1.0;
double r3143933 = r3143932 + r3143924;
double r3143934 = r3143925 * r3143933;
double r3143935 = 3.0;
double r3143936 = r3143935 * r3143924;
double r3143937 = r3143932 - r3143936;
double r3143938 = r3143927 * r3143937;
double r3143939 = r3143934 + r3143938;
double r3143940 = r3143931 * r3143939;
double r3143941 = r3143930 + r3143940;
double r3143942 = r3143941 - r3143932;
return r3143942;
}
double f(double a, double b) {
double r3143943 = b;
double r3143944 = r3143943 * r3143943;
double r3143945 = 4.0;
double r3143946 = -12.0;
double r3143947 = a;
double r3143948 = r3143946 * r3143947;
double r3143949 = r3143945 + r3143948;
double r3143950 = r3143947 * r3143947;
double r3143951 = fma(r3143945, r3143947, r3143945);
double r3143952 = fma(r3143943, r3143943, r3143950);
double r3143953 = -1.0;
double r3143954 = fma(r3143952, r3143952, r3143953);
double r3143955 = fma(r3143950, r3143951, r3143954);
double r3143956 = fma(r3143944, r3143949, r3143955);
return r3143956;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019133 +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))