\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(\left(a \cdot a + b \cdot b\right), \left(a \cdot a + b \cdot b\right), \left(4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right)\right)\right) - 1double f(double a, double b) {
double r3593128 = a;
double r3593129 = r3593128 * r3593128;
double r3593130 = b;
double r3593131 = r3593130 * r3593130;
double r3593132 = r3593129 + r3593131;
double r3593133 = 2.0;
double r3593134 = pow(r3593132, r3593133);
double r3593135 = 4.0;
double r3593136 = 1.0;
double r3593137 = r3593136 + r3593128;
double r3593138 = r3593129 * r3593137;
double r3593139 = 3.0;
double r3593140 = r3593139 * r3593128;
double r3593141 = r3593136 - r3593140;
double r3593142 = r3593131 * r3593141;
double r3593143 = r3593138 + r3593142;
double r3593144 = r3593135 * r3593143;
double r3593145 = r3593134 + r3593144;
double r3593146 = r3593145 - r3593136;
return r3593146;
}
double f(double a, double b) {
double r3593147 = a;
double r3593148 = r3593147 * r3593147;
double r3593149 = b;
double r3593150 = r3593149 * r3593149;
double r3593151 = r3593148 + r3593150;
double r3593152 = 4.0;
double r3593153 = 1.0;
double r3593154 = 3.0;
double r3593155 = r3593154 * r3593147;
double r3593156 = r3593153 - r3593155;
double r3593157 = r3593150 * r3593156;
double r3593158 = r3593147 + r3593153;
double r3593159 = r3593148 * r3593158;
double r3593160 = r3593157 + r3593159;
double r3593161 = r3593152 * r3593160;
double r3593162 = fma(r3593151, r3593151, r3593161);
double r3593163 = r3593162 - r3593153;
return r3593163;
}



Bits error versus a



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