
"John Maddock" <john@johnmaddock.co.uk> wrote in message news:005301c5e616$7a3cef90$5c410352@fuji...
I have a couple of feature requests for Boost.Test:
1) Can BOOST_CHECK_CLOSE please print the actual difference between the values (as a percent to match the tolerance) as well as the values themselves? The reason this is important, is that it's not always easy to get this value from the input values - because the precision of the machine on which the test is run far outstrips that of the author's machine, so his calculator isn't any use :-(
This is doable. The message would sould like this: difference between var1 {<value>} and var2 {<value>} is x% and exceeds e%
2) Can we please have a BOOST_CHECK_EPSILON, that uses a whole number of epsilon as the tolerance? IMO BOOST_CHECK_CLOSE should have been written this way to begin with, but it's too late now
Actually it was this way originally. It was causing constant confusion with absolute comparison. I thought persents will bring better message. Unfortunately many users since then indicated that original version (for those who knew how to use it) was better. If there is a general consensus I am willing to rollback. Or we could introduce a new tool.
Again it should print out the actual relative error as a multiple of epsilon as well as the input values. Actually while we're at it the absolute error may be useful to have in some situations as well :-)
This one already exists: BOOST_CHECK_SMALL( v, epsilon )
BTW, in case it helps: I've switched to using std::pow(two, 1-std::numeric_limits<T>::digits) to calculate machine epsilon, because of the strange behaviour on Darwin with long doubles if you use numeric_limits<>::epsilon() (see http://lists.boost.org/Archives/boost/2005/09/93390.php).
I will consider this.
Thanks!
John.
Regards, Gennadiy