
Boost : 
From: Gabriel Dos Reis (Gabriel.DosReis_at_[hidden])
Date: 20010522 03:16:20
John Max Skaller <skaller_at_[hidden]> writes:
 > However, intermediate results can overflow whereas
 > the exact final result could be represented in the given floating
 > point datatype as you acknowledge it here:

 Yes, except I refer to an _integer_ not floating
 representation.
Actually, I should have said "numerical datatype".
 > That is why a traitbased solution can give best of both worlds.

 I do not see how. My concern is that 'traits' are
 global, and that rounding, etc, must in general be managed
 locally. Perhaps I misunderstand what you mean by traits,
 but I'm thinking of a global 'rounding mode' flag,
 and that isn't something I like at all, because I don't
 think that, for example, the rounding mode is something
 that should be the same for all multiplications:
From the outset, my proposal is that the numerical datatypes will be
parameterised by a trait which does some very atomic operations
(pretty much like what std::char_trait<> does for std::basic_string<>).
And usual operations will be implemented in terms of that trait.
That means, there will be a separate traitfunction for rouding, a
separate traitfunction for adding or multiplying without rounding or
converting from one precision to another.
 I don't see that the rounding mode is a property of the data,
 it is property of each individual operation.
No. Rounding is the act of taking an exact result and producing an
approximation within the range of numerical datatype; that is a
function defined on a superset of the actual datatype, with values in
the set of values of the datatype. It is independent of individual
operations.
 Gaby
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk