note
martin
<p>
[http://web.comlab.ox.ac.uk/oucl/work/jeremy.gibbons/publications/spigot.pdf|This article] has a couple of variations of the algorithm with example code in Haskell.
</p>
<p>
As the author points out, representation change algorithms like these are showcase examples for lazy evaluation.
This in turn makes Perl 6 a very good language to implement them, besides Haskell.
</p>
<p>
With the techniques explained in the article you can replace the large fixed-size array <tt>@a</tt> for the state by two FatRats or four Integers and actually return an infinite series of decimal digits (limited only by memory resources as the state numbers grow).
</p>
<p>
These algorithms are not particularly fast, but not half bad either. Perfect, if you want to incrementally increase precision as you need it. In fact, they could be used in a framework for arbitrarily precise real arithmetic.
I would love Perl 6 to support high precision math beyond rational arithmetic.
</p>
992580
992590