ch-ch-update: series, closed-form series, and strides
Sean Kelly
sean at invisibleduck.org
Tue Feb 3 10:25:21 PST 2009
Andrei Alexandrescu wrote:
> Ary Borenszweig wrote:
>> Andrei Alexandrescu escribió:
>>> 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);
>>
>> That is *SO* awesome!!
>
> Thanks! Constant-space factorial is just a line away:
>
> auto fact = series!("a[n] * (n + 1)")(1);
> foreach (e; take(10, fact)) writeln(e);
Awesome :-) I think that proves the efficacy of the approach all by itself.
Sean
More information about the Digitalmars-d
mailing list