\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\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right)\right) - 1double f(double a, double b) {
double r21044157 = a;
double r21044158 = r21044157 * r21044157;
double r21044159 = b;
double r21044160 = r21044159 * r21044159;
double r21044161 = r21044158 + r21044160;
double r21044162 = 2.0;
double r21044163 = pow(r21044161, r21044162);
double r21044164 = 4.0;
double r21044165 = 1.0;
double r21044166 = r21044165 + r21044157;
double r21044167 = r21044158 * r21044166;
double r21044168 = 3.0;
double r21044169 = r21044168 * r21044157;
double r21044170 = r21044165 - r21044169;
double r21044171 = r21044160 * r21044170;
double r21044172 = r21044167 + r21044171;
double r21044173 = r21044164 * r21044172;
double r21044174 = r21044163 + r21044173;
double r21044175 = r21044174 - r21044165;
return r21044175;
}
double f(double a, double b) {
double r21044176 = 4.0;
double r21044177 = a;
double r21044178 = r21044177 * r21044177;
double r21044179 = 1.0;
double r21044180 = r21044179 + r21044177;
double r21044181 = r21044178 * r21044180;
double r21044182 = b;
double r21044183 = r21044182 * r21044182;
double r21044184 = 3.0;
double r21044185 = r21044177 * r21044184;
double r21044186 = r21044179 - r21044185;
double r21044187 = r21044183 * r21044186;
double r21044188 = r21044181 + r21044187;
double r21044189 = r21044176 * r21044188;
double r21044190 = 2.0;
double r21044191 = r21044178 * r21044190;
double r21044192 = fma(r21044182, r21044182, r21044191);
double r21044193 = r21044192 * r21044182;
double r21044194 = pow(r21044177, r21044176);
double r21044195 = fma(r21044182, r21044193, r21044194);
double r21044196 = r21044189 + r21044195;
double r21044197 = r21044196 - r21044179;
return r21044197;
}



Bits error versus a



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