SUBROUTINE eigsrt(d,v)
	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 eigsrt