ch-ch-update: series, closed-form series, and strides

dsimcha dsimcha at yahoo.com
Fri Jan 30 19:39:57 PST 2009


== Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s article
> I've updated my code and documentation to include series (as in math) in
> the form of infinite ranges. Also series in closed form (given n can
> compute the nth value without iterating) are supported as random-access
> ranges.
> Also Stride is provided. The Matrix container (speaking of scientific
> computing with D!) will support various representational choices, most
> importantly the ones endorsed by high-performance libraries. For Matrix,
> Stride is an important component as I'm sure anyone who's ever written a
> matrix knows.
> http://ssli.ee.washington.edu/~aalexand/d/web/phobos/std_range.html
> http://ssli.ee.washington.edu/~aalexand/d/web/phobos/std_algorithm.html
> Back to series. Finally my dream has come true: I can define a decent
> Fibonacci series clearly and efficiently in one line of code. No more
> idiotic recursive function that takes exponential time to finish!
> auto fib = series!("a[n-1] + a[n]")(1, 1);
> // write 10 Fibonacci numbers
> foreach (e; take(10, fib)) writeln(e);
> This means:
> * The state of the series consists of two values, which start as a[0] =
> 1 and a[1] = 1. This state will be stored inside the returned object
> in-situ (no dynamic allocation).
> * The means to compute the n+1'th element given the n'th and the n-1'th
> is a[n-1] + a[n].
> The series object takes care of everything - keeping score, rotating
> buffers, advancing state, you name it.
> Walter sent me examples of famous series (e.g. Taylor, approximations of
> pi, etc.) that I want to put in as examples. I can't wait the next
> release so I can share this all with you guys!
> Feedback and suggestions welcome! (I know, I need to add the iota range
> presto!)
> Andrei

Is the code to this stuff posted anywhere yet?  I'd be interested to read some of
it.  I actually learned a decent amount of template idioms by reading the
old-school std.algorithm, so I'm curious how some of this stuff is implemented.



More information about the Digitalmars-d mailing list