
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Hal Finkel Sent: Tuesday, November 30, 2010 7:12 PM To: boost@lists.boost.org Subject: Re: [boost] [mpl-cf] [RFC] MPL Real Numbers using Continued Fractions
That was also my original assumption, but I found it worked pretty well in practice. For one thing, I've chosen a convention such that all of the (non-zero) integers have the same sign, This means that there is no "catastrophic cancellation," and also makes implementing the comparison ops relatively simple (comparison is cheap compared to arithmetic).
To be fair, my original use case was the generation of ratios of pi for use in FFT kernels, and as you've noted above, all of the integers in the pi expansion are fairly small (and there are a lot of 1s), so maybe it is not entirely representative, but I've yet to encounter a case where this has caused a problem. That having been said, I've not really tried to find such a case either. I can certainly think about this more carefully.
I'm not sure what the OP really wanted to calculate, (if he really needed MPL calculation or MPL was just convenient) but I thought I would just add that if the need is something as simple as ratios of pi, or indeed fractions, one might like to consider using NTL www.shoup.net or GMP which have far higher precision reals (100+ decimal digits), enough to allow calculation of values to be pasted or cast into C++ builtin types, ensuring the accuracy of the float/double/long double value in C++. This method was used for the Boost.Math tables (many using continued fractions) and for the small number of constants, including pi, and its fractions and multiples. (The necessary patches and info to use NTL are in the Boost.Math package). Finally, John Maddock and I are currently giving some thought how to make these Boost.Math constants (and perhaps others - like a bigger collection of pi fractions for FFT for example) more 'user friendly' for wider use (and perhaps providing more of them). We will expose these ideas to discussion fairly soon. Paul --- Paul A. Bristow, Prizet Farmhouse, Kendal LA8 8AB UK +44 1539 561830 07714330204 pbristow@hetp.u-net.com