Ticket #38571: arpack.patch

File arpack.patch, 2.7 KB (added by wimmer@…, 11 years ago)

Patch for ARPACK

  • scipy/sparse/linalg/eigen/arpack/ARPACK/SRC/dseupd.f

    subroutine dseupd (rvec , howmny, select, d , 
    760760     &                ldq   , workl(iw+ncv), workl(ihb),
    761761     &                ncv   , temp         , ierr)
    762762c
     763c        %-----------------------------------------------------%
     764c        | Make a copy of the last row into                    |
     765c        | workl(iw+ncv:iw+2*ncv), as it is needed again in    |
     766c        | the Ritz vector purification step below             |
     767c        %-----------------------------------------------------%
     768c
     769         do 67 j = 1, nconv
     770            workl(iw+ncv+j-1) = workl(ihb+j-1)
     771 67      continue
     772
    763773      else if (rvec .and. howmny .eq. 'S') then
    764774c
    765775c     Not yet implemented. See remark 2 above.
    subroutine dseupd (rvec , howmny, select, d , 
    830840      if (rvec .and. (type .eq. 'SHIFTI' .or. type .eq. 'CAYLEY')) then
    831841c
    832842         do 110 k=0, nconv-1
    833             workl(iw+k) = workl(iq+k*ldq+ncv-1)
     843            workl(iw+k) = workl(iw+ncv+k)
    834844     &                  / workl(iw+k)
    835845 110     continue
    836846c
    837847      else if (rvec .and. type .eq. 'BUCKLE') then
    838848c
    839849         do 120 k=0, nconv-1
    840             workl(iw+k) = workl(iq+k*ldq+ncv-1)
     850            workl(iw+k) = workl(iw+ncv+k)
    841851     &                  / (workl(iw+k)-one)
    842852 120     continue
    843853c
  • scipy/sparse/linalg/eigen/arpack/ARPACK/SRC/sseupd.f

    subroutine sseupd(rvec , howmny, select, d , 
    760760     &                ldq   , workl(iw+ncv), workl(ihb),
    761761     &                ncv   , temp         , ierr)
    762762c
     763c        %-----------------------------------------------------%
     764c        | Make a copy of the last row into                    |
     765c        | workl(iw+ncv:iw+2*ncv), as it is needed again in    |
     766c        | the Ritz vector purification step below             |
     767c        %-----------------------------------------------------%
     768c
     769         do 67 j = 1, nconv
     770            workl(iw+ncv+j-1) = workl(ihb+j-1)
     771 67      continue
     772
    763773      else if (rvec .and. howmny .eq. 'S') then
    764774c
    765775c     Not yet implemented. See remark 2 above.
    subroutine sseupd(rvec , howmny, select, d , 
    830840      if (rvec .and. (type .eq. 'SHIFTI' .or. type .eq. 'CAYLEY')) then
    831841c
    832842         do 110 k=0, nconv-1
    833             workl(iw+k) = workl(iq+k*ldq+ncv-1)
     843            workl(iw+k) = workl(iw+ncv+k)
    834844     &                  / workl(iw+k)
    835845 110     continue
    836846c
    837847      else if (rvec .and. type .eq. 'BUCKLE') then
    838848c
    839849         do 120 k=0, nconv-1
    840             workl(iw+k) = workl(iq+k*ldq+ncv-1)
     850            workl(iw+k) = workl(iw+ncv+k)
    841851     &                  / (workl(iw+k)-one)
    842852 120     continue
    843853c