\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}double code(double b, double a, double f, double d, double dp) {
return ((double) (((double) (((double) (b + a)) + ((double) (((double) (((double) (((double) fabs(f)) / f)) * ((double) (d - dp)))) / ((double) (1.0 + ((double) (3.0 * ((double) (((double) fabs(d)) / ((double) fabs(dp)))))))))))) / 2.0));
}
double code(double b, double a, double f, double d, double dp) {
return ((double) (((double) (((double) (b + a)) + ((double) (((double) (((double) (((double) fabs(f)) / f)) * ((double) (d - dp)))) / ((double) (1.0 + ((double) (3.0 * ((double) (((double) fabs(d)) / ((double) fabs(dp)))))))))))) / 2.0));
}



Bits error versus b



Bits error versus a



Bits error versus f



Bits error versus d



Bits error versus dp
Results
Initial program 0.4
Final simplification0.4
herbie shell --seed 2020152
(FPCore (b a f d dp)
:name "(/ (+ (+ b a) (/ (* (/ (fabs f) f) (- d dp)) (+ 1.0 (* 3.0 (/ (fabs d) (fabs dp)))))) 2.0)"
:precision binary64
(/ (+ (+ b a) (/ (* (/ (fabs f) f) (- d dp)) (+ 1.0 (* 3.0 (/ (fabs d) (fabs dp)))))) 2.0))