Boost logo

Boost :

From: David Richardson (dgr24_at_[hidden])
Date: 2003-10-16 07:58:34


David Abrahams wrote:

> Well, you can make "compile-time rationals", but they can't look like
> our Boost rational class because the numerator and denominator have to
> be part of the type.

The syntax I ended up with is a bit messy, but it works. You can
use it as:

typedef Rational::New<1,2>::type oneHalf;
typedef Rational::New<3,2>::type threeHalves;

//all rationals are stored in reduced terms
Rational::Add<oneHalf, threeHalves>::type two;

//get at the numerator and denominator
assert(two::n == 2);
assert(two::d == 1);

There are 'methods' for addition, subtraction, multiplication,
division, and absolute value.

I considered arbitrary precision compile-time integers for the
numerator and denominator, but that seemed like far too much work
for no clear payoff.

Dave


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