.... how would you have an implementation of finite precision floating point that has the "expected" exact algebraic laws for * and +?
I would argue that Float and Double do satisfy a form of the standard algebric laws where equality is approximate.
eg (a+(b+c)) - ((a+b)+c) <= \epsilon, where epsilon is some constant multiple of max(ulp(a),ulp(b),ulp(c)).
(a similar idea applies to pretty much any other algebraic law you can state, such as distributivity etc)
I do think that it'd be useful if the RealFloat class provided an ulp function (unit of least precision), which is available as part of any IEEE compliant c float library.
there are MANY computable number represntations where the *exact* algebraic laws dont hold, but this *approximate* form which provides some notion of bounded forwards/backwards relative/absolute error bound guarantee in a particularly strong way.
i think we should figure out articulating laws that play nice for both the *exact* and *approximate* universes. the