1. 03 Oct, 2019 3 commits
  2. 01 Oct, 2019 1 commit
  3. 30 Sep, 2019 1 commit
  4. 27 Sep, 2019 6 commits
  5. 23 Sep, 2019 1 commit
  6. 28 Aug, 2019 4 commits
  7. 22 Aug, 2019 2 commits
  8. 21 Aug, 2019 1 commit
  9. 20 Aug, 2019 2 commits
  10. 19 Aug, 2019 1 commit
  11. 17 Jul, 2019 3 commits
  12. 16 Jul, 2019 3 commits
  13. 12 Jul, 2019 1 commit
  14. 11 Jul, 2019 1 commit
    • ulrich_y's avatar
      New MPL routine · 9ff6a342
      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.
      9ff6a342
  15. 10 Jul, 2019 3 commits
  16. 09 Jul, 2019 2 commits
  17. 08 Jul, 2019 4 commits
  18. 07 Jul, 2019 1 commit