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

Denis Koroskin 2korden at gmail.com
Tue Feb 3 11:17:07 PST 2009


On Tue, 03 Feb 2009 21:25:21 +0300, Sean Kelly <sean at invisibleduck.org> wrote:

> 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

I wonder how efficent it is? Does it store last few sequence elements or re-compute then again and again?
I wouldn't use it in the latter case.




More information about the Digitalmars-d mailing list