Ruud H.G. van Tol on Sun, 04 Feb 2024 12:29:19 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Fast evaluation of recursive functions |
On 2024-02-04 11:31, Christian Krause wrote:
I'm extensively using recursive function definitions and need to compute the first 0..N terms of them, for examplea(n)=if(n<2,1,a(n-1)+a(n-2)) for(n=0,100,print(a(n)))The computation is very slow because PARI/GP apparently does not re-use previously computed terms.
For that, you would need to be able to detect absence of side effects. Example: a(n) = getabstime() + n
I found the following GP script which implements a cache: https://user42.tuxfamily.org/pari-memoize/index.html <https://user42.tuxfamily.org/pari-memoize/index.html>
That is Kevin Ryde's memoize.gp, and it works really well, so don't hesitate to use it.
See also https://pari.math.u-bordeaux.fr/pub/pari/manuals/2.15.4/users.pdf 3.2.11.
With a single integer parameter of limited range, a bitmap could be used to flag known values.
But memoization generally uses a map. -- Ruud