Boost logo

Boost :

From: Hugo Duncan (hugoduncan_at_[hidden])
Date: 2003-10-24 10:09:47

Paul A. Bristow <boost_at_[hidden]> wrote:

> I note your use of rational dimensions to allow fractional (but not log
> and
> exp).

It seems that an implementation of compile time rationals is a
requirement, and is orthogonal to anything else, so maybe we
should start on this.

As far as I can tell, the main decision is on the signature of
of the rational type. The two possibilities that I see are

            typename IntegerType
            , IntegerType Numerator
            , IntegerType Denominator = 1
    struct rational_c


    template< typemame Numerator
            , typename Denominator
    struct rational_c

The first forces both numerator and denominator to have the same
integer type representation. It also limits the integer
representation to those that are representable as compile time
constants (ie if someone developed an arbitrary precision compile time
integer, it would not be useable.

The second allows arbitrary types for numerator and denominator. This
has the disadvantage that the arithmetic operators for rational have
to be able to deal with different types in numerator and denominator.

Maybe somebody (Dave, Aleksey?) could comment on compilation time
implications, and the general fit with MPL.


Boost list run by bdawes at, gregod at, cpdaniel at, john at