\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 r5245992 = a;
double r5245993 = r5245992 * r5245992;
double r5245994 = b;
double r5245995 = r5245994 * r5245994;
double r5245996 = r5245993 + r5245995;
double r5245997 = 2.0;
double r5245998 = pow(r5245996, r5245997);
double r5245999 = 4.0;
double r5246000 = 1.0;
double r5246001 = r5246000 + r5245992;
double r5246002 = r5245993 * r5246001;
double r5246003 = 3.0;
double r5246004 = r5246003 * r5245992;
double r5246005 = r5246000 - r5246004;
double r5246006 = r5245995 * r5246005;
double r5246007 = r5246002 + r5246006;
double r5246008 = r5245999 * r5246007;
double r5246009 = r5245998 + r5246008;
double r5246010 = r5246009 - r5246000;
return r5246010;
}
double f(double a, double b) {
double r5246011 = b;
double r5246012 = r5246011 * r5246011;
double r5246013 = 4.0;
double r5246014 = -12.0;
double r5246015 = a;
double r5246016 = r5246014 * r5246015;
double r5246017 = r5246013 + r5246016;
double r5246018 = r5246015 * r5246015;
double r5246019 = fma(r5246013, r5246015, r5246013);
double r5246020 = fma(r5246011, r5246011, r5246018);
double r5246021 = -1.0;
double r5246022 = fma(r5246020, r5246020, r5246021);
double r5246023 = fma(r5246018, r5246019, r5246022);
double r5246024 = fma(r5246012, r5246017, r5246023);
return r5246024;
}



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