Return only the unique values from vec.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in), | dimension(:) | :: | vec |
function unique32(vec) result(vec_unique) integer,dimension(:),intent(in) :: vec integer,dimension(:),allocatable :: vec_unique integer :: i,num logical,dimension(size(vec)) :: mask mask = .false. do i=1,size(vec) !count the number of occurrences of this element: num = count( vec(i)==vec ) if (num==1) then !there is only one, flag it: mask(i) = .true. else !flag this value only if it hasn't already been flagged: if (.not. any(vec(i)==vec .and. mask) ) mask(i) = .true. end if end do !return only flagged elements: allocate( vec_unique(count(mask)) ) vec_unique = pack( vec, mask ) ! also sort it: call sort(vec_unique) end function unique32