Boost logo

Boost :

From: John Max Skaller (skaller_at_[hidden])
Date: 2001-05-22 21:55:05


Gabriel Dos Reis wrote:

> | 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.

        I don't think this works. Just consider

        decimal<n> * decimal<m>

There is no 'universal' way to round the results. The scale
of the result depends on the arguments AND the operation.
What you seem to be suggesting is a pair of maps:

        LIFT: decimal<n> -> exact decimal
        ROUND: exact decimal -> decimal<n>

But actually, there is a family of maps:

        ROUND<n>: exact decimal -> decimal<n>

and the choice of which ROUND map to use
_depends on the operation_ being performed.
It will differ for addition and multiplication.

The model fails completely for division,
since the remainder will always be zero (or close to it).

Perhaps you can be more precise?

-- 
John (Max) Skaller, mailto:skaller_at_[hidden]
10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850
checkout Vyper http://Vyper.sourceforge.net
download Interscript http://Interscript.sourceforge.net

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk