demo_rank_unique Program

Contents

Source Code


Variables

Type Attributes Name Initial
integer, allocatable :: INVALS(:)
character(len=*), parameter :: g = '(*(g0,1x))'

Subroutines

subroutine printme()

Arguments

None

Source Code

     program demo_rank_unique
     ! rank an array, with removal of duplicate entries.
     use M_orderpack, only : rank_unique
     implicit none
     character(len=*),parameter :: g='(*(g0,1x))'
     integer,allocatable :: INVALS(:)
     !
     INVALS=[10,5,7,1,4,5,6,8,9,10,1]
     call printme()
     INVALS=[-1,0,-2,0,-3,0,-4]
     call printme()
     contains
     subroutine printme()
     integer,allocatable :: irngt(:)
     integer :: nuni
        if(allocated(irngt))deallocate(irngt)
        allocate(irngt(size(INVALS)))
        write(*,g)'ORIGINAL:',INVALS
        call rank_unique(INVALS,irngt,nuni)
        write(*,g)'NUMBER OF UNIQUE INDICES:',nuni
        write(*,g)'RETURNED INDICES:',irngt(:nuni)
        write(*,g)'SORTED DATA:',INVALS(irngt(:nuni))
     end subroutine
     end program demo_rank_unique