\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(\mathsf{fma}\left(1, {a}^{2}, 3 \cdot {b}^{2}\right) - {a}^{3}, 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r355130 = a;
double r355131 = r355130 * r355130;
double r355132 = b;
double r355133 = r355132 * r355132;
double r355134 = r355131 + r355133;
double r355135 = 2.0;
double r355136 = pow(r355134, r355135);
double r355137 = 4.0;
double r355138 = 1.0;
double r355139 = r355138 - r355130;
double r355140 = r355131 * r355139;
double r355141 = 3.0;
double r355142 = r355141 + r355130;
double r355143 = r355133 * r355142;
double r355144 = r355140 + r355143;
double r355145 = r355137 * r355144;
double r355146 = r355136 + r355145;
double r355147 = r355146 - r355138;
return r355147;
}
double f(double a, double b) {
double r355148 = 1.0;
double r355149 = a;
double r355150 = 2.0;
double r355151 = pow(r355149, r355150);
double r355152 = 3.0;
double r355153 = b;
double r355154 = pow(r355153, r355150);
double r355155 = r355152 * r355154;
double r355156 = fma(r355148, r355151, r355155);
double r355157 = 3.0;
double r355158 = pow(r355149, r355157);
double r355159 = r355156 - r355158;
double r355160 = 4.0;
double r355161 = r355153 * r355153;
double r355162 = fma(r355149, r355149, r355161);
double r355163 = 2.0;
double r355164 = pow(r355162, r355163);
double r355165 = fma(r355159, r355160, r355164);
double r355166 = r355165 - r355148;
return r355166;
}



Bits error versus a



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