
On 9/7/05, Joel Eidsath <jeidsath@gmail.com> 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