\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\left({a}^{4} + \left(b \cdot \left(b \cdot b + \left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right) - 1double f(double a, double b) {
double r8017092 = a;
double r8017093 = r8017092 * r8017092;
double r8017094 = b;
double r8017095 = r8017094 * r8017094;
double r8017096 = r8017093 + r8017095;
double r8017097 = 2.0;
double r8017098 = pow(r8017096, r8017097);
double r8017099 = 4.0;
double r8017100 = r8017099 * r8017095;
double r8017101 = r8017098 + r8017100;
double r8017102 = 1.0;
double r8017103 = r8017101 - r8017102;
return r8017103;
}
double f(double a, double b) {
double r8017104 = a;
double r8017105 = 4.0;
double r8017106 = pow(r8017104, r8017105);
double r8017107 = b;
double r8017108 = r8017107 * r8017107;
double r8017109 = r8017104 * r8017104;
double r8017110 = 2.0;
double r8017111 = r8017109 * r8017110;
double r8017112 = r8017108 + r8017111;
double r8017113 = r8017107 * r8017112;
double r8017114 = r8017113 * r8017107;
double r8017115 = r8017106 + r8017114;
double r8017116 = 1.0;
double r8017117 = r8017115 - r8017116;
return r8017117;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around inf 1.0
Simplified1.2
rmApplied pow11.2
Applied pow11.2
Applied pow-prod-up1.2
Applied pow11.2
Applied pow11.2
Applied pow-prod-up1.2
Applied pow-prod-up1.1
Simplified1.1
rmApplied associate-*l*1.0
Final simplification1.0
herbie shell --seed 2019169
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))