From: Moore, Paul (paul.moore_at_[hidden])
Date: 2000-10-18 09:47:30


From: David Abrahams [mailto:abrahams_at_[hidden]]
> I was just trying to use boost::rational<>
> to test out new support for numeric types in
> py_cpp, and I'm finding the documentation
> missing quite a lot of important info. For
> example, what are the constructors? How do you
> access the numerator and denominator? I think
> what's missing here is basically a table which
> describes everything in the interface.

The information is there, but I'd agree it's a bit non-obvious.

<quote>
Rationals can be constructed from a pair (numerator, denominator) of
integers, or a single integer. There is also a default constructor, which
initialises the rational to a value of zero.

The single-argument constructor is not declared as explicit, so there is an
implicit conversion from the underlying integer type to the rational type.
</quote>

<quote>
Finally, access to the internal representation of rationals is provided by
the two member functions numerator() and denominator().
</quote>

It's in the section "Interface" near the bottom. BTW, I refer to the
numerator() and denominator() functionas as "access to the internal
representation". The reason for this is that a num/den representation has
some odd properties at the boundaries when used with a limited-precision
integer type. I am reserving the right to change the internal
representation. This gives rise to a question - is there any real-world need
to access the numerator or denominator of a rational number, in general?
(And if so, should there be a normalisation guarantee? At present the
results are normalised, but that's not necessary...)

I may look at rewording this section of the documentation. Any suggestions
would be gratefully received.

Paul.