\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\left(\left(b \cdot b\right) \cdot 4 + \left(a \cdot \left(\left(\left(b \cdot b\right) \cdot 2 + a \cdot a\right) \cdot a\right) + {b}^{4}\right)\right) - 1double f(double a, double b) {
double r8580118 = a;
double r8580119 = r8580118 * r8580118;
double r8580120 = b;
double r8580121 = r8580120 * r8580120;
double r8580122 = r8580119 + r8580121;
double r8580123 = 2.0;
double r8580124 = pow(r8580122, r8580123);
double r8580125 = 4.0;
double r8580126 = r8580125 * r8580121;
double r8580127 = r8580124 + r8580126;
double r8580128 = 1.0;
double r8580129 = r8580127 - r8580128;
return r8580129;
}
double f(double a, double b) {
double r8580130 = b;
double r8580131 = r8580130 * r8580130;
double r8580132 = 4.0;
double r8580133 = r8580131 * r8580132;
double r8580134 = a;
double r8580135 = 2.0;
double r8580136 = r8580131 * r8580135;
double r8580137 = r8580134 * r8580134;
double r8580138 = r8580136 + r8580137;
double r8580139 = r8580138 * r8580134;
double r8580140 = r8580134 * r8580139;
double r8580141 = pow(r8580130, r8580132);
double r8580142 = r8580140 + r8580141;
double r8580143 = r8580133 + r8580142;
double r8580144 = 1.0;
double r8580145 = r8580143 - r8580144;
return r8580145;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019164
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))