\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(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{{\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) - 1double f(double a, double b) {
double r305041 = a;
double r305042 = r305041 * r305041;
double r305043 = b;
double r305044 = r305043 * r305043;
double r305045 = r305042 + r305044;
double r305046 = 2.0;
double r305047 = pow(r305045, r305046);
double r305048 = 4.0;
double r305049 = 1.0;
double r305050 = r305049 + r305041;
double r305051 = r305042 * r305050;
double r305052 = 3.0;
double r305053 = r305052 * r305041;
double r305054 = r305049 - r305053;
double r305055 = r305044 * r305054;
double r305056 = r305051 + r305055;
double r305057 = r305048 * r305056;
double r305058 = r305047 + r305057;
double r305059 = r305058 - r305049;
return r305059;
}
double f(double a, double b) {
double r305060 = a;
double r305061 = r305060 * r305060;
double r305062 = b;
double r305063 = r305062 * r305062;
double r305064 = r305061 + r305063;
double r305065 = 2.0;
double r305066 = pow(r305064, r305065);
double r305067 = sqrt(r305066);
double r305068 = 4.0;
double r305069 = 1.0;
double r305070 = r305069 + r305060;
double r305071 = r305061 * r305070;
double r305072 = 3.0;
double r305073 = r305072 * r305060;
double r305074 = r305069 - r305073;
double r305075 = r305063 * r305074;
double r305076 = r305071 + r305075;
double r305077 = r305068 * r305076;
double r305078 = fma(r305067, r305067, r305077);
double r305079 = r305078 - r305069;
return r305079;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020060 +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))