mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-06 22:23:55 +01:00
348 lines
9.8 KiB
Fortran
348 lines
9.8 KiB
Fortran
|
module qsort_module
|
||
|
use iso_c_binding
|
||
|
|
||
|
interface
|
||
|
|
||
|
subroutine i2sort_c(A, iorder, isize) bind(C, name="qsort_int16_t")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
end subroutine i2sort_c
|
||
|
|
||
|
subroutine i2sort_noidx_c(A, isize) bind(C, name="qsort_int16_t_noidx")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
end subroutine i2sort_noidx_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine i2sort_big_c(A, iorder, isize) bind(C, name="qsort_int16_t_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
end subroutine i2sort_big_c
|
||
|
|
||
|
subroutine i2sort_noidx_big_c(A, isize) bind(C, name="qsort_int16_t_noidx_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
end subroutine i2sort_noidx_big_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine isort_c(A, iorder, isize) bind(C, name="qsort_int32_t")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
end subroutine isort_c
|
||
|
|
||
|
subroutine isort_noidx_c(A, isize) bind(C, name="qsort_int32_t_noidx")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
end subroutine isort_noidx_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine isort_big_c(A, iorder, isize) bind(C, name="qsort_int32_t_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
end subroutine isort_big_c
|
||
|
|
||
|
subroutine isort_noidx_big_c(A, isize) bind(C, name="qsort_int32_t_noidx_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
end subroutine isort_noidx_big_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine i8sort_c(A, iorder, isize) bind(C, name="qsort_int64_t")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
end subroutine i8sort_c
|
||
|
|
||
|
subroutine i8sort_noidx_c(A, isize) bind(C, name="qsort_int64_t_noidx")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
end subroutine i8sort_noidx_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine i8sort_big_c(A, iorder, isize) bind(C, name="qsort_int64_t_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
end subroutine i8sort_big_c
|
||
|
|
||
|
subroutine i8sort_noidx_big_c(A, isize) bind(C, name="qsort_int64_t_noidx_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
end subroutine i8sort_noidx_big_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine dsort_c(A, iorder, isize) bind(C, name="qsort_double")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
real (c_double) :: A(isize)
|
||
|
end subroutine dsort_c
|
||
|
|
||
|
subroutine dsort_noidx_c(A, isize) bind(C, name="qsort_double_noidx")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
real (c_double) :: A(isize)
|
||
|
end subroutine dsort_noidx_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine dsort_big_c(A, iorder, isize) bind(C, name="qsort_double_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
real (c_double) :: A(isize)
|
||
|
end subroutine dsort_big_c
|
||
|
|
||
|
subroutine dsort_noidx_big_c(A, isize) bind(C, name="qsort_double_noidx_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
real (c_double) :: A(isize)
|
||
|
end subroutine dsort_noidx_big_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine sort_c(A, iorder, isize) bind(C, name="qsort_float")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
real (c_float) :: A(isize)
|
||
|
end subroutine sort_c
|
||
|
|
||
|
subroutine sort_noidx_c(A, isize) bind(C, name="qsort_float_noidx")
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t), value :: isize
|
||
|
real (c_float) :: A(isize)
|
||
|
end subroutine sort_noidx_c
|
||
|
|
||
|
|
||
|
|
||
|
subroutine sort_big_c(A, iorder, isize) bind(C, name="qsort_float_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
real (c_float) :: A(isize)
|
||
|
end subroutine sort_big_c
|
||
|
|
||
|
subroutine sort_noidx_big_c(A, isize) bind(C, name="qsort_float_noidx_big")
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t), value :: isize
|
||
|
real (c_float) :: A(isize)
|
||
|
end subroutine sort_noidx_big_c
|
||
|
|
||
|
|
||
|
|
||
|
end interface
|
||
|
|
||
|
end module qsort_module
|
||
|
|
||
|
|
||
|
subroutine i2sort(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
call i2sort_c(A, iorder, isize)
|
||
|
end subroutine i2sort
|
||
|
|
||
|
subroutine i2sort_noidx(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
call i2sort_noidx_c(A, isize)
|
||
|
end subroutine i2sort_noidx
|
||
|
|
||
|
|
||
|
|
||
|
subroutine i2sort_big(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
call i2sort_big_c(A, iorder, isize)
|
||
|
end subroutine i2sort_big
|
||
|
|
||
|
subroutine i2sort_noidx_big(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer (c_int16_t) :: A(isize)
|
||
|
call i2sort_noidx_big_c(A, isize)
|
||
|
end subroutine i2sort_noidx_big
|
||
|
|
||
|
|
||
|
|
||
|
subroutine isort(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
call isort_c(A, iorder, isize)
|
||
|
end subroutine isort
|
||
|
|
||
|
subroutine isort_noidx(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
call isort_noidx_c(A, isize)
|
||
|
end subroutine isort_noidx
|
||
|
|
||
|
|
||
|
|
||
|
subroutine isort_big(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
call isort_big_c(A, iorder, isize)
|
||
|
end subroutine isort_big
|
||
|
|
||
|
subroutine isort_noidx_big(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer (c_int32_t) :: A(isize)
|
||
|
call isort_noidx_big_c(A, isize)
|
||
|
end subroutine isort_noidx_big
|
||
|
|
||
|
|
||
|
|
||
|
subroutine i8sort(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
call i8sort_c(A, iorder, isize)
|
||
|
end subroutine i8sort
|
||
|
|
||
|
subroutine i8sort_noidx(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
call i8sort_noidx_c(A, isize)
|
||
|
end subroutine i8sort_noidx
|
||
|
|
||
|
|
||
|
|
||
|
subroutine i8sort_big(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
call i8sort_big_c(A, iorder, isize)
|
||
|
end subroutine i8sort_big
|
||
|
|
||
|
subroutine i8sort_noidx_big(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer (c_int64_t) :: A(isize)
|
||
|
call i8sort_noidx_big_c(A, isize)
|
||
|
end subroutine i8sort_noidx_big
|
||
|
|
||
|
|
||
|
|
||
|
subroutine dsort(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
real (c_double) :: A(isize)
|
||
|
call dsort_c(A, iorder, isize)
|
||
|
end subroutine dsort
|
||
|
|
||
|
subroutine dsort_noidx(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int32_t) :: isize
|
||
|
real (c_double) :: A(isize)
|
||
|
call dsort_noidx_c(A, isize)
|
||
|
end subroutine dsort_noidx
|
||
|
|
||
|
|
||
|
|
||
|
subroutine dsort_big(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
real (c_double) :: A(isize)
|
||
|
call dsort_big_c(A, iorder, isize)
|
||
|
end subroutine dsort_big
|
||
|
|
||
|
subroutine dsort_noidx_big(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int64_t) :: isize
|
||
|
real (c_double) :: A(isize)
|
||
|
call dsort_noidx_big_c(A, isize)
|
||
|
end subroutine dsort_noidx_big
|
||
|
|
||
|
|
||
|
|
||
|
subroutine sort(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int32_t) :: isize
|
||
|
integer(c_int32_t) :: iorder(isize)
|
||
|
real (c_float) :: A(isize)
|
||
|
call sort_c(A, iorder, isize)
|
||
|
end subroutine sort
|
||
|
|
||
|
subroutine sort_noidx(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int32_t) :: isize
|
||
|
real (c_float) :: A(isize)
|
||
|
call sort_noidx_c(A, isize)
|
||
|
end subroutine sort_noidx
|
||
|
|
||
|
|
||
|
|
||
|
subroutine sort_big(A, iorder, isize)
|
||
|
use qsort_module
|
||
|
use iso_c_binding
|
||
|
integer(c_int64_t) :: isize
|
||
|
integer(c_int64_t) :: iorder(isize)
|
||
|
real (c_float) :: A(isize)
|
||
|
call sort_big_c(A, iorder, isize)
|
||
|
end subroutine sort_big
|
||
|
|
||
|
subroutine sort_noidx_big(A, isize)
|
||
|
use iso_c_binding
|
||
|
use qsort_module
|
||
|
integer(c_int64_t) :: isize
|
||
|
real (c_float) :: A(isize)
|
||
|
call sort_noidx_big_c(A, isize)
|
||
|
end subroutine sort_noidx_big
|