\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(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(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r294020 = a;
double r294021 = r294020 * r294020;
double r294022 = b;
double r294023 = r294022 * r294022;
double r294024 = r294021 + r294023;
double r294025 = 2.0;
double r294026 = pow(r294024, r294025);
double r294027 = 4.0;
double r294028 = 1.0;
double r294029 = r294028 + r294020;
double r294030 = r294021 * r294029;
double r294031 = 3.0;
double r294032 = r294031 * r294020;
double r294033 = r294028 - r294032;
double r294034 = r294023 * r294033;
double r294035 = r294030 + r294034;
double r294036 = r294027 * r294035;
double r294037 = r294026 + r294036;
double r294038 = r294037 - r294028;
return r294038;
}
double f(double a, double b) {
double r294039 = a;
double r294040 = r294039 * r294039;
double r294041 = b;
double r294042 = r294041 * r294041;
double r294043 = r294040 + r294042;
double r294044 = 2.0;
double r294045 = 2.0;
double r294046 = r294044 / r294045;
double r294047 = pow(r294043, r294046);
double r294048 = 4.0;
double r294049 = 1.0;
double r294050 = r294049 + r294039;
double r294051 = r294040 * r294050;
double r294052 = 3.0;
double r294053 = r294052 * r294039;
double r294054 = r294049 - r294053;
double r294055 = r294042 * r294054;
double r294056 = r294051 + r294055;
double r294057 = r294048 * r294056;
double r294058 = fma(r294047, r294047, r294057);
double r294059 = r294058 - r294049;
return r294059;
}



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 2019350 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))