I think that your programs are way too elaborate. if a+b is a correctly rounded answer, then a lower bound on a+b is to adjust by one unit in the last place. (or even half a unit if you can do that.) IEEE floats and bfloats are correctly rounded. or should be.