# Boost :

From: Andras Erdei (aerdei_at_[hidden])
Date: 2005-09-07 02:22:19

On 9/7/05, Joel Eidsath <jeidsath_at_[hidden]> wrote:

> >My point is that floating point representation of a number is in no way a
> peer
> >concept of rational number. IOW your assertion :
> >
> >"Examples of basic rational number types in C++: float, double, etc."
> >
> Rational numbers are a mathematical concept, not a computer science
> concept.

it is a CS concept as well

if you are interested, a good text on representing numbers
as rationals (num/den pairs) is Matula-Kornerup: Foundations
of Finite Precision Rational Arithmetic, Computing Suppl. 2,
1980, pp 85-111

Floats, doubles and so on hold rational numbers, not
> irrationals, not integers.

yes, but they are only capable of holding rationals with
power-of-two denominators, which is a severe limitation

Now, are you seriously claiming, as the first poster did, that
> boost::rational will work whenever you need an arbitrary precision
> rational number?

not the current implementation, as it has no rounding

Or do you have some other point?

i think he is suggesting that radix representation may
be good (efficient etc) for integers, but is certainly
not a good way to represent non-integers

num/den pairs are much better, and there are several
other alternatives (representations based on exponential
functions, continued fraction expansions, composition of
linear fractional transformations etc)

The only point that you seemed to be trying to make with your examples
> was that "boost::rational has it's place too..." Again, I fail to see
> what that has to do with the discussion at hand. No one has said
> anything different. (That place is just not an arbitrary precision
> library rational class. For example, notice the calls to gcd() in the
> constructor. You're toast as soon as you start dealing with large primes.)

with the current boost::rational, yes, but with a
rounding implementation, no

br,
andras