1313contains
1414! For int8, radix sort becomes counting sort, so buffer is not needed
1515 pure subroutine radix_sort_u8_helper (N , arr )
16- integer (kind= int_size ), intent (in ) :: N
16+ integer (kind= int_index ), intent (in ) :: N
1717 integer (kind= int8), dimension (N), intent (inout ) :: arr
18- integer (kind= int_size ) :: i
18+ integer (kind= int_index ) :: i
1919 integer :: bin_idx
20- integer (kind= int_size ), dimension (- 128 :127 ) :: counts
20+ integer (kind= int_index ), dimension (- 128 :127 ) :: counts
2121 counts(:) = 0
2222 do i = 1 , N
2323 bin_idx = arr(i)
@@ -34,12 +34,12 @@ pure subroutine radix_sort_u8_helper(N, arr)
3434 end subroutine
3535
3636 pure subroutine radix_sort_u16_helper (N , arr , buf )
37- integer (kind= int_size ), intent (in ) :: N
37+ integer (kind= int_index ), intent (in ) :: N
3838 integer (kind= int16), dimension (N), intent (inout ) :: arr
3939 integer (kind= int16), dimension (N), intent (inout ) :: buf
40- integer (kind= int_size ) :: i
40+ integer (kind= int_index ) :: i
4141 integer :: b, b0, b1
42- integer (kind= int_size ), dimension (0 :radix_mask) :: c0, c1
42+ integer (kind= int_index ), dimension (0 :radix_mask) :: c0, c1
4343 c0(:) = 0
4444 c1(:) = 0
4545 do i = 1 , N
@@ -65,12 +65,12 @@ pure subroutine radix_sort_u16_helper(N, arr, buf)
6565 end subroutine
6666
6767 pure subroutine radix_sort_u32_helper (N , arr , buf )
68- integer (kind= int_size ), intent (in ) :: N
68+ integer (kind= int_index ), intent (in ) :: N
6969 integer (kind= int32), dimension (N), intent (inout ) :: arr
7070 integer (kind= int32), dimension (N), intent (inout ) :: buf
71- integer (kind= int_size ) :: i
71+ integer (kind= int_index ) :: i
7272 integer :: b, b0, b1, b2, b3
73- integer (kind= int_size ), dimension (0 :radix_mask) :: c0, c1, c2, c3
73+ integer (kind= int_index ), dimension (0 :radix_mask) :: c0, c1, c2, c3
7474 c0(:) = 0
7575 c1(:) = 0
7676 c2(:) = 0
@@ -114,12 +114,12 @@ pure subroutine radix_sort_u32_helper(N, arr, buf)
114114 end subroutine radix_sort_u32_helper
115115
116116 pure subroutine radix_sort_u64_helper (N , arr , buffer )
117- integer (kind= int_size ), intent (in ) :: N
117+ integer (kind= int_index ), intent (in ) :: N
118118 integer (kind= int64), dimension (N), intent (inout ) :: arr
119119 integer (kind= int64), dimension (N), intent (inout ) :: buffer
120- integer (kind= int_size ) :: i
120+ integer (kind= int_index ) :: i
121121 integer (kind= int64) :: b, b0, b1, b2, b3, b4, b5, b6, b7
122- integer (kind= int_size ), dimension (0 :radix_mask) :: c0, c1, c2, c3, c4, c5, c6, c7
122+ integer (kind= int_index ), dimension (0 :radix_mask) :: c0, c1, c2, c3, c4, c5, c6, c7
123123 c0(:) = 0
124124 c1(:) = 0
125125 c2(:) = 0
@@ -202,8 +202,8 @@ pure module subroutine int8_radix_sort(array, reverse)
202202 integer (kind= int8), dimension (:), intent (inout ) :: array
203203 logical , intent (in ), optional :: reverse
204204 integer (kind= int8) :: item
205- integer (kind= int_size ) :: i, N
206- N = size (array, kind= int_size )
205+ integer (kind= int_index ) :: i, N
206+ N = size (array, kind= int_index )
207207 call radix_sort_u8_helper(N, array)
208208 if (optval(reverse, .false. )) then
209209 do i = 1 , N/ 2
@@ -218,13 +218,13 @@ pure module subroutine int16_radix_sort(array, work, reverse)
218218 integer (kind= int16), dimension (:), intent (inout ) :: array
219219 integer (kind= int16), dimension (:), intent (inout ), target , optional :: work
220220 logical , intent (in ), optional :: reverse
221- integer (kind= int_size ) :: i, N, start, middle, end
221+ integer (kind= int_index ) :: i, N, start, middle, end
222222 integer (kind= int16), dimension (:), pointer :: buffer
223223 integer (kind= int16) :: item
224224 logical :: use_internal_buffer
225- N = size (array, kind= int_size )
225+ N = size (array, kind= int_index )
226226 if (present (work)) then
227- if (size (work, kind= int_size ) < N) then
227+ if (size (work, kind= int_index ) < N) then
228228 error stop " int16_radix_sort: work array is too small."
229229 end if
230230 use_internal_buffer = .false.
@@ -270,13 +270,13 @@ pure module subroutine int32_radix_sort(array, work, reverse)
270270 integer (kind= int32), dimension (:), intent (inout ) :: array
271271 integer (kind= int32), dimension (:), intent (inout ), target , optional :: work
272272 logical , intent (in ), optional :: reverse
273- integer (kind= int_size ) :: i, N, start, middle, end
273+ integer (kind= int_index ) :: i, N, start, middle, end
274274 integer (kind= int32), dimension (:), pointer :: buffer
275275 integer (kind= int32) :: item
276276 logical :: use_internal_buffer
277- N = size (array, kind= int_size )
277+ N = size (array, kind= int_index )
278278 if (present (work)) then
279- if (size (work, kind= int_size ) < N) then
279+ if (size (work, kind= int_index ) < N) then
280280 error stop " int32_radix_sort: work array is too small."
281281 end if
282282 use_internal_buffer = .false.
@@ -320,14 +320,14 @@ module subroutine sp_radix_sort(array, work, reverse)
320320 real (kind= sp), dimension (:), intent (inout ), target :: array
321321 real (kind= sp), dimension (:), intent (inout ), target , optional :: work
322322 logical , intent (in ), optional :: reverse
323- integer (kind= int_size ) :: i, N, pos, rev_pos
323+ integer (kind= int_index ) :: i, N, pos, rev_pos
324324 integer (kind= int32), dimension (:), pointer :: arri32
325325 integer (kind= int32), dimension (:), pointer :: buffer
326326 real (kind= sp) :: item
327327 logical :: use_internal_buffer
328- N = size (array, kind= int_size )
328+ N = size (array, kind= int_index )
329329 if (present (work)) then
330- if (size (work, kind= int_size ) < N) then
330+ if (size (work, kind= int_index ) < N) then
331331 error stop " sp_radix_sort: work array is too small."
332332 end if
333333 use_internal_buffer = .false.
@@ -373,13 +373,13 @@ pure module subroutine int64_radix_sort(array, work, reverse)
373373 integer (kind= int64), dimension (:), intent (inout ) :: array
374374 integer (kind= int64), dimension (:), intent (inout ), target , optional :: work
375375 logical , intent (in ), optional :: reverse
376- integer (kind= int_size ) :: i, N, start, middle, end
376+ integer (kind= int_index ) :: i, N, start, middle, end
377377 integer (kind= int64), dimension (:), pointer :: buffer
378378 integer (kind= int64) :: item
379379 logical :: use_internal_buffer
380- N = size (array, kind= int_size )
380+ N = size (array, kind= int_index )
381381 if (present (work)) then
382- if (size (work, kind= int_size ) < N) then
382+ if (size (work, kind= int_index ) < N) then
383383 error stop " int64_radix_sort: work array is too small."
384384 end if
385385 use_internal_buffer = .false.
@@ -423,14 +423,14 @@ module subroutine dp_radix_sort(array, work, reverse)
423423 real (kind= dp), dimension (:), intent (inout ), target :: array
424424 real (kind= dp), dimension (:), intent (inout ), target , optional :: work
425425 logical , intent (in ), optional :: reverse
426- integer (kind= int_size ) :: i, N, pos, rev_pos
426+ integer (kind= int_index ) :: i, N, pos, rev_pos
427427 integer (kind= int64), dimension (:), pointer :: arri64
428428 integer (kind= int64), dimension (:), pointer :: buffer
429429 real (kind= dp) :: item
430430 logical :: use_internal_buffer
431- N = size (array, kind= int_size )
431+ N = size (array, kind= int_index )
432432 if (present (work)) then
433- if (size (work, kind= int_size ) < N) then
433+ if (size (work, kind= int_index ) < N) then
434434 error stop " sp_radix_sort: work array is too small."
435435 end if
436436 use_internal_buffer = .false.
0 commit comments