program demo_prank ! partially rank array use,intrinsic :: iso_fortran_env, only : int32, real32, real64 use M_orderpack, only : prank implicit none integer,parameter :: ivals=300 real(kind=real32) :: valsr(2000) real(kind=real32) :: out(ivals) integer :: indx(2000) integer :: i call random_seed() call random_number(valsr) valsr=valsr*1000000.0-500000.0 call prank(valsr,indx,ivals) out=valsr(indx(:ivals)) do i=1,ivals-1 if (out(i+1).lt.out(i))then write(*,*)'not sorted' stop 1 endif enddo write(*,*)'random array now sorted' end program demo_prank