= (&
& .not.present(
index) .and. &
endif
if (LLfast) then
!- Only Quick-sort & CountingSort covered
inumt = OML_MAX_THREADS()
LLomp_okay = (inumt > 1 .and.
nomp >= inumt .and.
n >=
nomp)
LLomp_okay = (LLomp_okay .and. .not. OML_IN_PARALLEL()) ! Prevents nested OpenMP
!-- Max 2-way OpenMP parallelism for now ...
!$OMP PARALLEL PRIVATE(
iret)
!$OMP SECTIONS
!$OMP SECTION
CALL ecqsortfast(KEYSORT_NUMBER,
ichunk,
a(1), irev,
iret)
!$OMP SECTION
CALL ecqsortfast(KEYSORT_NUMBER,
n-ichunk, a(ichunk+1), irev,
iret)
!$OMP END SECTIONS
!$OMP END PARALLEL
CALL ecmerge2(KEYSORT_NUMBER, 1, ichunk,
n-ichunk, a(1), &
& idummy, 0, 1, irev, idummy, rc)
else
CALL ecqsortfast(KEYSORT_NUMBER,
n, a(1), irev, rc)
endif
GOTO 99
CALL ec_countingsort(KEYSORT_NUMBER, n, 1, 1, a(1), idummy, 0, 1, irev, rc)
else
LLinit = .FALSE.
index_adj = 0
else
index_adj = 1
endif
CALL ec_countingsort(KEYSORT_NUMBER, n, 1, 1, a(1), index(1),
size(index), index_adj, irev, rc)
endif
GOTO 99
else
LLfast = .false.
endif
endif
!-- LLfast == .FALSE. :
allocate(aa(n,1))
aa(1:n,1) = -a(1:n)
else
aa(1:n,1) = a(1:n)
endif
a(1:n) = -aa(1:n,1)
else
a(1:n) = aa(1:n,1)
endif
deallocate(aa)
99 continue
IF (LHOOK) CALL DR_HOOK(KEYSORT_1D_DRHOOKSTR,1,ZHOOK_HANDLE,n)
END SUBROUTINE
SUBROUTINE KEYSORT_2D(&
&rc, a, n,&
&key, multikey, method,&
&index,
init, transposed)
integer(kind=jpim), parameter quicksort_method
intent(out) overrides sub arrays one Sort by the least significant key first< BEGIN > else CALL no reversing is needed savings if(imethod==quicksort_method .or. &imethod==countingsort_method) LLdescending
subroutine, public init_index(INDEX, INDEX_ADJ)
quick &counting sorts only ichunk(inumt)) inc
quick &counting sorts only inumt inumt imethod
quick &counting sorts only inumt inumt inumt
subroutine, public adjust_index(INDEX, INDEX_ADJ)
static unsigned char * init
INTERFACE SUBROUTINE JPRB IMPLICIT NONE INTEGER(KIND=JPIM)
quick &counting sorts only inumt inumt nomp
!define ISRCHFLTPV_N !define ISRCHFLTPV_N ISRCHFLTPV_NBITER IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I-1)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+1)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+2)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+3)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+4)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+5)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+6)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+7)).LT.ISRCHFLTPV_TARGET) THEN ISRCHFLTPV_RESULT
integer(kind=jpim), parameter countingsort_method