Skip to main content

RemoveDuplicates

This routine removes duplicate entries from the set of integer.

note

RemoveDuplicates will perform reallocation. If you do not want reallocation then use RemoveDuplicates_

Calling example:

CALL RemoveDuplicates(avec)

Without reallocation:

CALL RemoveDuplicates_(avec, tsize, isSorted)

Interface

INTERFACE RemoveDuplicates
MODULE PURE SUBROUTINE RemoveDuplicates_1a(obj)
INTEGER(INT8), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1a
MODULE PURE SUBROUTINE RemoveDuplicates_1b(obj)
INTEGER(INT16), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1b
MODULE PURE SUBROUTINE RemoveDuplicates_1c(obj)
INTEGER(INT32), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1c
MODULE PURE SUBROUTINE RemoveDuplicates_1d(obj)
INTEGER(INT64), ALLOCATABLE, INTENT(INOUT) :: obj(:)
END SUBROUTINE RemoveDuplicates_1d
END INTERFACE RemoveDuplicates

Interface 2

INTERFACE RemoveDuplicates_
MODULE PURE SUBROUTINE RemoveDuplicates_1a_(obj, tsize, isSorted)
INTEGER(INT8), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1a_

MODULE PURE SUBROUTINE RemoveDuplicates_1b_(obj, tsize, isSorted)
INTEGER(INT16), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1b_

MODULE PURE SUBROUTINE RemoveDuplicates_1c_(obj, tsize, isSorted)
INTEGER(INT32), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1c_

MODULE PURE SUBROUTINE RemoveDuplicates_1d_(obj, tsize, isSorted)
INTEGER(INT64), INTENT(INOUT) :: obj(:)
!! obj(1:tsize) will have unique entries
LOGICAL(LGT), INTENT(IN) :: isSorted
!! if obj is sorted then set isSorted to true
INTEGER(I4B), INTENT(OUT) :: tsize
!! number of unique entries found
END SUBROUTINE RemoveDuplicates_1d_

END INTERFACE RemoveDuplicates_