        SUBROUTINE SVDsrt(d,v,n)
        USE nrtype; USE nrutil, ONLY : assert_eq,imaxloc,swap
        IMPLICIT NONE
        REAL(SP), DIMENSION(:), INTENT(INOUT) :: d
        REAL(SP), DIMENSION(:,:), INTENT(INOUT) :: v
        INTEGER(I4B) :: i,j,n
        n=assert_eq(size(d),size(v,1),size(v,2),'eigsrt')
        do i=1,n-1
                j=imaxloc(d(i:n))+i-1
                if (j /= i) then
                        call swap(d(i),d(j))
                        call swap(v(:,i),v(:,j))
                end if
        end do
        END SUBROUTINE SVDsrt
