- 21 Aug, 2019 1 commit
-
-
ulrich_y authored
-
- 20 Aug, 2019 2 commits
-
-
ulrich_y authored
-
- 19 Aug, 2019 1 commit
-
-
ulrich_y authored
-
- 17 Jul, 2019 3 commits
- 16 Jul, 2019 3 commits
- 12 Jul, 2019 1 commit
-
-
ulrich_y authored
-
- 11 Jul, 2019 1 commit
-
-
ulrich_y authored
This is the algorithm by GiNaC. In theory one could extend this to add a caching mechanism such as complex(kind=prec) :: cache(size(x),MPLMaxQ) do q=1,j cache(:,q) = x**q/q**m enddo do q=1,MPLMaxQ res = t(1) ! Fortran uses Column-major order, hence cache(:,q) is ! faster than cache(q,:). cache(:,q+j-1) = x**(q+j-1)/(q+j-1)**m t(j) = t(j) + cache(j,q) do k=1,j-1 t(j-k) = t(j-k) + t(j-k+1) * cache(j-k,k+q) enddo if (mod(q,2) .eq. 1) then if (abs(t(1)-res).lt.MPLdel) exit endif enddo In practice this doesn't really help because any time saved with the cache is paid back through the allocation and clearing of cache(:,:). Both variations work similarly well now. If at some point we might need MPLs with many more arguments (size(x)), this might change.
-
- 10 Jul, 2019 3 commits
- 09 Jul, 2019 2 commits
-
-
Luca Naterop authored
-
ulrich_y authored
-
- 08 Jul, 2019 4 commits
-
-
ulrich_y authored
Note that you shouldn't run this! It works but includes loads of unnecessary casting.
-
Luca Naterop authored
-
Luca Naterop authored
-
ulrich_y authored
-
- 07 Jul, 2019 2 commits
-
-
Luca Naterop authored
-
Luca Naterop authored
-
- 06 Jul, 2019 1 commit
-
-
Luca Naterop authored
-
- 05 Jul, 2019 1 commit
-
-
Luca Naterop authored
-
- 04 Jun, 2019 1 commit
-
-
Luca authored
-
- 22 May, 2019 1 commit
-
-
Luca authored
-
- 21 May, 2019 4 commits
-
-
Luca Naterop authored
-
Luca authored
-
Luca authored
-
Luca authored
-
- 20 May, 2019 1 commit
-
-
Luca authored
-
- 16 May, 2019 2 commits
-
-
Luca Naterop authored
-
Luca Naterop authored
-
- 15 May, 2019 1 commit
-
-
Luca authored
-
- 14 May, 2019 2 commits
- 08 May, 2019 1 commit
-
-
Luca authored
-
- 07 May, 2019 1 commit
-
-
Luca authored
-
- 06 May, 2019 1 commit
-
-
Luca authored
-