FUNCTION eclazz(equiv,n) USE nrtype; USE nrutil, ONLY : arth IMPLICIT NONE INTERFACE FUNCTION equiv(i,j) USE nrtype IMPLICIT NONE LOGICAL(LGT) :: equiv INTEGER(I4B), INTENT(IN) :: i,j END FUNCTION equiv END INTERFACE INTEGER(I4B), INTENT(IN) :: n INTEGER(I4B), DIMENSION(n) :: eclazz INTEGER :: i,j eclazz(1:n)=arth(1,1,n) do i=2,n do j=1,i-1 eclazz(j)=eclazz(eclazz(j)) if (equiv(i,j)) eclazz(eclazz(eclazz(j)))=i end do end do do i=1,n eclazz(i)=eclazz(eclazz(i)) end do END FUNCTION eclazz