- 03 Oct, 2019 5 commits
- 01 Oct, 2019 1 commit
-
-
ulrich_y authored
-
- 30 Sep, 2019 1 commit
-
-
ulrich_y authored
-
- 27 Sep, 2019 6 commits
- 23 Sep, 2019 1 commit
-
-
ulrich_y authored
-
- 28 Aug, 2019 4 commits
- 22 Aug, 2019 2 commits
-
- 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 3 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
-