\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\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) - 1double f(double a, double b) {
double r300114 = a;
double r300115 = r300114 * r300114;
double r300116 = b;
double r300117 = r300116 * r300116;
double r300118 = r300115 + r300117;
double r300119 = 2.0;
double r300120 = pow(r300118, r300119);
double r300121 = 4.0;
double r300122 = 1.0;
double r300123 = r300122 - r300114;
double r300124 = r300115 * r300123;
double r300125 = 3.0;
double r300126 = r300125 + r300114;
double r300127 = r300117 * r300126;
double r300128 = r300124 + r300127;
double r300129 = r300121 * r300128;
double r300130 = r300120 + r300129;
double r300131 = r300130 - r300122;
return r300131;
}
double f(double a, double b) {
double r300132 = a;
double r300133 = r300132 * r300132;
double r300134 = b;
double r300135 = r300134 * r300134;
double r300136 = r300133 + r300135;
double r300137 = 2.0;
double r300138 = pow(r300136, r300137);
double r300139 = 4.0;
double r300140 = 1.0;
double r300141 = r300140 - r300132;
double r300142 = r300133 * r300141;
double r300143 = 3.0;
double r300144 = r300143 + r300132;
double r300145 = r300135 * r300144;
double r300146 = r300142 + r300145;
double r300147 = r300139 * r300146;
double r300148 = r300138 + r300147;
double r300149 = r300148 - r300140;
return r300149;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2020081
(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))