ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_arrayRank.F90
Go to the documentation of this file.
1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3!!!! !!!!
4!!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
5!!!! !!!!
6!!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
7!!!! !!!!
8!!!! This file is part of the ParaMonte library. !!!!
9!!!! !!!!
10!!!! LICENSE !!!!
11!!!! !!!!
12!!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
13!!!! !!!!
14!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
129
130! \copydetails pm_arrayRank
131
132!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
133
135
136 use pm_kind, only: SK, IK, LK
137
138 implicit none
139
140 character(*,SK), parameter :: MODULE_NAME = "@pm_arrayRank"
141
142!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
143
169 type, abstract :: rank_type
170 end type
171
172!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
173
205 type, extends(rank_type) :: dense_type
206 end type
207
232 type(dense_type), parameter :: dense = dense_type()
233
234!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
235
267 type, extends(rank_type) :: ordinal_type
268 end type
269
294 type(ordinal_type), parameter :: ordinal = ordinal_type()
295
296!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
297
329 type, extends(rank_type) :: modified_type
330 end type
331
356 type(modified_type), parameter :: modified = modified_type()
357
358!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
359
391 type, extends(rank_type) :: standard_type
392 end type
393
418 type(standard_type), parameter :: standard = standard_type()
419
420!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
421
453 type, extends(rank_type) :: fractional_type
454 end type
455
481
482!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
483
623 interface getRankDense
624
625 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
626 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
627 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
628
629 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
630
631#if SK5_ENABLED
632 module function getRankDenseDefCom_D0_SK5(array) result(rank)
633#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
634 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D0_SK5
635#endif
636 use pm_kind, only: TKR => IK, SKG => SK5
637 character(*,SKG) , intent(in) :: array
638 integer(TKR) :: rank(len(array, IK))
639 end function
640#endif
641
642#if SK4_ENABLED
643 module function getRankDenseDefCom_D0_SK4(array) result(rank)
644#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
645 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D0_SK4
646#endif
647 use pm_kind, only: TKR => IK, SKG => SK4
648 character(*,SKG) , intent(in) :: array
649 integer(TKR) :: rank(len(array, IK))
650 end function
651#endif
652
653#if SK3_ENABLED
654 module function getRankDenseDefCom_D0_SK3(array) result(rank)
655#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
656 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D0_SK3
657#endif
658 use pm_kind, only: TKR => IK, SKG => SK3
659 character(*,SKG) , intent(in) :: array
660 integer(TKR) :: rank(len(array, IK))
661 end function
662#endif
663
664#if SK2_ENABLED
665 module function getRankDenseDefCom_D0_SK2(array) result(rank)
666#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
667 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D0_SK2
668#endif
669 use pm_kind, only: TKR => IK, SKG => SK2
670 character(*,SKG) , intent(in) :: array
671 integer(TKR) :: rank(len(array, IK))
672 end function
673#endif
674
675#if SK1_ENABLED
676 module function getRankDenseDefCom_D0_SK1(array) result(rank)
677#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
678 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D0_SK1
679#endif
680 use pm_kind, only: TKR => IK, SKG => SK1
681 character(*,SKG) , intent(in) :: array
682 integer(TKR) :: rank(len(array, IK))
683 end function
684#endif
685
686 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
687
688#if SK5_ENABLED
689 module function getRankDenseDefCom_D1_SK5(array) result(rank)
690#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
691 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_SK5
692#endif
693 use pm_kind, only: TKR => IK, SKG => SK5
694 character(*,SKG) , intent(in) , contiguous :: array(:)
695 integer(TKR) :: rank(size(array, kind = IK))
696 end function
697#endif
698
699#if SK4_ENABLED
700 module function getRankDenseDefCom_D1_SK4(array) result(rank)
701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
702 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_SK4
703#endif
704 use pm_kind, only: TKR => IK, SKG => SK4
705 character(*,SKG) , intent(in) , contiguous :: array(:)
706 integer(TKR) :: rank(size(array, kind = IK))
707 end function
708#endif
709
710#if SK3_ENABLED
711 module function getRankDenseDefCom_D1_SK3(array) result(rank)
712#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
713 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_SK3
714#endif
715 use pm_kind, only: TKR => IK, SKG => SK3
716 character(*,SKG) , intent(in) , contiguous :: array(:)
717 integer(TKR) :: rank(size(array, kind = IK))
718 end function
719#endif
720
721#if SK2_ENABLED
722 module function getRankDenseDefCom_D1_SK2(array) result(rank)
723#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
724 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_SK2
725#endif
726 use pm_kind, only: TKR => IK, SKG => SK2
727 character(*,SKG) , intent(in) , contiguous :: array(:)
728 integer(TKR) :: rank(size(array, kind = IK))
729 end function
730#endif
731
732#if SK1_ENABLED
733 module function getRankDenseDefCom_D1_SK1(array) result(rank)
734#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
735 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_SK1
736#endif
737 use pm_kind, only: TKR => IK, SKG => SK1
738 character(*,SKG) , intent(in) , contiguous :: array(:)
739 integer(TKR) :: rank(size(array, kind = IK))
740 end function
741#endif
742
743 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
744
745#if IK5_ENABLED
746 module function getRankDenseDefCom_D1_IK5(array) result(rank)
747#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
748 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_IK5
749#endif
750 use pm_kind, only: TKR => IK, IKG => IK5
751 integer(IKG) , intent(in) , contiguous :: array(:)
752 integer(TKR) :: rank(size(array, kind = IK))
753 end function
754#endif
755
756#if IK4_ENABLED
757 module function getRankDenseDefCom_D1_IK4(array) result(rank)
758#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
759 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_IK4
760#endif
761 use pm_kind, only: TKR => IK, IKG => IK4
762 integer(IKG) , intent(in) , contiguous :: array(:)
763 integer(TKR) :: rank(size(array, kind = IK))
764 end function
765#endif
766
767#if IK3_ENABLED
768 module function getRankDenseDefCom_D1_IK3(array) result(rank)
769#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
770 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_IK3
771#endif
772 use pm_kind, only: TKR => IK, IKG => IK3
773 integer(IKG) , intent(in) , contiguous :: array(:)
774 integer(TKR) :: rank(size(array, kind = IK))
775 end function
776#endif
777
778#if IK2_ENABLED
779 module function getRankDenseDefCom_D1_IK2(array) result(rank)
780#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
781 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_IK2
782#endif
783 use pm_kind, only: TKR => IK, IKG => IK2
784 integer(IKG) , intent(in) , contiguous :: array(:)
785 integer(TKR) :: rank(size(array, kind = IK))
786 end function
787#endif
788
789#if IK1_ENABLED
790 module function getRankDenseDefCom_D1_IK1(array) result(rank)
791#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
792 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_IK1
793#endif
794 use pm_kind, only: TKR => IK, IKG => IK1
795 integer(IKG) , intent(in) , contiguous :: array(:)
796 integer(TKR) :: rank(size(array, kind = IK))
797 end function
798#endif
799
800 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
801
802#if LK5_ENABLED
803 module function getRankDenseDefCom_D1_LK5(array) result(rank)
804#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
805 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_LK5
806#endif
807 use pm_kind, only: TKR => IK, LKG => LK5
808 logical(LKG) , intent(in) , contiguous :: array(:)
809 integer(TKR) :: rank(size(array, kind = IK))
810 end function
811#endif
812
813#if LK4_ENABLED
814 module function getRankDenseDefCom_D1_LK4(array) result(rank)
815#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
816 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_LK4
817#endif
818 use pm_kind, only: TKR => IK, LKG => LK4
819 logical(LKG) , intent(in) , contiguous :: array(:)
820 integer(TKR) :: rank(size(array, kind = IK))
821 end function
822#endif
823
824#if LK3_ENABLED
825 module function getRankDenseDefCom_D1_LK3(array) result(rank)
826#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
827 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_LK3
828#endif
829 use pm_kind, only: TKR => IK, LKG => LK3
830 logical(LKG) , intent(in) , contiguous :: array(:)
831 integer(TKR) :: rank(size(array, kind = IK))
832 end function
833#endif
834
835#if LK2_ENABLED
836 module function getRankDenseDefCom_D1_LK2(array) result(rank)
837#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
838 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_LK2
839#endif
840 use pm_kind, only: TKR => IK, LKG => LK2
841 logical(LKG) , intent(in) , contiguous :: array(:)
842 integer(TKR) :: rank(size(array, kind = IK))
843 end function
844#endif
845
846#if LK1_ENABLED
847 module function getRankDenseDefCom_D1_LK1(array) result(rank)
848#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
849 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_LK1
850#endif
851 use pm_kind, only: TKR => IK, LKG => LK1
852 logical(LKG) , intent(in) , contiguous :: array(:)
853 integer(TKR) :: rank(size(array, kind = IK))
854 end function
855#endif
856
857 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
858
859#if CK5_ENABLED
860 module function getRankDenseDefCom_D1_CK5(array) result(rank)
861#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
862 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_CK5
863#endif
864 use pm_kind, only: TKR => IK, CKG => CK5
865 complex(CKG) , intent(in) , contiguous :: array(:)
866 integer(TKR) :: rank(size(array, kind = IK))
867 end function
868#endif
869
870#if CK4_ENABLED
871 module function getRankDenseDefCom_D1_CK4(array) result(rank)
872#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
873 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_CK4
874#endif
875 use pm_kind, only: TKR => IK, CKG => CK4
876 complex(CKG) , intent(in) , contiguous :: array(:)
877 integer(TKR) :: rank(size(array, kind = IK))
878 end function
879#endif
880
881#if CK3_ENABLED
882 module function getRankDenseDefCom_D1_CK3(array) result(rank)
883#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
884 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_CK3
885#endif
886 use pm_kind, only: TKR => IK, CKG => CK3
887 complex(CKG) , intent(in) , contiguous :: array(:)
888 integer(TKR) :: rank(size(array, kind = IK))
889 end function
890#endif
891
892#if CK2_ENABLED
893 module function getRankDenseDefCom_D1_CK2(array) result(rank)
894#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
895 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_CK2
896#endif
897 use pm_kind, only: TKR => IK, CKG => CK2
898 complex(CKG) , intent(in) , contiguous :: array(:)
899 integer(TKR) :: rank(size(array, kind = IK))
900 end function
901#endif
902
903#if CK1_ENABLED
904 module function getRankDenseDefCom_D1_CK1(array) result(rank)
905#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
906 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_CK1
907#endif
908 use pm_kind, only: TKR => IK, CKG => CK1
909 complex(CKG) , intent(in) , contiguous :: array(:)
910 integer(TKR) :: rank(size(array, kind = IK))
911 end function
912#endif
913
914 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
915
916#if RK5_ENABLED
917 module function getRankDenseDefCom_D1_RK5(array) result(rank)
918#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
919 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_RK5
920#endif
921 use pm_kind, only: TKR => IK, RKG => RK5
922 real(RKG) , intent(in) , contiguous :: array(:)
923 integer(TKR) :: rank(size(array, kind = IK))
924 end function
925#endif
926
927#if RK4_ENABLED
928 module function getRankDenseDefCom_D1_RK4(array) result(rank)
929#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
930 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_RK4
931#endif
932 use pm_kind, only: TKR => IK, RKG => RK4
933 real(RKG) , intent(in) , contiguous :: array(:)
934 integer(TKR) :: rank(size(array, kind = IK))
935 end function
936#endif
937
938#if RK3_ENABLED
939 module function getRankDenseDefCom_D1_RK3(array) result(rank)
940#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
941 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_RK3
942#endif
943 use pm_kind, only: TKR => IK, RKG => RK3
944 real(RKG) , intent(in) , contiguous :: array(:)
945 integer(TKR) :: rank(size(array, kind = IK))
946 end function
947#endif
948
949#if RK2_ENABLED
950 module function getRankDenseDefCom_D1_RK2(array) result(rank)
951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
952 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_RK2
953#endif
954 use pm_kind, only: TKR => IK, RKG => RK2
955 real(RKG) , intent(in) , contiguous :: array(:)
956 integer(TKR) :: rank(size(array, kind = IK))
957 end function
958#endif
959
960#if RK1_ENABLED
961 module function getRankDenseDefCom_D1_RK1(array) result(rank)
962#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
963 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_RK1
964#endif
965 use pm_kind, only: TKR => IK, RKG => RK1
966 real(RKG) , intent(in) , contiguous :: array(:)
967 integer(TKR) :: rank(size(array, kind = IK))
968 end function
969#endif
970
971 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
972
973#if PDT_ENABLED
974
975#if SK5_ENABLED
976 module function getRankDenseDefCom_D1_PSSK5(array) result(rank)
977#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
978 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_PSSK5
979#endif
980 use pm_kind, only: TKR => IK, SKG => SK5
981 use pm_container, only: css_pdt
982 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
983 integer(TKR) :: rank(size(array, kind = IK))
984 end function
985#endif
986
987#if SK4_ENABLED
988 module function getRankDenseDefCom_D1_PSSK4(array) result(rank)
989#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
990 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_PSSK4
991#endif
992 use pm_kind, only: TKR => IK, SKG => SK4
993 use pm_container, only: css_pdt
994 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
995 integer(TKR) :: rank(size(array, kind = IK))
996 end function
997#endif
998
999#if SK3_ENABLED
1000 module function getRankDenseDefCom_D1_PSSK3(array) result(rank)
1001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1002 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_PSSK3
1003#endif
1004 use pm_kind, only: TKR => IK, SKG => SK3
1005 use pm_container, only: css_pdt
1006 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1007 integer(TKR) :: rank(size(array, kind = IK))
1008 end function
1009#endif
1010
1011#if SK2_ENABLED
1012 module function getRankDenseDefCom_D1_PSSK2(array) result(rank)
1013#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1014 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_PSSK2
1015#endif
1016 use pm_kind, only: TKR => IK, SKG => SK2
1017 use pm_container, only: css_pdt
1018 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1019 integer(TKR) :: rank(size(array, kind = IK))
1020 end function
1021#endif
1022
1023#if SK1_ENABLED
1024 module function getRankDenseDefCom_D1_PSSK1(array) result(rank)
1025#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1026 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_PSSK1
1027#endif
1028 use pm_kind, only: TKR => IK, SKG => SK1
1029 use pm_container, only: css_pdt
1030 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1031 integer(TKR) :: rank(size(array, kind = IK))
1032 end function
1033#endif
1034
1035#endif
1036!PDT_ENABLED
1037
1038 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1039
1040 module function getRankDenseDefCom_D1_BSSK(array) result(rank)
1041#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1042 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseDefCom_D1_BSSK
1043#endif
1044 use pm_kind, only: TKR => IK, SKG => SK
1045 use pm_container, only: css_type
1046 type(css_type) , intent(in) , contiguous :: array(:)
1047 integer(TKR) :: rank(size(array, kind = IK))
1048 end function
1049
1050 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1051
1052 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1053 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1054 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1055
1056 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1057
1058#if SK5_ENABLED
1059 module function getRankDenseCusCom_D0_SK5(array, isSorted) result(rank)
1060#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1061 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D0_SK5
1062#endif
1063 use pm_kind, only: TKR => IK, SKG => SK5
1064 character(*,SKG) , intent(in) :: array
1065 procedure(logical(LK)) :: isSorted
1066 integer(TKR) :: rank(len(array, IK))
1067 end function
1068#endif
1069
1070#if SK4_ENABLED
1071 module function getRankDenseCusCom_D0_SK4(array, isSorted) result(rank)
1072#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1073 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D0_SK4
1074#endif
1075 use pm_kind, only: TKR => IK, SKG => SK4
1076 character(*,SKG) , intent(in) :: array
1077 procedure(logical(LK)) :: isSorted
1078 integer(TKR) :: rank(len(array, IK))
1079 end function
1080#endif
1081
1082#if SK3_ENABLED
1083 module function getRankDenseCusCom_D0_SK3(array, isSorted) result(rank)
1084#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1085 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D0_SK3
1086#endif
1087 use pm_kind, only: TKR => IK, SKG => SK3
1088 character(*,SKG) , intent(in) :: array
1089 procedure(logical(LK)) :: isSorted
1090 integer(TKR) :: rank(len(array, IK))
1091 end function
1092#endif
1093
1094#if SK2_ENABLED
1095 module function getRankDenseCusCom_D0_SK2(array, isSorted) result(rank)
1096#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1097 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D0_SK2
1098#endif
1099 use pm_kind, only: TKR => IK, SKG => SK2
1100 character(*,SKG) , intent(in) :: array
1101 procedure(logical(LK)) :: isSorted
1102 integer(TKR) :: rank(len(array, IK))
1103 end function
1104#endif
1105
1106#if SK1_ENABLED
1107 module function getRankDenseCusCom_D0_SK1(array, isSorted) result(rank)
1108#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1109 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D0_SK1
1110#endif
1111 use pm_kind, only: TKR => IK, SKG => SK1
1112 character(*,SKG) , intent(in) :: array
1113 procedure(logical(LK)) :: isSorted
1114 integer(TKR) :: rank(len(array, IK))
1115 end function
1116#endif
1117
1118 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1119
1120#if SK5_ENABLED
1121 module function getRankDenseCusCom_D1_SK5(array, isSorted) result(rank)
1122#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1123 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_SK5
1124#endif
1125 use pm_kind, only: TKR => IK, SKG => SK5
1126 character(*,SKG) , intent(in) , contiguous :: array(:)
1127 procedure(logical(LK)) :: isSorted
1128 integer(TKR) :: rank(size(array, kind = IK))
1129 end function
1130#endif
1131
1132#if SK4_ENABLED
1133 module function getRankDenseCusCom_D1_SK4(array, isSorted) result(rank)
1134#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1135 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_SK4
1136#endif
1137 use pm_kind, only: TKR => IK, SKG => SK4
1138 character(*,SKG) , intent(in) , contiguous :: array(:)
1139 procedure(logical(LK)) :: isSorted
1140 integer(TKR) :: rank(size(array, kind = IK))
1141 end function
1142#endif
1143
1144#if SK3_ENABLED
1145 module function getRankDenseCusCom_D1_SK3(array, isSorted) result(rank)
1146#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1147 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_SK3
1148#endif
1149 use pm_kind, only: TKR => IK, SKG => SK3
1150 character(*,SKG) , intent(in) , contiguous :: array(:)
1151 procedure(logical(LK)) :: isSorted
1152 integer(TKR) :: rank(size(array, kind = IK))
1153 end function
1154#endif
1155
1156#if SK2_ENABLED
1157 module function getRankDenseCusCom_D1_SK2(array, isSorted) result(rank)
1158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1159 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_SK2
1160#endif
1161 use pm_kind, only: TKR => IK, SKG => SK2
1162 character(*,SKG) , intent(in) , contiguous :: array(:)
1163 procedure(logical(LK)) :: isSorted
1164 integer(TKR) :: rank(size(array, kind = IK))
1165 end function
1166#endif
1167
1168#if SK1_ENABLED
1169 module function getRankDenseCusCom_D1_SK1(array, isSorted) result(rank)
1170#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1171 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_SK1
1172#endif
1173 use pm_kind, only: TKR => IK, SKG => SK1
1174 character(*,SKG) , intent(in) , contiguous :: array(:)
1175 procedure(logical(LK)) :: isSorted
1176 integer(TKR) :: rank(size(array, kind = IK))
1177 end function
1178#endif
1179
1180 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1181
1182#if IK5_ENABLED
1183 module function getRankDenseCusCom_D1_IK5(array, isSorted) result(rank)
1184#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1185 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_IK5
1186#endif
1187 use pm_kind, only: TKR => IK, IKG => IK5
1188 integer(IKG) , intent(in) , contiguous :: array(:)
1189 procedure(logical(LK)) :: isSorted
1190 integer(TKR) :: rank(size(array, kind = IK))
1191 end function
1192#endif
1193
1194#if IK4_ENABLED
1195 module function getRankDenseCusCom_D1_IK4(array, isSorted) result(rank)
1196#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1197 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_IK4
1198#endif
1199 use pm_kind, only: TKR => IK, IKG => IK4
1200 integer(IKG) , intent(in) , contiguous :: array(:)
1201 procedure(logical(LK)) :: isSorted
1202 integer(TKR) :: rank(size(array, kind = IK))
1203 end function
1204#endif
1205
1206#if IK3_ENABLED
1207 module function getRankDenseCusCom_D1_IK3(array, isSorted) result(rank)
1208#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1209 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_IK3
1210#endif
1211 use pm_kind, only: TKR => IK, IKG => IK3
1212 integer(IKG) , intent(in) , contiguous :: array(:)
1213 procedure(logical(LK)) :: isSorted
1214 integer(TKR) :: rank(size(array, kind = IK))
1215 end function
1216#endif
1217
1218#if IK2_ENABLED
1219 module function getRankDenseCusCom_D1_IK2(array, isSorted) result(rank)
1220#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1221 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_IK2
1222#endif
1223 use pm_kind, only: TKR => IK, IKG => IK2
1224 integer(IKG) , intent(in) , contiguous :: array(:)
1225 procedure(logical(LK)) :: isSorted
1226 integer(TKR) :: rank(size(array, kind = IK))
1227 end function
1228#endif
1229
1230#if IK1_ENABLED
1231 module function getRankDenseCusCom_D1_IK1(array, isSorted) result(rank)
1232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1233 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_IK1
1234#endif
1235 use pm_kind, only: TKR => IK, IKG => IK1
1236 integer(IKG) , intent(in) , contiguous :: array(:)
1237 procedure(logical(LK)) :: isSorted
1238 integer(TKR) :: rank(size(array, kind = IK))
1239 end function
1240#endif
1241
1242 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1243
1244#if LK5_ENABLED
1245 module function getRankDenseCusCom_D1_LK5(array, isSorted) result(rank)
1246#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1247 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_LK5
1248#endif
1249 use pm_kind, only: TKR => IK, LKG => LK5
1250 logical(LKG) , intent(in) , contiguous :: array(:)
1251 procedure(logical(LK)) :: isSorted
1252 integer(TKR) :: rank(size(array, kind = IK))
1253 end function
1254#endif
1255
1256#if LK4_ENABLED
1257 module function getRankDenseCusCom_D1_LK4(array, isSorted) result(rank)
1258#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1259 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_LK4
1260#endif
1261 use pm_kind, only: TKR => IK, LKG => LK4
1262 logical(LKG) , intent(in) , contiguous :: array(:)
1263 procedure(logical(LK)) :: isSorted
1264 integer(TKR) :: rank(size(array, kind = IK))
1265 end function
1266#endif
1267
1268#if LK3_ENABLED
1269 module function getRankDenseCusCom_D1_LK3(array, isSorted) result(rank)
1270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1271 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_LK3
1272#endif
1273 use pm_kind, only: TKR => IK, LKG => LK3
1274 logical(LKG) , intent(in) , contiguous :: array(:)
1275 procedure(logical(LK)) :: isSorted
1276 integer(TKR) :: rank(size(array, kind = IK))
1277 end function
1278#endif
1279
1280#if LK2_ENABLED
1281 module function getRankDenseCusCom_D1_LK2(array, isSorted) result(rank)
1282#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1283 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_LK2
1284#endif
1285 use pm_kind, only: TKR => IK, LKG => LK2
1286 logical(LKG) , intent(in) , contiguous :: array(:)
1287 procedure(logical(LK)) :: isSorted
1288 integer(TKR) :: rank(size(array, kind = IK))
1289 end function
1290#endif
1291
1292#if LK1_ENABLED
1293 module function getRankDenseCusCom_D1_LK1(array, isSorted) result(rank)
1294#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1295 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_LK1
1296#endif
1297 use pm_kind, only: TKR => IK, LKG => LK1
1298 logical(LKG) , intent(in) , contiguous :: array(:)
1299 procedure(logical(LK)) :: isSorted
1300 integer(TKR) :: rank(size(array, kind = IK))
1301 end function
1302#endif
1303
1304 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1305
1306#if CK5_ENABLED
1307 module function getRankDenseCusCom_D1_CK5(array, isSorted) result(rank)
1308#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1309 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_CK5
1310#endif
1311 use pm_kind, only: TKR => IK, CKG => CK5
1312 complex(CKG) , intent(in) , contiguous :: array(:)
1313 procedure(logical(LK)) :: isSorted
1314 integer(TKR) :: rank(size(array, kind = IK))
1315 end function
1316#endif
1317
1318#if CK4_ENABLED
1319 module function getRankDenseCusCom_D1_CK4(array, isSorted) result(rank)
1320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1321 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_CK4
1322#endif
1323 use pm_kind, only: TKR => IK, CKG => CK4
1324 complex(CKG) , intent(in) , contiguous :: array(:)
1325 procedure(logical(LK)) :: isSorted
1326 integer(TKR) :: rank(size(array, kind = IK))
1327 end function
1328#endif
1329
1330#if CK3_ENABLED
1331 module function getRankDenseCusCom_D1_CK3(array, isSorted) result(rank)
1332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1333 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_CK3
1334#endif
1335 use pm_kind, only: TKR => IK, CKG => CK3
1336 complex(CKG) , intent(in) , contiguous :: array(:)
1337 procedure(logical(LK)) :: isSorted
1338 integer(TKR) :: rank(size(array, kind = IK))
1339 end function
1340#endif
1341
1342#if CK2_ENABLED
1343 module function getRankDenseCusCom_D1_CK2(array, isSorted) result(rank)
1344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1345 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_CK2
1346#endif
1347 use pm_kind, only: TKR => IK, CKG => CK2
1348 complex(CKG) , intent(in) , contiguous :: array(:)
1349 procedure(logical(LK)) :: isSorted
1350 integer(TKR) :: rank(size(array, kind = IK))
1351 end function
1352#endif
1353
1354#if CK1_ENABLED
1355 module function getRankDenseCusCom_D1_CK1(array, isSorted) result(rank)
1356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1357 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_CK1
1358#endif
1359 use pm_kind, only: TKR => IK, CKG => CK1
1360 complex(CKG) , intent(in) , contiguous :: array(:)
1361 procedure(logical(LK)) :: isSorted
1362 integer(TKR) :: rank(size(array, kind = IK))
1363 end function
1364#endif
1365
1366 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1367
1368#if RK5_ENABLED
1369 module function getRankDenseCusCom_D1_RK5(array, isSorted) result(rank)
1370#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1371 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_RK5
1372#endif
1373 use pm_kind, only: TKR => IK, RKG => RK5
1374 real(RKG) , intent(in) , contiguous :: array(:)
1375 procedure(logical(LK)) :: isSorted
1376 integer(TKR) :: rank(size(array, kind = IK))
1377 end function
1378#endif
1379
1380#if RK4_ENABLED
1381 module function getRankDenseCusCom_D1_RK4(array, isSorted) result(rank)
1382#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1383 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_RK4
1384#endif
1385 use pm_kind, only: TKR => IK, RKG => RK4
1386 real(RKG) , intent(in) , contiguous :: array(:)
1387 procedure(logical(LK)) :: isSorted
1388 integer(TKR) :: rank(size(array, kind = IK))
1389 end function
1390#endif
1391
1392#if RK3_ENABLED
1393 module function getRankDenseCusCom_D1_RK3(array, isSorted) result(rank)
1394#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1395 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_RK3
1396#endif
1397 use pm_kind, only: TKR => IK, RKG => RK3
1398 real(RKG) , intent(in) , contiguous :: array(:)
1399 procedure(logical(LK)) :: isSorted
1400 integer(TKR) :: rank(size(array, kind = IK))
1401 end function
1402#endif
1403
1404#if RK2_ENABLED
1405 module function getRankDenseCusCom_D1_RK2(array, isSorted) result(rank)
1406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1407 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_RK2
1408#endif
1409 use pm_kind, only: TKR => IK, RKG => RK2
1410 real(RKG) , intent(in) , contiguous :: array(:)
1411 procedure(logical(LK)) :: isSorted
1412 integer(TKR) :: rank(size(array, kind = IK))
1413 end function
1414#endif
1415
1416#if RK1_ENABLED
1417 module function getRankDenseCusCom_D1_RK1(array, isSorted) result(rank)
1418#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1419 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_RK1
1420#endif
1421 use pm_kind, only: TKR => IK, RKG => RK1
1422 real(RKG) , intent(in) , contiguous :: array(:)
1423 procedure(logical(LK)) :: isSorted
1424 integer(TKR) :: rank(size(array, kind = IK))
1425 end function
1426#endif
1427
1428 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1429
1430#if PDT_ENABLED
1431
1432#if SK5_ENABLED
1433 module function getRankDenseCusCom_D1_PSSK5(array, isSorted) result(rank)
1434#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1435 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_PSSK5
1436#endif
1437 use pm_kind, only: TKR => IK, SKG => SK5
1438 use pm_container, only: css_pdt
1439 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1440 procedure(logical(LK)) :: isSorted
1441 integer(TKR) :: rank(size(array, kind = IK))
1442 end function
1443#endif
1444
1445#if SK4_ENABLED
1446 module function getRankDenseCusCom_D1_PSSK4(array, isSorted) result(rank)
1447#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1448 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_PSSK4
1449#endif
1450 use pm_kind, only: TKR => IK, SKG => SK4
1451 use pm_container, only: css_pdt
1452 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1453 procedure(logical(LK)) :: isSorted
1454 integer(TKR) :: rank(size(array, kind = IK))
1455 end function
1456#endif
1457
1458#if SK3_ENABLED
1459 module function getRankDenseCusCom_D1_PSSK3(array, isSorted) result(rank)
1460#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1461 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_PSSK3
1462#endif
1463 use pm_kind, only: TKR => IK, SKG => SK3
1464 use pm_container, only: css_pdt
1465 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1466 procedure(logical(LK)) :: isSorted
1467 integer(TKR) :: rank(size(array, kind = IK))
1468 end function
1469#endif
1470
1471#if SK2_ENABLED
1472 module function getRankDenseCusCom_D1_PSSK2(array, isSorted) result(rank)
1473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1474 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_PSSK2
1475#endif
1476 use pm_kind, only: TKR => IK, SKG => SK2
1477 use pm_container, only: css_pdt
1478 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1479 procedure(logical(LK)) :: isSorted
1480 integer(TKR) :: rank(size(array, kind = IK))
1481 end function
1482#endif
1483
1484#if SK1_ENABLED
1485 module function getRankDenseCusCom_D1_PSSK1(array, isSorted) result(rank)
1486#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1487 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_PSSK1
1488#endif
1489 use pm_kind, only: TKR => IK, SKG => SK1
1490 use pm_container, only: css_pdt
1491 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1492 integer(TKR) :: rank(size(array, kind = IK))
1493 procedure(logical(LK)) :: isSorted
1494 end function
1495#endif
1496
1497#endif
1498!PDT_ENABLED
1499
1500 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1501
1502 module function getRankDenseCusCom_D1_BSSK(array, isSorted) result(rank)
1503#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1504 !DEC$ ATTRIBUTES DLLEXPORT :: getRankDenseCusCom_D1_BSSK
1505#endif
1506 use pm_kind, only: TKR => IK, SKG => SK
1507 use pm_container, only: css_type
1508 type(css_type) , intent(in) , contiguous :: array(:)
1509 procedure(logical(LK)) :: isSorted
1510 integer(TKR) :: rank(size(array, kind = IK))
1511 end function
1512
1513 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1514
1515 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1516 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1517 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1518
1519 end interface
1520
1521!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1522
1663
1664 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1665 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1666 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1667
1668 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1669
1670#if SK5_ENABLED
1671 PURE module subroutine setRankDenseDefCom_D0_SK5(rank, array)
1672#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1673 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D0_SK5
1674#endif
1675 use pm_kind, only: TKR => IK, SKG => SK5
1676 character(*,SKG) , intent(in) :: array
1677 integer(TKR) , intent(out) , contiguous :: rank(:)
1678 end subroutine
1679#endif
1680
1681#if SK4_ENABLED
1682 PURE module subroutine setRankDenseDefCom_D0_SK4(rank, array)
1683#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1684 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D0_SK4
1685#endif
1686 use pm_kind, only: TKR => IK, SKG => SK4
1687 character(*,SKG) , intent(in) :: array
1688 integer(TKR) , intent(out) , contiguous :: rank(:)
1689 end subroutine
1690#endif
1691
1692#if SK3_ENABLED
1693 PURE module subroutine setRankDenseDefCom_D0_SK3(rank, array)
1694#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1695 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D0_SK3
1696#endif
1697 use pm_kind, only: TKR => IK, SKG => SK3
1698 character(*,SKG) , intent(in) :: array
1699 integer(TKR) , intent(out) , contiguous :: rank(:)
1700 end subroutine
1701#endif
1702
1703#if SK2_ENABLED
1704 PURE module subroutine setRankDenseDefCom_D0_SK2(rank, array)
1705#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1706 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D0_SK2
1707#endif
1708 use pm_kind, only: TKR => IK, SKG => SK2
1709 character(*,SKG) , intent(in) :: array
1710 integer(TKR) , intent(out) , contiguous :: rank(:)
1711 end subroutine
1712#endif
1713
1714#if SK1_ENABLED
1715 PURE module subroutine setRankDenseDefCom_D0_SK1(rank, array)
1716#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1717 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D0_SK1
1718#endif
1719 use pm_kind, only: TKR => IK, SKG => SK1
1720 character(*,SKG) , intent(in) :: array
1721 integer(TKR) , intent(out) , contiguous :: rank(:)
1722 end subroutine
1723#endif
1724
1725 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1726
1727#if SK5_ENABLED
1728 PURE module subroutine setRankDenseDefCom_D1_SK5(rank, array)
1729#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1730 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_SK5
1731#endif
1732 use pm_kind, only: TKR => IK, SKG => SK5
1733 character(*,SKG) , intent(in) , contiguous :: array(:)
1734 integer(TKR) , intent(out) , contiguous :: rank(:)
1735 end subroutine
1736#endif
1737
1738#if SK4_ENABLED
1739 PURE module subroutine setRankDenseDefCom_D1_SK4(rank, array)
1740#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1741 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_SK4
1742#endif
1743 use pm_kind, only: TKR => IK, SKG => SK4
1744 character(*,SKG) , intent(in) , contiguous :: array(:)
1745 integer(TKR) , intent(out) , contiguous :: rank(:)
1746 end subroutine
1747#endif
1748
1749#if SK3_ENABLED
1750 PURE module subroutine setRankDenseDefCom_D1_SK3(rank, array)
1751#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1752 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_SK3
1753#endif
1754 use pm_kind, only: TKR => IK, SKG => SK3
1755 character(*,SKG) , intent(in) , contiguous :: array(:)
1756 integer(TKR) , intent(out) , contiguous :: rank(:)
1757 end subroutine
1758#endif
1759
1760#if SK2_ENABLED
1761 PURE module subroutine setRankDenseDefCom_D1_SK2(rank, array)
1762#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1763 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_SK2
1764#endif
1765 use pm_kind, only: TKR => IK, SKG => SK2
1766 character(*,SKG) , intent(in) , contiguous :: array(:)
1767 integer(TKR) , intent(out) , contiguous :: rank(:)
1768 end subroutine
1769#endif
1770
1771#if SK1_ENABLED
1772 PURE module subroutine setRankDenseDefCom_D1_SK1(rank, array)
1773#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1774 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_SK1
1775#endif
1776 use pm_kind, only: TKR => IK, SKG => SK1
1777 character(*,SKG) , intent(in) , contiguous :: array(:)
1778 integer(TKR) , intent(out) , contiguous :: rank(:)
1779 end subroutine
1780#endif
1781
1782 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1783
1784#if IK5_ENABLED
1785 PURE module subroutine setRankDenseDefCom_D1_IK5(rank, array)
1786#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1787 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_IK5
1788#endif
1789 use pm_kind, only: TKR => IK, IKG => IK5
1790 integer(IKG) , intent(in) , contiguous :: array(:)
1791 integer(TKR) , intent(out) , contiguous :: rank(:)
1792 end subroutine
1793#endif
1794
1795#if IK4_ENABLED
1796 PURE module subroutine setRankDenseDefCom_D1_IK4(rank, array)
1797#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1798 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_IK4
1799#endif
1800 use pm_kind, only: TKR => IK, IKG => IK4
1801 integer(IKG) , intent(in) , contiguous :: array(:)
1802 integer(TKR) , intent(out) , contiguous :: rank(:)
1803 end subroutine
1804#endif
1805
1806#if IK3_ENABLED
1807 PURE module subroutine setRankDenseDefCom_D1_IK3(rank, array)
1808#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1809 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_IK3
1810#endif
1811 use pm_kind, only: TKR => IK, IKG => IK3
1812 integer(IKG) , intent(in) , contiguous :: array(:)
1813 integer(TKR) , intent(out) , contiguous :: rank(:)
1814 end subroutine
1815#endif
1816
1817#if IK2_ENABLED
1818 PURE module subroutine setRankDenseDefCom_D1_IK2(rank, array)
1819#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1820 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_IK2
1821#endif
1822 use pm_kind, only: TKR => IK, IKG => IK2
1823 integer(IKG) , intent(in) , contiguous :: array(:)
1824 integer(TKR) , intent(out) , contiguous :: rank(:)
1825 end subroutine
1826#endif
1827
1828#if IK1_ENABLED
1829 PURE module subroutine setRankDenseDefCom_D1_IK1(rank, array)
1830#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1831 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_IK1
1832#endif
1833 use pm_kind, only: TKR => IK, IKG => IK1
1834 integer(IKG) , intent(in) , contiguous :: array(:)
1835 integer(TKR) , intent(out) , contiguous :: rank(:)
1836 end subroutine
1837#endif
1838
1839 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1840
1841#if LK5_ENABLED
1842 PURE module subroutine setRankDenseDefCom_D1_LK5(rank, array)
1843#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1844 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_LK5
1845#endif
1846 use pm_kind, only: TKR => IK, LKG => LK5
1847 logical(LKG) , intent(in) , contiguous :: array(:)
1848 integer(TKR) , intent(out) , contiguous :: rank(:)
1849 end subroutine
1850#endif
1851
1852#if LK4_ENABLED
1853 PURE module subroutine setRankDenseDefCom_D1_LK4(rank, array)
1854#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1855 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_LK4
1856#endif
1857 use pm_kind, only: TKR => IK, LKG => LK4
1858 logical(LKG) , intent(in) , contiguous :: array(:)
1859 integer(TKR) , intent(out) , contiguous :: rank(:)
1860 end subroutine
1861#endif
1862
1863#if LK3_ENABLED
1864 PURE module subroutine setRankDenseDefCom_D1_LK3(rank, array)
1865#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1866 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_LK3
1867#endif
1868 use pm_kind, only: TKR => IK, LKG => LK3
1869 logical(LKG) , intent(in) , contiguous :: array(:)
1870 integer(TKR) , intent(out) , contiguous :: rank(:)
1871 end subroutine
1872#endif
1873
1874#if LK2_ENABLED
1875 PURE module subroutine setRankDenseDefCom_D1_LK2(rank, array)
1876#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1877 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_LK2
1878#endif
1879 use pm_kind, only: TKR => IK, LKG => LK2
1880 logical(LKG) , intent(in) , contiguous :: array(:)
1881 integer(TKR) , intent(out) , contiguous :: rank(:)
1882 end subroutine
1883#endif
1884
1885#if LK1_ENABLED
1886 PURE module subroutine setRankDenseDefCom_D1_LK1(rank, array)
1887#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1888 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_LK1
1889#endif
1890 use pm_kind, only: TKR => IK, LKG => LK1
1891 logical(LKG) , intent(in) , contiguous :: array(:)
1892 integer(TKR) , intent(out) , contiguous :: rank(:)
1893 end subroutine
1894#endif
1895
1896 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1897
1898#if CK5_ENABLED
1899 PURE module subroutine setRankDenseDefCom_D1_CK5(rank, array)
1900#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1901 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_CK5
1902#endif
1903 use pm_kind, only: TKR => IK, CKG => CK5
1904 complex(CKG) , intent(in) , contiguous :: array(:)
1905 integer(TKR) , intent(out) , contiguous :: rank(:)
1906 end subroutine
1907#endif
1908
1909#if CK4_ENABLED
1910 PURE module subroutine setRankDenseDefCom_D1_CK4(rank, array)
1911#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1912 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_CK4
1913#endif
1914 use pm_kind, only: TKR => IK, CKG => CK4
1915 complex(CKG) , intent(in) , contiguous :: array(:)
1916 integer(TKR) , intent(out) , contiguous :: rank(:)
1917 end subroutine
1918#endif
1919
1920#if CK3_ENABLED
1921 PURE module subroutine setRankDenseDefCom_D1_CK3(rank, array)
1922#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1923 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_CK3
1924#endif
1925 use pm_kind, only: TKR => IK, CKG => CK3
1926 complex(CKG) , intent(in) , contiguous :: array(:)
1927 integer(TKR) , intent(out) , contiguous :: rank(:)
1928 end subroutine
1929#endif
1930
1931#if CK2_ENABLED
1932 PURE module subroutine setRankDenseDefCom_D1_CK2(rank, array)
1933#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1934 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_CK2
1935#endif
1936 use pm_kind, only: TKR => IK, CKG => CK2
1937 complex(CKG) , intent(in) , contiguous :: array(:)
1938 integer(TKR) , intent(out) , contiguous :: rank(:)
1939 end subroutine
1940#endif
1941
1942#if CK1_ENABLED
1943 PURE module subroutine setRankDenseDefCom_D1_CK1(rank, array)
1944#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1945 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_CK1
1946#endif
1947 use pm_kind, only: TKR => IK, CKG => CK1
1948 complex(CKG) , intent(in) , contiguous :: array(:)
1949 integer(TKR) , intent(out) , contiguous :: rank(:)
1950 end subroutine
1951#endif
1952
1953 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1954
1955#if RK5_ENABLED
1956 PURE module subroutine setRankDenseDefCom_D1_RK5(rank, array)
1957#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1958 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_RK5
1959#endif
1960 use pm_kind, only: TKR => IK, RKG => RK5
1961 real(RKG) , intent(in) , contiguous :: array(:)
1962 integer(TKR) , intent(out) , contiguous :: rank(:)
1963 end subroutine
1964#endif
1965
1966#if RK4_ENABLED
1967 PURE module subroutine setRankDenseDefCom_D1_RK4(rank, array)
1968#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1969 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_RK4
1970#endif
1971 use pm_kind, only: TKR => IK, RKG => RK4
1972 real(RKG) , intent(in) , contiguous :: array(:)
1973 integer(TKR) , intent(out) , contiguous :: rank(:)
1974 end subroutine
1975#endif
1976
1977#if RK3_ENABLED
1978 PURE module subroutine setRankDenseDefCom_D1_RK3(rank, array)
1979#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1980 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_RK3
1981#endif
1982 use pm_kind, only: TKR => IK, RKG => RK3
1983 real(RKG) , intent(in) , contiguous :: array(:)
1984 integer(TKR) , intent(out) , contiguous :: rank(:)
1985 end subroutine
1986#endif
1987
1988#if RK2_ENABLED
1989 PURE module subroutine setRankDenseDefCom_D1_RK2(rank, array)
1990#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1991 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_RK2
1992#endif
1993 use pm_kind, only: TKR => IK, RKG => RK2
1994 real(RKG) , intent(in) , contiguous :: array(:)
1995 integer(TKR) , intent(out) , contiguous :: rank(:)
1996 end subroutine
1997#endif
1998
1999#if RK1_ENABLED
2000 PURE module subroutine setRankDenseDefCom_D1_RK1(rank, array)
2001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2002 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_RK1
2003#endif
2004 use pm_kind, only: TKR => IK, RKG => RK1
2005 real(RKG) , intent(in) , contiguous :: array(:)
2006 integer(TKR) , intent(out) , contiguous :: rank(:)
2007 end subroutine
2008#endif
2009
2010 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2011
2012#if PDT_ENABLED
2013
2014#if SK5_ENABLED
2015 PURE module subroutine setRankDenseDefCom_D1_PSSK5(rank, array)
2016#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2017 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_PSSK5
2018#endif
2019 use pm_kind, only: TKR => IK, SKG => SK5
2020 use pm_container, only: css_pdt
2021 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2022 integer(TKR) , intent(out) , contiguous :: rank(:)
2023 end subroutine
2024#endif
2025
2026#if SK4_ENABLED
2027 PURE module subroutine setRankDenseDefCom_D1_PSSK4(rank, array)
2028#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2029 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_PSSK4
2030#endif
2031 use pm_kind, only: TKR => IK, SKG => SK4
2032 use pm_container, only: css_pdt
2033 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2034 integer(TKR) , intent(out) , contiguous :: rank(:)
2035 end subroutine
2036#endif
2037
2038#if SK3_ENABLED
2039 PURE module subroutine setRankDenseDefCom_D1_PSSK3(rank, array)
2040#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2041 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_PSSK3
2042#endif
2043 use pm_kind, only: TKR => IK, SKG => SK3
2044 use pm_container, only: css_pdt
2045 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2046 integer(TKR) , intent(out) , contiguous :: rank(:)
2047 end subroutine
2048#endif
2049
2050#if SK2_ENABLED
2051 PURE module subroutine setRankDenseDefCom_D1_PSSK2(rank, array)
2052#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2053 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_PSSK2
2054#endif
2055 use pm_kind, only: TKR => IK, SKG => SK2
2056 use pm_container, only: css_pdt
2057 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2058 integer(TKR) , intent(out) , contiguous :: rank(:)
2059 end subroutine
2060#endif
2061
2062#if SK1_ENABLED
2063 PURE module subroutine setRankDenseDefCom_D1_PSSK1(rank, array)
2064#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2065 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_PSSK1
2066#endif
2067 use pm_kind, only: TKR => IK, SKG => SK1
2068 use pm_container, only: css_pdt
2069 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2070 integer(TKR) , intent(out) , contiguous :: rank(:)
2071 end subroutine
2072#endif
2073
2074#endif
2075!PDT_ENABLED
2076
2077 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2078
2079 PURE module subroutine setRankDenseDefCom_D1_BSSK(rank, array)
2080#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2081 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseDefCom_D1_BSSK
2082#endif
2083 use pm_kind, only: TKR => IK, SKG => SK
2084 use pm_container, only: css_type
2085 type(css_type) , intent(in) , contiguous :: array(:)
2086 integer(TKR) , intent(out) , contiguous :: rank(:)
2087 end subroutine
2088
2089 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2090
2091 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2092 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2093 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2094
2095 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2096
2097#if SK5_ENABLED
2098 module subroutine setRankDenseCusCom_D0_SK5(rank, array, isSorted)
2099#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2100 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D0_SK5
2101#endif
2102 use pm_kind, only: TKR => IK, SKG => SK5
2103 character(*,SKG) , intent(in) :: array
2104 integer(TKR) , intent(out) , contiguous :: rank(:)
2105 procedure(logical(LK)) :: isSorted
2106 end subroutine
2107#endif
2108
2109#if SK4_ENABLED
2110 module subroutine setRankDenseCusCom_D0_SK4(rank, array, isSorted)
2111#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2112 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D0_SK4
2113#endif
2114 use pm_kind, only: TKR => IK, SKG => SK4
2115 character(*,SKG) , intent(in) :: array
2116 integer(TKR) , intent(out) , contiguous :: rank(:)
2117 procedure(logical(LK)) :: isSorted
2118 end subroutine
2119#endif
2120
2121#if SK3_ENABLED
2122 module subroutine setRankDenseCusCom_D0_SK3(rank, array, isSorted)
2123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2124 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D0_SK3
2125#endif
2126 use pm_kind, only: TKR => IK, SKG => SK3
2127 character(*,SKG) , intent(in) :: array
2128 integer(TKR) , intent(out) , contiguous :: rank(:)
2129 procedure(logical(LK)) :: isSorted
2130 end subroutine
2131#endif
2132
2133#if SK2_ENABLED
2134 module subroutine setRankDenseCusCom_D0_SK2(rank, array, isSorted)
2135#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2136 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D0_SK2
2137#endif
2138 use pm_kind, only: TKR => IK, SKG => SK2
2139 character(*,SKG) , intent(in) :: array
2140 integer(TKR) , intent(out) , contiguous :: rank(:)
2141 procedure(logical(LK)) :: isSorted
2142 end subroutine
2143#endif
2144
2145#if SK1_ENABLED
2146 module subroutine setRankDenseCusCom_D0_SK1(rank, array, isSorted)
2147#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2148 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D0_SK1
2149#endif
2150 use pm_kind, only: TKR => IK, SKG => SK1
2151 character(*,SKG) , intent(in) :: array
2152 integer(TKR) , intent(out) , contiguous :: rank(:)
2153 procedure(logical(LK)) :: isSorted
2154 end subroutine
2155#endif
2156
2157 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2158
2159#if SK5_ENABLED
2160 module subroutine setRankDenseCusCom_D1_SK5(rank, array, isSorted)
2161#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2162 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_SK5
2163#endif
2164 use pm_kind, only: TKR => IK, SKG => SK5
2165 character(*,SKG) , intent(in) , contiguous :: array(:)
2166 integer(TKR) , intent(out) , contiguous :: rank(:)
2167 procedure(logical(LK)) :: isSorted
2168 end subroutine
2169#endif
2170
2171#if SK4_ENABLED
2172 module subroutine setRankDenseCusCom_D1_SK4(rank, array, isSorted)
2173#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2174 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_SK4
2175#endif
2176 use pm_kind, only: TKR => IK, SKG => SK4
2177 character(*,SKG) , intent(in) , contiguous :: array(:)
2178 integer(TKR) , intent(out) , contiguous :: rank(:)
2179 procedure(logical(LK)) :: isSorted
2180 end subroutine
2181#endif
2182
2183#if SK3_ENABLED
2184 module subroutine setRankDenseCusCom_D1_SK3(rank, array, isSorted)
2185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2186 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_SK3
2187#endif
2188 use pm_kind, only: TKR => IK, SKG => SK3
2189 character(*,SKG) , intent(in) , contiguous :: array(:)
2190 integer(TKR) , intent(out) , contiguous :: rank(:)
2191 procedure(logical(LK)) :: isSorted
2192 end subroutine
2193#endif
2194
2195#if SK2_ENABLED
2196 module subroutine setRankDenseCusCom_D1_SK2(rank, array, isSorted)
2197#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2198 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_SK2
2199#endif
2200 use pm_kind, only: TKR => IK, SKG => SK2
2201 character(*,SKG) , intent(in) , contiguous :: array(:)
2202 integer(TKR) , intent(out) , contiguous :: rank(:)
2203 procedure(logical(LK)) :: isSorted
2204 end subroutine
2205#endif
2206
2207#if SK1_ENABLED
2208 module subroutine setRankDenseCusCom_D1_SK1(rank, array, isSorted)
2209#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2210 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_SK1
2211#endif
2212 use pm_kind, only: TKR => IK, SKG => SK1
2213 character(*,SKG) , intent(in) , contiguous :: array(:)
2214 integer(TKR) , intent(out) , contiguous :: rank(:)
2215 procedure(logical(LK)) :: isSorted
2216 end subroutine
2217#endif
2218
2219 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2220
2221#if IK5_ENABLED
2222 module subroutine setRankDenseCusCom_D1_IK5(rank, array, isSorted)
2223#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2224 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_IK5
2225#endif
2226 use pm_kind, only: TKR => IK, IKG => IK5
2227 integer(IKG) , intent(in) , contiguous :: array(:)
2228 integer(TKR) , intent(out) , contiguous :: rank(:)
2229 procedure(logical(LK)) :: isSorted
2230 end subroutine
2231#endif
2232
2233#if IK4_ENABLED
2234 module subroutine setRankDenseCusCom_D1_IK4(rank, array, isSorted)
2235#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2236 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_IK4
2237#endif
2238 use pm_kind, only: TKR => IK, IKG => IK4
2239 integer(IKG) , intent(in) , contiguous :: array(:)
2240 integer(TKR) , intent(out) , contiguous :: rank(:)
2241 procedure(logical(LK)) :: isSorted
2242 end subroutine
2243#endif
2244
2245#if IK3_ENABLED
2246 module subroutine setRankDenseCusCom_D1_IK3(rank, array, isSorted)
2247#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2248 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_IK3
2249#endif
2250 use pm_kind, only: TKR => IK, IKG => IK3
2251 integer(IKG) , intent(in) , contiguous :: array(:)
2252 integer(TKR) , intent(out) , contiguous :: rank(:)
2253 procedure(logical(LK)) :: isSorted
2254 end subroutine
2255#endif
2256
2257#if IK2_ENABLED
2258 module subroutine setRankDenseCusCom_D1_IK2(rank, array, isSorted)
2259#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2260 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_IK2
2261#endif
2262 use pm_kind, only: TKR => IK, IKG => IK2
2263 integer(IKG) , intent(in) , contiguous :: array(:)
2264 integer(TKR) , intent(out) , contiguous :: rank(:)
2265 procedure(logical(LK)) :: isSorted
2266 end subroutine
2267#endif
2268
2269#if IK1_ENABLED
2270 module subroutine setRankDenseCusCom_D1_IK1(rank, array, isSorted)
2271#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2272 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_IK1
2273#endif
2274 use pm_kind, only: TKR => IK, IKG => IK1
2275 integer(IKG) , intent(in) , contiguous :: array(:)
2276 integer(TKR) , intent(out) , contiguous :: rank(:)
2277 procedure(logical(LK)) :: isSorted
2278 end subroutine
2279#endif
2280
2281 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2282
2283#if LK5_ENABLED
2284 module subroutine setRankDenseCusCom_D1_LK5(rank, array, isSorted)
2285#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2286 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_LK5
2287#endif
2288 use pm_kind, only: TKR => IK, LKG => LK5
2289 logical(LKG) , intent(in) , contiguous :: array(:)
2290 integer(TKR) , intent(out) , contiguous :: rank(:)
2291 procedure(logical(LK)) :: isSorted
2292 end subroutine
2293#endif
2294
2295#if LK4_ENABLED
2296 module subroutine setRankDenseCusCom_D1_LK4(rank, array, isSorted)
2297#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2298 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_LK4
2299#endif
2300 use pm_kind, only: TKR => IK, LKG => LK4
2301 logical(LKG) , intent(in) , contiguous :: array(:)
2302 integer(TKR) , intent(out) , contiguous :: rank(:)
2303 procedure(logical(LK)) :: isSorted
2304 end subroutine
2305#endif
2306
2307#if LK3_ENABLED
2308 module subroutine setRankDenseCusCom_D1_LK3(rank, array, isSorted)
2309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2310 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_LK3
2311#endif
2312 use pm_kind, only: TKR => IK, LKG => LK3
2313 logical(LKG) , intent(in) , contiguous :: array(:)
2314 integer(TKR) , intent(out) , contiguous :: rank(:)
2315 procedure(logical(LK)) :: isSorted
2316 end subroutine
2317#endif
2318
2319#if LK2_ENABLED
2320 module subroutine setRankDenseCusCom_D1_LK2(rank, array, isSorted)
2321#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2322 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_LK2
2323#endif
2324 use pm_kind, only: TKR => IK, LKG => LK2
2325 logical(LKG) , intent(in) , contiguous :: array(:)
2326 integer(TKR) , intent(out) , contiguous :: rank(:)
2327 procedure(logical(LK)) :: isSorted
2328 end subroutine
2329#endif
2330
2331#if LK1_ENABLED
2332 module subroutine setRankDenseCusCom_D1_LK1(rank, array, isSorted)
2333#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2334 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_LK1
2335#endif
2336 use pm_kind, only: TKR => IK, LKG => LK1
2337 logical(LKG) , intent(in) , contiguous :: array(:)
2338 integer(TKR) , intent(out) , contiguous :: rank(:)
2339 procedure(logical(LK)) :: isSorted
2340 end subroutine
2341#endif
2342
2343 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2344
2345#if CK5_ENABLED
2346 module subroutine setRankDenseCusCom_D1_CK5(rank, array, isSorted)
2347#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2348 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_CK5
2349#endif
2350 use pm_kind, only: TKR => IK, CKG => CK5
2351 complex(CKG) , intent(in) , contiguous :: array(:)
2352 integer(TKR) , intent(out) , contiguous :: rank(:)
2353 procedure(logical(LK)) :: isSorted
2354 end subroutine
2355#endif
2356
2357#if CK4_ENABLED
2358 module subroutine setRankDenseCusCom_D1_CK4(rank, array, isSorted)
2359#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2360 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_CK4
2361#endif
2362 use pm_kind, only: TKR => IK, CKG => CK4
2363 complex(CKG) , intent(in) , contiguous :: array(:)
2364 integer(TKR) , intent(out) , contiguous :: rank(:)
2365 procedure(logical(LK)) :: isSorted
2366 end subroutine
2367#endif
2368
2369#if CK3_ENABLED
2370 module subroutine setRankDenseCusCom_D1_CK3(rank, array, isSorted)
2371#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2372 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_CK3
2373#endif
2374 use pm_kind, only: TKR => IK, CKG => CK3
2375 complex(CKG) , intent(in) , contiguous :: array(:)
2376 integer(TKR) , intent(out) , contiguous :: rank(:)
2377 procedure(logical(LK)) :: isSorted
2378 end subroutine
2379#endif
2380
2381#if CK2_ENABLED
2382 module subroutine setRankDenseCusCom_D1_CK2(rank, array, isSorted)
2383#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2384 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_CK2
2385#endif
2386 use pm_kind, only: TKR => IK, CKG => CK2
2387 complex(CKG) , intent(in) , contiguous :: array(:)
2388 integer(TKR) , intent(out) , contiguous :: rank(:)
2389 procedure(logical(LK)) :: isSorted
2390 end subroutine
2391#endif
2392
2393#if CK1_ENABLED
2394 module subroutine setRankDenseCusCom_D1_CK1(rank, array, isSorted)
2395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2396 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_CK1
2397#endif
2398 use pm_kind, only: TKR => IK, CKG => CK1
2399 complex(CKG) , intent(in) , contiguous :: array(:)
2400 integer(TKR) , intent(out) , contiguous :: rank(:)
2401 procedure(logical(LK)) :: isSorted
2402 end subroutine
2403#endif
2404
2405 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2406
2407#if RK5_ENABLED
2408 module subroutine setRankDenseCusCom_D1_RK5(rank, array, isSorted)
2409#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2410 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_RK5
2411#endif
2412 use pm_kind, only: TKR => IK, RKG => RK5
2413 real(RKG) , intent(in) , contiguous :: array(:)
2414 integer(TKR) , intent(out) , contiguous :: rank(:)
2415 procedure(logical(LK)) :: isSorted
2416 end subroutine
2417#endif
2418
2419#if RK4_ENABLED
2420 module subroutine setRankDenseCusCom_D1_RK4(rank, array, isSorted)
2421#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2422 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_RK4
2423#endif
2424 use pm_kind, only: TKR => IK, RKG => RK4
2425 real(RKG) , intent(in) , contiguous :: array(:)
2426 integer(TKR) , intent(out) , contiguous :: rank(:)
2427 procedure(logical(LK)) :: isSorted
2428 end subroutine
2429#endif
2430
2431#if RK3_ENABLED
2432 module subroutine setRankDenseCusCom_D1_RK3(rank, array, isSorted)
2433#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2434 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_RK3
2435#endif
2436 use pm_kind, only: TKR => IK, RKG => RK3
2437 real(RKG) , intent(in) , contiguous :: array(:)
2438 integer(TKR) , intent(out) , contiguous :: rank(:)
2439 procedure(logical(LK)) :: isSorted
2440 end subroutine
2441#endif
2442
2443#if RK2_ENABLED
2444 module subroutine setRankDenseCusCom_D1_RK2(rank, array, isSorted)
2445#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2446 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_RK2
2447#endif
2448 use pm_kind, only: TKR => IK, RKG => RK2
2449 real(RKG) , intent(in) , contiguous :: array(:)
2450 integer(TKR) , intent(out) , contiguous :: rank(:)
2451 procedure(logical(LK)) :: isSorted
2452 end subroutine
2453#endif
2454
2455#if RK1_ENABLED
2456 module subroutine setRankDenseCusCom_D1_RK1(rank, array, isSorted)
2457#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2458 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_RK1
2459#endif
2460 use pm_kind, only: TKR => IK, RKG => RK1
2461 real(RKG) , intent(in) , contiguous :: array(:)
2462 integer(TKR) , intent(out) , contiguous :: rank(:)
2463 procedure(logical(LK)) :: isSorted
2464 end subroutine
2465#endif
2466
2467 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2468
2469#if PDT_ENABLED
2470
2471#if SK5_ENABLED
2472 module subroutine setRankDenseCusCom_D1_PSSK5(rank, array, isSorted)
2473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2474 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_PSSK5
2475#endif
2476 use pm_kind, only: TKR => IK, SKG => SK5
2477 use pm_container, only: css_pdt
2478 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2479 integer(TKR) , intent(out) , contiguous :: rank(:)
2480 procedure(logical(LK)) :: isSorted
2481 end subroutine
2482#endif
2483
2484#if SK4_ENABLED
2485 module subroutine setRankDenseCusCom_D1_PSSK4(rank, array, isSorted)
2486#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2487 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_PSSK4
2488#endif
2489 use pm_kind, only: TKR => IK, SKG => SK4
2490 use pm_container, only: css_pdt
2491 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2492 integer(TKR) , intent(out) , contiguous :: rank(:)
2493 procedure(logical(LK)) :: isSorted
2494 end subroutine
2495#endif
2496
2497#if SK3_ENABLED
2498 module subroutine setRankDenseCusCom_D1_PSSK3(rank, array, isSorted)
2499#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2500 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_PSSK3
2501#endif
2502 use pm_kind, only: TKR => IK, SKG => SK3
2503 use pm_container, only: css_pdt
2504 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2505 integer(TKR) , intent(out) , contiguous :: rank(:)
2506 procedure(logical(LK)) :: isSorted
2507 end subroutine
2508#endif
2509
2510#if SK2_ENABLED
2511 module subroutine setRankDenseCusCom_D1_PSSK2(rank, array, isSorted)
2512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2513 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_PSSK2
2514#endif
2515 use pm_kind, only: TKR => IK, SKG => SK2
2516 use pm_container, only: css_pdt
2517 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2518 integer(TKR) , intent(out) , contiguous :: rank(:)
2519 procedure(logical(LK)) :: isSorted
2520 end subroutine
2521#endif
2522
2523#if SK1_ENABLED
2524 module subroutine setRankDenseCusCom_D1_PSSK1(rank, array, isSorted)
2525#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2526 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_PSSK1
2527#endif
2528 use pm_kind, only: TKR => IK, SKG => SK1
2529 use pm_container, only: css_pdt
2530 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
2531 integer(TKR) , intent(out) , contiguous :: rank(:)
2532 procedure(logical(LK)) :: isSorted
2533 end subroutine
2534#endif
2535
2536#endif
2537!PDT_ENABLED
2538
2539 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2540
2541 module subroutine setRankDenseCusCom_D1_BSSK(rank, array, isSorted)
2542#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2543 !DEC$ ATTRIBUTES DLLEXPORT :: setRankDenseCusCom_D1_BSSK
2544#endif
2545 use pm_kind, only: TKR => IK, SKG => SK
2546 use pm_container, only: css_type
2547 type(css_type) , intent(in) , contiguous :: array(:)
2548 integer(TKR) , intent(out) , contiguous :: rank(:)
2549 procedure(logical(LK)) :: isSorted
2550 end subroutine
2551
2552 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2553
2554 end interface
2555
2556!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2557
2704
2705 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2706 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2707 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2708
2709 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2710
2711#if SK5_ENABLED
2712 module function getRankFractionalDefCom_D0_SK5(array) result(rank)
2713#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2714 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D0_SK5
2715#endif
2716 use pm_kind, only: TKR => RK, SKG => SK5
2717 character(*,SKG) , intent(in) :: array
2718 real(TKR) :: rank(len(array, IK))
2719 end function
2720#endif
2721
2722#if SK4_ENABLED
2723 module function getRankFractionalDefCom_D0_SK4(array) result(rank)
2724#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2725 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D0_SK4
2726#endif
2727 use pm_kind, only: TKR => RK, SKG => SK4
2728 character(*,SKG) , intent(in) :: array
2729 real(TKR) :: rank(len(array, IK))
2730 end function
2731#endif
2732
2733#if SK3_ENABLED
2734 module function getRankFractionalDefCom_D0_SK3(array) result(rank)
2735#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2736 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D0_SK3
2737#endif
2738 use pm_kind, only: TKR => RK, SKG => SK3
2739 character(*,SKG) , intent(in) :: array
2740 real(TKR) :: rank(len(array, IK))
2741 end function
2742#endif
2743
2744#if SK2_ENABLED
2745 module function getRankFractionalDefCom_D0_SK2(array) result(rank)
2746#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2747 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D0_SK2
2748#endif
2749 use pm_kind, only: TKR => RK, SKG => SK2
2750 character(*,SKG) , intent(in) :: array
2751 real(TKR) :: rank(len(array, IK))
2752 end function
2753#endif
2754
2755#if SK1_ENABLED
2756 module function getRankFractionalDefCom_D0_SK1(array) result(rank)
2757#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2758 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D0_SK1
2759#endif
2760 use pm_kind, only: TKR => RK, SKG => SK1
2761 character(*,SKG) , intent(in) :: array
2762 real(TKR) :: rank(len(array, IK))
2763 end function
2764#endif
2765
2766 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2767
2768#if SK5_ENABLED
2769 module function getRankFractionalDefCom_D1_SK5(array) result(rank)
2770#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2771 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_SK5
2772#endif
2773 use pm_kind, only: TKR => RK, SKG => SK5
2774 character(*,SKG) , intent(in) , contiguous :: array(:)
2775 real(TKR) :: rank(size(array, kind = IK))
2776 end function
2777#endif
2778
2779#if SK4_ENABLED
2780 module function getRankFractionalDefCom_D1_SK4(array) result(rank)
2781#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2782 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_SK4
2783#endif
2784 use pm_kind, only: TKR => RK, SKG => SK4
2785 character(*,SKG) , intent(in) , contiguous :: array(:)
2786 real(TKR) :: rank(size(array, kind = IK))
2787 end function
2788#endif
2789
2790#if SK3_ENABLED
2791 module function getRankFractionalDefCom_D1_SK3(array) result(rank)
2792#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2793 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_SK3
2794#endif
2795 use pm_kind, only: TKR => RK, SKG => SK3
2796 character(*,SKG) , intent(in) , contiguous :: array(:)
2797 real(TKR) :: rank(size(array, kind = IK))
2798 end function
2799#endif
2800
2801#if SK2_ENABLED
2802 module function getRankFractionalDefCom_D1_SK2(array) result(rank)
2803#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2804 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_SK2
2805#endif
2806 use pm_kind, only: TKR => RK, SKG => SK2
2807 character(*,SKG) , intent(in) , contiguous :: array(:)
2808 real(TKR) :: rank(size(array, kind = IK))
2809 end function
2810#endif
2811
2812#if SK1_ENABLED
2813 module function getRankFractionalDefCom_D1_SK1(array) result(rank)
2814#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2815 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_SK1
2816#endif
2817 use pm_kind, only: TKR => RK, SKG => SK1
2818 character(*,SKG) , intent(in) , contiguous :: array(:)
2819 real(TKR) :: rank(size(array, kind = IK))
2820 end function
2821#endif
2822
2823 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2824
2825#if IK5_ENABLED
2826 module function getRankFractionalDefCom_D1_IK5(array) result(rank)
2827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2828 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_IK5
2829#endif
2830 use pm_kind, only: TKR => RK, IKG => IK5
2831 integer(IKG) , intent(in) , contiguous :: array(:)
2832 real(TKR) :: rank(size(array, kind = IK))
2833 end function
2834#endif
2835
2836#if IK4_ENABLED
2837 module function getRankFractionalDefCom_D1_IK4(array) result(rank)
2838#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2839 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_IK4
2840#endif
2841 use pm_kind, only: TKR => RK, IKG => IK4
2842 integer(IKG) , intent(in) , contiguous :: array(:)
2843 real(TKR) :: rank(size(array, kind = IK))
2844 end function
2845#endif
2846
2847#if IK3_ENABLED
2848 module function getRankFractionalDefCom_D1_IK3(array) result(rank)
2849#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2850 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_IK3
2851#endif
2852 use pm_kind, only: TKR => RK, IKG => IK3
2853 integer(IKG) , intent(in) , contiguous :: array(:)
2854 real(TKR) :: rank(size(array, kind = IK))
2855 end function
2856#endif
2857
2858#if IK2_ENABLED
2859 module function getRankFractionalDefCom_D1_IK2(array) result(rank)
2860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2861 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_IK2
2862#endif
2863 use pm_kind, only: TKR => RK, IKG => IK2
2864 integer(IKG) , intent(in) , contiguous :: array(:)
2865 real(TKR) :: rank(size(array, kind = IK))
2866 end function
2867#endif
2868
2869#if IK1_ENABLED
2870 module function getRankFractionalDefCom_D1_IK1(array) result(rank)
2871#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2872 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_IK1
2873#endif
2874 use pm_kind, only: TKR => RK, IKG => IK1
2875 integer(IKG) , intent(in) , contiguous :: array(:)
2876 real(TKR) :: rank(size(array, kind = IK))
2877 end function
2878#endif
2879
2880 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2881
2882#if LK5_ENABLED
2883 module function getRankFractionalDefCom_D1_LK5(array) result(rank)
2884#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2885 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_LK5
2886#endif
2887 use pm_kind, only: TKR => RK, LKG => LK5
2888 logical(LKG) , intent(in) , contiguous :: array(:)
2889 real(TKR) :: rank(size(array, kind = IK))
2890 end function
2891#endif
2892
2893#if LK4_ENABLED
2894 module function getRankFractionalDefCom_D1_LK4(array) result(rank)
2895#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2896 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_LK4
2897#endif
2898 use pm_kind, only: TKR => RK, LKG => LK4
2899 logical(LKG) , intent(in) , contiguous :: array(:)
2900 real(TKR) :: rank(size(array, kind = IK))
2901 end function
2902#endif
2903
2904#if LK3_ENABLED
2905 module function getRankFractionalDefCom_D1_LK3(array) result(rank)
2906#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2907 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_LK3
2908#endif
2909 use pm_kind, only: TKR => RK, LKG => LK3
2910 logical(LKG) , intent(in) , contiguous :: array(:)
2911 real(TKR) :: rank(size(array, kind = IK))
2912 end function
2913#endif
2914
2915#if LK2_ENABLED
2916 module function getRankFractionalDefCom_D1_LK2(array) result(rank)
2917#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2918 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_LK2
2919#endif
2920 use pm_kind, only: TKR => RK, LKG => LK2
2921 logical(LKG) , intent(in) , contiguous :: array(:)
2922 real(TKR) :: rank(size(array, kind = IK))
2923 end function
2924#endif
2925
2926#if LK1_ENABLED
2927 module function getRankFractionalDefCom_D1_LK1(array) result(rank)
2928#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2929 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_LK1
2930#endif
2931 use pm_kind, only: TKR => RK, LKG => LK1
2932 logical(LKG) , intent(in) , contiguous :: array(:)
2933 real(TKR) :: rank(size(array, kind = IK))
2934 end function
2935#endif
2936
2937 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2938
2939#if CK5_ENABLED
2940 module function getRankFractionalDefCom_D1_CK5(array) result(rank)
2941#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2942 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_CK5
2943#endif
2944 use pm_kind, only: TKR => RK, CKG => CK5
2945 complex(CKG) , intent(in) , contiguous :: array(:)
2946 real(TKR) :: rank(size(array, kind = IK))
2947 end function
2948#endif
2949
2950#if CK4_ENABLED
2951 module function getRankFractionalDefCom_D1_CK4(array) result(rank)
2952#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2953 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_CK4
2954#endif
2955 use pm_kind, only: TKR => RK, CKG => CK4
2956 complex(CKG) , intent(in) , contiguous :: array(:)
2957 real(TKR) :: rank(size(array, kind = IK))
2958 end function
2959#endif
2960
2961#if CK3_ENABLED
2962 module function getRankFractionalDefCom_D1_CK3(array) result(rank)
2963#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2964 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_CK3
2965#endif
2966 use pm_kind, only: TKR => RK, CKG => CK3
2967 complex(CKG) , intent(in) , contiguous :: array(:)
2968 real(TKR) :: rank(size(array, kind = IK))
2969 end function
2970#endif
2971
2972#if CK2_ENABLED
2973 module function getRankFractionalDefCom_D1_CK2(array) result(rank)
2974#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2975 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_CK2
2976#endif
2977 use pm_kind, only: TKR => RK, CKG => CK2
2978 complex(CKG) , intent(in) , contiguous :: array(:)
2979 real(TKR) :: rank(size(array, kind = IK))
2980 end function
2981#endif
2982
2983#if CK1_ENABLED
2984 module function getRankFractionalDefCom_D1_CK1(array) result(rank)
2985#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2986 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_CK1
2987#endif
2988 use pm_kind, only: TKR => RK, CKG => CK1
2989 complex(CKG) , intent(in) , contiguous :: array(:)
2990 real(TKR) :: rank(size(array, kind = IK))
2991 end function
2992#endif
2993
2994 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2995
2996#if RK5_ENABLED
2997 module function getRankFractionalDefCom_D1_RK5(array) result(rank)
2998#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2999 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_RK5
3000#endif
3001 use pm_kind, only: TKR => RK, RKG => RK5
3002 real(RKG) , intent(in) , contiguous :: array(:)
3003 real(TKR) :: rank(size(array, kind = IK))
3004 end function
3005#endif
3006
3007#if RK4_ENABLED
3008 module function getRankFractionalDefCom_D1_RK4(array) result(rank)
3009#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3010 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_RK4
3011#endif
3012 use pm_kind, only: TKR => RK, RKG => RK4
3013 real(RKG) , intent(in) , contiguous :: array(:)
3014 real(TKR) :: rank(size(array, kind = IK))
3015 end function
3016#endif
3017
3018#if RK3_ENABLED
3019 module function getRankFractionalDefCom_D1_RK3(array) result(rank)
3020#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3021 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_RK3
3022#endif
3023 use pm_kind, only: TKR => RK, RKG => RK3
3024 real(RKG) , intent(in) , contiguous :: array(:)
3025 real(TKR) :: rank(size(array, kind = IK))
3026 end function
3027#endif
3028
3029#if RK2_ENABLED
3030 module function getRankFractionalDefCom_D1_RK2(array) result(rank)
3031#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3032 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_RK2
3033#endif
3034 use pm_kind, only: TKR => RK, RKG => RK2
3035 real(RKG) , intent(in) , contiguous :: array(:)
3036 real(TKR) :: rank(size(array, kind = IK))
3037 end function
3038#endif
3039
3040#if RK1_ENABLED
3041 module function getRankFractionalDefCom_D1_RK1(array) result(rank)
3042#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3043 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_RK1
3044#endif
3045 use pm_kind, only: TKR => RK, RKG => RK1
3046 real(RKG) , intent(in) , contiguous :: array(:)
3047 real(TKR) :: rank(size(array, kind = IK))
3048 end function
3049#endif
3050
3051 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3052
3053#if PDT_ENABLED
3054
3055#if SK5_ENABLED
3056 module function getRankFractionalDefCom_D1_PSSK5(array) result(rank)
3057#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3058 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_PSSK5
3059#endif
3060 use pm_kind, only: TKR => RK, SKG => SK5
3061 use pm_container, only: css_pdt
3062 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3063 real(TKR) :: rank(size(array, kind = IK))
3064 end function
3065#endif
3066
3067#if SK4_ENABLED
3068 module function getRankFractionalDefCom_D1_PSSK4(array) result(rank)
3069#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3070 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_PSSK4
3071#endif
3072 use pm_kind, only: TKR => RK, SKG => SK4
3073 use pm_container, only: css_pdt
3074 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3075 real(TKR) :: rank(size(array, kind = IK))
3076 end function
3077#endif
3078
3079#if SK3_ENABLED
3080 module function getRankFractionalDefCom_D1_PSSK3(array) result(rank)
3081#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3082 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_PSSK3
3083#endif
3084 use pm_kind, only: TKR => RK, SKG => SK3
3085 use pm_container, only: css_pdt
3086 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3087 real(TKR) :: rank(size(array, kind = IK))
3088 end function
3089#endif
3090
3091#if SK2_ENABLED
3092 module function getRankFractionalDefCom_D1_PSSK2(array) result(rank)
3093#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3094 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_PSSK2
3095#endif
3096 use pm_kind, only: TKR => RK, SKG => SK2
3097 use pm_container, only: css_pdt
3098 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3099 real(TKR) :: rank(size(array, kind = IK))
3100 end function
3101#endif
3102
3103#if SK1_ENABLED
3104 module function getRankFractionalDefCom_D1_PSSK1(array) result(rank)
3105#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3106 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_PSSK1
3107#endif
3108 use pm_kind, only: TKR => RK, SKG => SK1
3109 use pm_container, only: css_pdt
3110 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3111 real(TKR) :: rank(size(array, kind = IK))
3112 end function
3113#endif
3114
3115#endif
3116!PDT_ENABLED
3117
3118 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3119
3120 module function getRankFractionalDefCom_D1_BSSK(array) result(rank)
3121#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3122 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalDefCom_D1_BSSK
3123#endif
3124 use pm_kind, only: TKR => RK, SKG => SK
3125 use pm_container, only: css_type
3126 type(css_type) , intent(in) , contiguous :: array(:)
3127 real(TKR) :: rank(size(array, kind = IK))
3128 end function
3129
3130 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3131
3132 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3133 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3134 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3135
3136 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3137
3138#if SK5_ENABLED
3139 module function getRankFractionalCusCom_D0_SK5(array, isSorted) result(rank)
3140#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3141 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D0_SK5
3142#endif
3143 use pm_kind, only: TKR => RK, SKG => SK5
3144 character(*,SKG) , intent(in) :: array
3145 procedure(logical(LK)) :: isSorted
3146 real(TKR) :: rank(len(array, IK))
3147 end function
3148#endif
3149
3150#if SK4_ENABLED
3151 module function getRankFractionalCusCom_D0_SK4(array, isSorted) result(rank)
3152#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3153 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D0_SK4
3154#endif
3155 use pm_kind, only: TKR => RK, SKG => SK4
3156 character(*,SKG) , intent(in) :: array
3157 procedure(logical(LK)) :: isSorted
3158 real(TKR) :: rank(len(array, IK))
3159 end function
3160#endif
3161
3162#if SK3_ENABLED
3163 module function getRankFractionalCusCom_D0_SK3(array, isSorted) result(rank)
3164#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3165 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D0_SK3
3166#endif
3167 use pm_kind, only: TKR => RK, SKG => SK3
3168 character(*,SKG) , intent(in) :: array
3169 procedure(logical(LK)) :: isSorted
3170 real(TKR) :: rank(len(array, IK))
3171 end function
3172#endif
3173
3174#if SK2_ENABLED
3175 module function getRankFractionalCusCom_D0_SK2(array, isSorted) result(rank)
3176#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3177 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D0_SK2
3178#endif
3179 use pm_kind, only: TKR => RK, SKG => SK2
3180 character(*,SKG) , intent(in) :: array
3181 procedure(logical(LK)) :: isSorted
3182 real(TKR) :: rank(len(array, IK))
3183 end function
3184#endif
3185
3186#if SK1_ENABLED
3187 module function getRankFractionalCusCom_D0_SK1(array, isSorted) result(rank)
3188#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3189 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D0_SK1
3190#endif
3191 use pm_kind, only: TKR => RK, SKG => SK1
3192 character(*,SKG) , intent(in) :: array
3193 procedure(logical(LK)) :: isSorted
3194 real(TKR) :: rank(len(array, IK))
3195 end function
3196#endif
3197
3198 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3199
3200#if SK5_ENABLED
3201 module function getRankFractionalCusCom_D1_SK5(array, isSorted) result(rank)
3202#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3203 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_SK5
3204#endif
3205 use pm_kind, only: TKR => RK, SKG => SK5
3206 character(*,SKG) , intent(in) , contiguous :: array(:)
3207 procedure(logical(LK)) :: isSorted
3208 real(TKR) :: rank(size(array, kind = IK))
3209 end function
3210#endif
3211
3212#if SK4_ENABLED
3213 module function getRankFractionalCusCom_D1_SK4(array, isSorted) result(rank)
3214#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3215 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_SK4
3216#endif
3217 use pm_kind, only: TKR => RK, SKG => SK4
3218 character(*,SKG) , intent(in) , contiguous :: array(:)
3219 procedure(logical(LK)) :: isSorted
3220 real(TKR) :: rank(size(array, kind = IK))
3221 end function
3222#endif
3223
3224#if SK3_ENABLED
3225 module function getRankFractionalCusCom_D1_SK3(array, isSorted) result(rank)
3226#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3227 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_SK3
3228#endif
3229 use pm_kind, only: TKR => RK, SKG => SK3
3230 character(*,SKG) , intent(in) , contiguous :: array(:)
3231 procedure(logical(LK)) :: isSorted
3232 real(TKR) :: rank(size(array, kind = IK))
3233 end function
3234#endif
3235
3236#if SK2_ENABLED
3237 module function getRankFractionalCusCom_D1_SK2(array, isSorted) result(rank)
3238#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3239 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_SK2
3240#endif
3241 use pm_kind, only: TKR => RK, SKG => SK2
3242 character(*,SKG) , intent(in) , contiguous :: array(:)
3243 procedure(logical(LK)) :: isSorted
3244 real(TKR) :: rank(size(array, kind = IK))
3245 end function
3246#endif
3247
3248#if SK1_ENABLED
3249 module function getRankFractionalCusCom_D1_SK1(array, isSorted) result(rank)
3250#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3251 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_SK1
3252#endif
3253 use pm_kind, only: TKR => RK, SKG => SK1
3254 character(*,SKG) , intent(in) , contiguous :: array(:)
3255 procedure(logical(LK)) :: isSorted
3256 real(TKR) :: rank(size(array, kind = IK))
3257 end function
3258#endif
3259
3260 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3261
3262#if IK5_ENABLED
3263 module function getRankFractionalCusCom_D1_IK5(array, isSorted) result(rank)
3264#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3265 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_IK5
3266#endif
3267 use pm_kind, only: TKR => RK, IKG => IK5
3268 integer(IKG) , intent(in) , contiguous :: array(:)
3269 procedure(logical(LK)) :: isSorted
3270 real(TKR) :: rank(size(array, kind = IK))
3271 end function
3272#endif
3273
3274#if IK4_ENABLED
3275 module function getRankFractionalCusCom_D1_IK4(array, isSorted) result(rank)
3276#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3277 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_IK4
3278#endif
3279 use pm_kind, only: TKR => RK, IKG => IK4
3280 integer(IKG) , intent(in) , contiguous :: array(:)
3281 procedure(logical(LK)) :: isSorted
3282 real(TKR) :: rank(size(array, kind = IK))
3283 end function
3284#endif
3285
3286#if IK3_ENABLED
3287 module function getRankFractionalCusCom_D1_IK3(array, isSorted) result(rank)
3288#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3289 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_IK3
3290#endif
3291 use pm_kind, only: TKR => RK, IKG => IK3
3292 integer(IKG) , intent(in) , contiguous :: array(:)
3293 procedure(logical(LK)) :: isSorted
3294 real(TKR) :: rank(size(array, kind = IK))
3295 end function
3296#endif
3297
3298#if IK2_ENABLED
3299 module function getRankFractionalCusCom_D1_IK2(array, isSorted) result(rank)
3300#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3301 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_IK2
3302#endif
3303 use pm_kind, only: TKR => RK, IKG => IK2
3304 integer(IKG) , intent(in) , contiguous :: array(:)
3305 procedure(logical(LK)) :: isSorted
3306 real(TKR) :: rank(size(array, kind = IK))
3307 end function
3308#endif
3309
3310#if IK1_ENABLED
3311 module function getRankFractionalCusCom_D1_IK1(array, isSorted) result(rank)
3312#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3313 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_IK1
3314#endif
3315 use pm_kind, only: TKR => RK, IKG => IK1
3316 integer(IKG) , intent(in) , contiguous :: array(:)
3317 procedure(logical(LK)) :: isSorted
3318 real(TKR) :: rank(size(array, kind = IK))
3319 end function
3320#endif
3321
3322 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3323
3324#if LK5_ENABLED
3325 module function getRankFractionalCusCom_D1_LK5(array, isSorted) result(rank)
3326#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3327 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_LK5
3328#endif
3329 use pm_kind, only: TKR => RK, LKG => LK5
3330 logical(LKG) , intent(in) , contiguous :: array(:)
3331 procedure(logical(LK)) :: isSorted
3332 real(TKR) :: rank(size(array, kind = IK))
3333 end function
3334#endif
3335
3336#if LK4_ENABLED
3337 module function getRankFractionalCusCom_D1_LK4(array, isSorted) result(rank)
3338#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3339 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_LK4
3340#endif
3341 use pm_kind, only: TKR => RK, LKG => LK4
3342 logical(LKG) , intent(in) , contiguous :: array(:)
3343 procedure(logical(LK)) :: isSorted
3344 real(TKR) :: rank(size(array, kind = IK))
3345 end function
3346#endif
3347
3348#if LK3_ENABLED
3349 module function getRankFractionalCusCom_D1_LK3(array, isSorted) result(rank)
3350#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3351 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_LK3
3352#endif
3353 use pm_kind, only: TKR => RK, LKG => LK3
3354 logical(LKG) , intent(in) , contiguous :: array(:)
3355 procedure(logical(LK)) :: isSorted
3356 real(TKR) :: rank(size(array, kind = IK))
3357 end function
3358#endif
3359
3360#if LK2_ENABLED
3361 module function getRankFractionalCusCom_D1_LK2(array, isSorted) result(rank)
3362#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3363 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_LK2
3364#endif
3365 use pm_kind, only: TKR => RK, LKG => LK2
3366 logical(LKG) , intent(in) , contiguous :: array(:)
3367 procedure(logical(LK)) :: isSorted
3368 real(TKR) :: rank(size(array, kind = IK))
3369 end function
3370#endif
3371
3372#if LK1_ENABLED
3373 module function getRankFractionalCusCom_D1_LK1(array, isSorted) result(rank)
3374#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3375 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_LK1
3376#endif
3377 use pm_kind, only: TKR => RK, LKG => LK1
3378 logical(LKG) , intent(in) , contiguous :: array(:)
3379 procedure(logical(LK)) :: isSorted
3380 real(TKR) :: rank(size(array, kind = IK))
3381 end function
3382#endif
3383
3384 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3385
3386#if CK5_ENABLED
3387 module function getRankFractionalCusCom_D1_CK5(array, isSorted) result(rank)
3388#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3389 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_CK5
3390#endif
3391 use pm_kind, only: TKR => RK, CKG => CK5
3392 complex(CKG) , intent(in) , contiguous :: array(:)
3393 procedure(logical(LK)) :: isSorted
3394 real(TKR) :: rank(size(array, kind = IK))
3395 end function
3396#endif
3397
3398#if CK4_ENABLED
3399 module function getRankFractionalCusCom_D1_CK4(array, isSorted) result(rank)
3400#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3401 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_CK4
3402#endif
3403 use pm_kind, only: TKR => RK, CKG => CK4
3404 complex(CKG) , intent(in) , contiguous :: array(:)
3405 procedure(logical(LK)) :: isSorted
3406 real(TKR) :: rank(size(array, kind = IK))
3407 end function
3408#endif
3409
3410#if CK3_ENABLED
3411 module function getRankFractionalCusCom_D1_CK3(array, isSorted) result(rank)
3412#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3413 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_CK3
3414#endif
3415 use pm_kind, only: TKR => RK, CKG => CK3
3416 complex(CKG) , intent(in) , contiguous :: array(:)
3417 procedure(logical(LK)) :: isSorted
3418 real(TKR) :: rank(size(array, kind = IK))
3419 end function
3420#endif
3421
3422#if CK2_ENABLED
3423 module function getRankFractionalCusCom_D1_CK2(array, isSorted) result(rank)
3424#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3425 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_CK2
3426#endif
3427 use pm_kind, only: TKR => RK, CKG => CK2
3428 complex(CKG) , intent(in) , contiguous :: array(:)
3429 procedure(logical(LK)) :: isSorted
3430 real(TKR) :: rank(size(array, kind = IK))
3431 end function
3432#endif
3433
3434#if CK1_ENABLED
3435 module function getRankFractionalCusCom_D1_CK1(array, isSorted) result(rank)
3436#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3437 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_CK1
3438#endif
3439 use pm_kind, only: TKR => RK, CKG => CK1
3440 complex(CKG) , intent(in) , contiguous :: array(:)
3441 procedure(logical(LK)) :: isSorted
3442 real(TKR) :: rank(size(array, kind = IK))
3443 end function
3444#endif
3445
3446 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3447
3448#if RK5_ENABLED
3449 module function getRankFractionalCusCom_D1_RK5(array, isSorted) result(rank)
3450#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3451 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_RK5
3452#endif
3453 use pm_kind, only: TKR => RK, RKG => RK5
3454 real(RKG) , intent(in) , contiguous :: array(:)
3455 procedure(logical(LK)) :: isSorted
3456 real(TKR) :: rank(size(array, kind = IK))
3457 end function
3458#endif
3459
3460#if RK4_ENABLED
3461 module function getRankFractionalCusCom_D1_RK4(array, isSorted) result(rank)
3462#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3463 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_RK4
3464#endif
3465 use pm_kind, only: TKR => RK, RKG => RK4
3466 real(RKG) , intent(in) , contiguous :: array(:)
3467 procedure(logical(LK)) :: isSorted
3468 real(TKR) :: rank(size(array, kind = IK))
3469 end function
3470#endif
3471
3472#if RK3_ENABLED
3473 module function getRankFractionalCusCom_D1_RK3(array, isSorted) result(rank)
3474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3475 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_RK3
3476#endif
3477 use pm_kind, only: TKR => RK, RKG => RK3
3478 real(RKG) , intent(in) , contiguous :: array(:)
3479 procedure(logical(LK)) :: isSorted
3480 real(TKR) :: rank(size(array, kind = IK))
3481 end function
3482#endif
3483
3484#if RK2_ENABLED
3485 module function getRankFractionalCusCom_D1_RK2(array, isSorted) result(rank)
3486#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3487 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_RK2
3488#endif
3489 use pm_kind, only: TKR => RK, RKG => RK2
3490 real(RKG) , intent(in) , contiguous :: array(:)
3491 procedure(logical(LK)) :: isSorted
3492 real(TKR) :: rank(size(array, kind = IK))
3493 end function
3494#endif
3495
3496#if RK1_ENABLED
3497 module function getRankFractionalCusCom_D1_RK1(array, isSorted) result(rank)
3498#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3499 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_RK1
3500#endif
3501 use pm_kind, only: TKR => RK, RKG => RK1
3502 real(RKG) , intent(in) , contiguous :: array(:)
3503 procedure(logical(LK)) :: isSorted
3504 real(TKR) :: rank(size(array, kind = IK))
3505 end function
3506#endif
3507
3508 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3509
3510#if PDT_ENABLED
3511
3512#if SK5_ENABLED
3513 module function getRankFractionalCusCom_D1_PSSK5(array, isSorted) result(rank)
3514#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3515 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_PSSK5
3516#endif
3517 use pm_kind, only: TKR => RK, SKG => SK5
3518 use pm_container, only: css_pdt
3519 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3520 procedure(logical(LK)) :: isSorted
3521 real(TKR) :: rank(size(array, kind = IK))
3522 end function
3523#endif
3524
3525#if SK4_ENABLED
3526 module function getRankFractionalCusCom_D1_PSSK4(array, isSorted) result(rank)
3527#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3528 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_PSSK4
3529#endif
3530 use pm_kind, only: TKR => RK, SKG => SK4
3531 use pm_container, only: css_pdt
3532 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3533 procedure(logical(LK)) :: isSorted
3534 real(TKR) :: rank(size(array, kind = IK))
3535 end function
3536#endif
3537
3538#if SK3_ENABLED
3539 module function getRankFractionalCusCom_D1_PSSK3(array, isSorted) result(rank)
3540#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3541 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_PSSK3
3542#endif
3543 use pm_kind, only: TKR => RK, SKG => SK3
3544 use pm_container, only: css_pdt
3545 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3546 procedure(logical(LK)) :: isSorted
3547 real(TKR) :: rank(size(array, kind = IK))
3548 end function
3549#endif
3550
3551#if SK2_ENABLED
3552 module function getRankFractionalCusCom_D1_PSSK2(array, isSorted) result(rank)
3553#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3554 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_PSSK2
3555#endif
3556 use pm_kind, only: TKR => RK, SKG => SK2
3557 use pm_container, only: css_pdt
3558 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3559 procedure(logical(LK)) :: isSorted
3560 real(TKR) :: rank(size(array, kind = IK))
3561 end function
3562#endif
3563
3564#if SK1_ENABLED
3565 module function getRankFractionalCusCom_D1_PSSK1(array, isSorted) result(rank)
3566#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3567 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_PSSK1
3568#endif
3569 use pm_kind, only: TKR => RK, SKG => SK1
3570 use pm_container, only: css_pdt
3571 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
3572 real(TKR) :: rank(size(array, kind = IK))
3573 procedure(logical(LK)) :: isSorted
3574 end function
3575#endif
3576
3577#endif
3578!PDT_ENABLED
3579
3580 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3581
3582 module function getRankFractionalCusCom_D1_BSSK(array, isSorted) result(rank)
3583#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3584 !DEC$ ATTRIBUTES DLLEXPORT :: getRankFractionalCusCom_D1_BSSK
3585#endif
3586 use pm_kind, only: TKR => RK, SKG => SK
3587 use pm_container, only: css_type
3588 type(css_type) , intent(in) , contiguous :: array(:)
3589 procedure(logical(LK)) :: isSorted
3590 real(TKR) :: rank(size(array, kind = IK))
3591 end function
3592
3593 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3594
3595 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3596 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3597 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3598
3599 end interface
3600
3601!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3602
3749
3750 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3751 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3752 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3753
3754 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3755
3756#if SK5_ENABLED
3757 PURE module subroutine setRankFractionalDefCom_D0_SK5(rank, array)
3758#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3759 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D0_SK5
3760#endif
3761 use pm_kind, only: TKR => RK, SKG => SK5
3762 character(*,SKG) , intent(in) :: array
3763 real(TKR) , intent(out) , contiguous :: rank(:)
3764 end subroutine
3765#endif
3766
3767#if SK4_ENABLED
3768 PURE module subroutine setRankFractionalDefCom_D0_SK4(rank, array)
3769#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3770 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D0_SK4
3771#endif
3772 use pm_kind, only: TKR => RK, SKG => SK4
3773 character(*,SKG) , intent(in) :: array
3774 real(TKR) , intent(out) , contiguous :: rank(:)
3775 end subroutine
3776#endif
3777
3778#if SK3_ENABLED
3779 PURE module subroutine setRankFractionalDefCom_D0_SK3(rank, array)
3780#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3781 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D0_SK3
3782#endif
3783 use pm_kind, only: TKR => RK, SKG => SK3
3784 character(*,SKG) , intent(in) :: array
3785 real(TKR) , intent(out) , contiguous :: rank(:)
3786 end subroutine
3787#endif
3788
3789#if SK2_ENABLED
3790 PURE module subroutine setRankFractionalDefCom_D0_SK2(rank, array)
3791#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3792 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D0_SK2
3793#endif
3794 use pm_kind, only: TKR => RK, SKG => SK2
3795 character(*,SKG) , intent(in) :: array
3796 real(TKR) , intent(out) , contiguous :: rank(:)
3797 end subroutine
3798#endif
3799
3800#if SK1_ENABLED
3801 PURE module subroutine setRankFractionalDefCom_D0_SK1(rank, array)
3802#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3803 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D0_SK1
3804#endif
3805 use pm_kind, only: TKR => RK, SKG => SK1
3806 character(*,SKG) , intent(in) :: array
3807 real(TKR) , intent(out) , contiguous :: rank(:)
3808 end subroutine
3809#endif
3810
3811 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3812
3813#if SK5_ENABLED
3814 PURE module subroutine setRankFractionalDefCom_D1_SK5(rank, array)
3815#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3816 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_SK5
3817#endif
3818 use pm_kind, only: TKR => RK, SKG => SK5
3819 character(*,SKG) , intent(in) , contiguous :: array(:)
3820 real(TKR) , intent(out) , contiguous :: rank(:)
3821 end subroutine
3822#endif
3823
3824#if SK4_ENABLED
3825 PURE module subroutine setRankFractionalDefCom_D1_SK4(rank, array)
3826#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3827 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_SK4
3828#endif
3829 use pm_kind, only: TKR => RK, SKG => SK4
3830 character(*,SKG) , intent(in) , contiguous :: array(:)
3831 real(TKR) , intent(out) , contiguous :: rank(:)
3832 end subroutine
3833#endif
3834
3835#if SK3_ENABLED
3836 PURE module subroutine setRankFractionalDefCom_D1_SK3(rank, array)
3837#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3838 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_SK3
3839#endif
3840 use pm_kind, only: TKR => RK, SKG => SK3
3841 character(*,SKG) , intent(in) , contiguous :: array(:)
3842 real(TKR) , intent(out) , contiguous :: rank(:)
3843 end subroutine
3844#endif
3845
3846#if SK2_ENABLED
3847 PURE module subroutine setRankFractionalDefCom_D1_SK2(rank, array)
3848#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3849 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_SK2
3850#endif
3851 use pm_kind, only: TKR => RK, SKG => SK2
3852 character(*,SKG) , intent(in) , contiguous :: array(:)
3853 real(TKR) , intent(out) , contiguous :: rank(:)
3854 end subroutine
3855#endif
3856
3857#if SK1_ENABLED
3858 PURE module subroutine setRankFractionalDefCom_D1_SK1(rank, array)
3859#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3860 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_SK1
3861#endif
3862 use pm_kind, only: TKR => RK, SKG => SK1
3863 character(*,SKG) , intent(in) , contiguous :: array(:)
3864 real(TKR) , intent(out) , contiguous :: rank(:)
3865 end subroutine
3866#endif
3867
3868 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3869
3870#if IK5_ENABLED
3871 PURE module subroutine setRankFractionalDefCom_D1_IK5(rank, array)
3872#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3873 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_IK5
3874#endif
3875 use pm_kind, only: TKR => RK, IKG => IK5
3876 integer(IKG) , intent(in) , contiguous :: array(:)
3877 real(TKR) , intent(out) , contiguous :: rank(:)
3878 end subroutine
3879#endif
3880
3881#if IK4_ENABLED
3882 PURE module subroutine setRankFractionalDefCom_D1_IK4(rank, array)
3883#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3884 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_IK4
3885#endif
3886 use pm_kind, only: TKR => RK, IKG => IK4
3887 integer(IKG) , intent(in) , contiguous :: array(:)
3888 real(TKR) , intent(out) , contiguous :: rank(:)
3889 end subroutine
3890#endif
3891
3892#if IK3_ENABLED
3893 PURE module subroutine setRankFractionalDefCom_D1_IK3(rank, array)
3894#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3895 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_IK3
3896#endif
3897 use pm_kind, only: TKR => RK, IKG => IK3
3898 integer(IKG) , intent(in) , contiguous :: array(:)
3899 real(TKR) , intent(out) , contiguous :: rank(:)
3900 end subroutine
3901#endif
3902
3903#if IK2_ENABLED
3904 PURE module subroutine setRankFractionalDefCom_D1_IK2(rank, array)
3905#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3906 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_IK2
3907#endif
3908 use pm_kind, only: TKR => RK, IKG => IK2
3909 integer(IKG) , intent(in) , contiguous :: array(:)
3910 real(TKR) , intent(out) , contiguous :: rank(:)
3911 end subroutine
3912#endif
3913
3914#if IK1_ENABLED
3915 PURE module subroutine setRankFractionalDefCom_D1_IK1(rank, array)
3916#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3917 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_IK1
3918#endif
3919 use pm_kind, only: TKR => RK, IKG => IK1
3920 integer(IKG) , intent(in) , contiguous :: array(:)
3921 real(TKR) , intent(out) , contiguous :: rank(:)
3922 end subroutine
3923#endif
3924
3925 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3926
3927#if LK5_ENABLED
3928 PURE module subroutine setRankFractionalDefCom_D1_LK5(rank, array)
3929#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3930 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_LK5
3931#endif
3932 use pm_kind, only: TKR => RK, LKG => LK5
3933 logical(LKG) , intent(in) , contiguous :: array(:)
3934 real(TKR) , intent(out) , contiguous :: rank(:)
3935 end subroutine
3936#endif
3937
3938#if LK4_ENABLED
3939 PURE module subroutine setRankFractionalDefCom_D1_LK4(rank, array)
3940#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3941 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_LK4
3942#endif
3943 use pm_kind, only: TKR => RK, LKG => LK4
3944 logical(LKG) , intent(in) , contiguous :: array(:)
3945 real(TKR) , intent(out) , contiguous :: rank(:)
3946 end subroutine
3947#endif
3948
3949#if LK3_ENABLED
3950 PURE module subroutine setRankFractionalDefCom_D1_LK3(rank, array)
3951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3952 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_LK3
3953#endif
3954 use pm_kind, only: TKR => RK, LKG => LK3
3955 logical(LKG) , intent(in) , contiguous :: array(:)
3956 real(TKR) , intent(out) , contiguous :: rank(:)
3957 end subroutine
3958#endif
3959
3960#if LK2_ENABLED
3961 PURE module subroutine setRankFractionalDefCom_D1_LK2(rank, array)
3962#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3963 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_LK2
3964#endif
3965 use pm_kind, only: TKR => RK, LKG => LK2
3966 logical(LKG) , intent(in) , contiguous :: array(:)
3967 real(TKR) , intent(out) , contiguous :: rank(:)
3968 end subroutine
3969#endif
3970
3971#if LK1_ENABLED
3972 PURE module subroutine setRankFractionalDefCom_D1_LK1(rank, array)
3973#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3974 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_LK1
3975#endif
3976 use pm_kind, only: TKR => RK, LKG => LK1
3977 logical(LKG) , intent(in) , contiguous :: array(:)
3978 real(TKR) , intent(out) , contiguous :: rank(:)
3979 end subroutine
3980#endif
3981
3982 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3983
3984#if CK5_ENABLED
3985 PURE module subroutine setRankFractionalDefCom_D1_CK5(rank, array)
3986#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3987 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_CK5
3988#endif
3989 use pm_kind, only: TKR => RK, CKG => CK5
3990 complex(CKG) , intent(in) , contiguous :: array(:)
3991 real(TKR) , intent(out) , contiguous :: rank(:)
3992 end subroutine
3993#endif
3994
3995#if CK4_ENABLED
3996 PURE module subroutine setRankFractionalDefCom_D1_CK4(rank, array)
3997#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3998 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_CK4
3999#endif
4000 use pm_kind, only: TKR => RK, CKG => CK4
4001 complex(CKG) , intent(in) , contiguous :: array(:)
4002 real(TKR) , intent(out) , contiguous :: rank(:)
4003 end subroutine
4004#endif
4005
4006#if CK3_ENABLED
4007 PURE module subroutine setRankFractionalDefCom_D1_CK3(rank, array)
4008#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4009 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_CK3
4010#endif
4011 use pm_kind, only: TKR => RK, CKG => CK3
4012 complex(CKG) , intent(in) , contiguous :: array(:)
4013 real(TKR) , intent(out) , contiguous :: rank(:)
4014 end subroutine
4015#endif
4016
4017#if CK2_ENABLED
4018 PURE module subroutine setRankFractionalDefCom_D1_CK2(rank, array)
4019#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4020 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_CK2
4021#endif
4022 use pm_kind, only: TKR => RK, CKG => CK2
4023 complex(CKG) , intent(in) , contiguous :: array(:)
4024 real(TKR) , intent(out) , contiguous :: rank(:)
4025 end subroutine
4026#endif
4027
4028#if CK1_ENABLED
4029 PURE module subroutine setRankFractionalDefCom_D1_CK1(rank, array)
4030#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4031 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_CK1
4032#endif
4033 use pm_kind, only: TKR => RK, CKG => CK1
4034 complex(CKG) , intent(in) , contiguous :: array(:)
4035 real(TKR) , intent(out) , contiguous :: rank(:)
4036 end subroutine
4037#endif
4038
4039 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4040
4041#if RK5_ENABLED
4042 PURE module subroutine setRankFractionalDefCom_D1_RK5(rank, array)
4043#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4044 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_RK5
4045#endif
4046 use pm_kind, only: TKR => RK, RKG => RK5
4047 real(RKG) , intent(in) , contiguous :: array(:)
4048 real(TKR) , intent(out) , contiguous :: rank(:)
4049 end subroutine
4050#endif
4051
4052#if RK4_ENABLED
4053 PURE module subroutine setRankFractionalDefCom_D1_RK4(rank, array)
4054#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4055 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_RK4
4056#endif
4057 use pm_kind, only: TKR => RK, RKG => RK4
4058 real(RKG) , intent(in) , contiguous :: array(:)
4059 real(TKR) , intent(out) , contiguous :: rank(:)
4060 end subroutine
4061#endif
4062
4063#if RK3_ENABLED
4064 PURE module subroutine setRankFractionalDefCom_D1_RK3(rank, array)
4065#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4066 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_RK3
4067#endif
4068 use pm_kind, only: TKR => RK, RKG => RK3
4069 real(RKG) , intent(in) , contiguous :: array(:)
4070 real(TKR) , intent(out) , contiguous :: rank(:)
4071 end subroutine
4072#endif
4073
4074#if RK2_ENABLED
4075 PURE module subroutine setRankFractionalDefCom_D1_RK2(rank, array)
4076#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4077 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_RK2
4078#endif
4079 use pm_kind, only: TKR => RK, RKG => RK2
4080 real(RKG) , intent(in) , contiguous :: array(:)
4081 real(TKR) , intent(out) , contiguous :: rank(:)
4082 end subroutine
4083#endif
4084
4085#if RK1_ENABLED
4086 PURE module subroutine setRankFractionalDefCom_D1_RK1(rank, array)
4087#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4088 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_RK1
4089#endif
4090 use pm_kind, only: TKR => RK, RKG => RK1
4091 real(RKG) , intent(in) , contiguous :: array(:)
4092 real(TKR) , intent(out) , contiguous :: rank(:)
4093 end subroutine
4094#endif
4095
4096 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4097
4098#if PDT_ENABLED
4099
4100#if SK5_ENABLED
4101 PURE module subroutine setRankFractionalDefCom_D1_PSSK5(rank, array)
4102#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4103 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_PSSK5
4104#endif
4105 use pm_kind, only: TKR => RK, SKG => SK5
4106 use pm_container, only: css_pdt
4107 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4108 real(TKR) , intent(out) , contiguous :: rank(:)
4109 end subroutine
4110#endif
4111
4112#if SK4_ENABLED
4113 PURE module subroutine setRankFractionalDefCom_D1_PSSK4(rank, array)
4114#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4115 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_PSSK4
4116#endif
4117 use pm_kind, only: TKR => RK, SKG => SK4
4118 use pm_container, only: css_pdt
4119 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4120 real(TKR) , intent(out) , contiguous :: rank(:)
4121 end subroutine
4122#endif
4123
4124#if SK3_ENABLED
4125 PURE module subroutine setRankFractionalDefCom_D1_PSSK3(rank, array)
4126#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4127 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_PSSK3
4128#endif
4129 use pm_kind, only: TKR => RK, SKG => SK3
4130 use pm_container, only: css_pdt
4131 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4132 real(TKR) , intent(out) , contiguous :: rank(:)
4133 end subroutine
4134#endif
4135
4136#if SK2_ENABLED
4137 PURE module subroutine setRankFractionalDefCom_D1_PSSK2(rank, array)
4138#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4139 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_PSSK2
4140#endif
4141 use pm_kind, only: TKR => RK, SKG => SK2
4142 use pm_container, only: css_pdt
4143 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4144 real(TKR) , intent(out) , contiguous :: rank(:)
4145 end subroutine
4146#endif
4147
4148#if SK1_ENABLED
4149 PURE module subroutine setRankFractionalDefCom_D1_PSSK1(rank, array)
4150#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4151 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_PSSK1
4152#endif
4153 use pm_kind, only: TKR => RK, SKG => SK1
4154 use pm_container, only: css_pdt
4155 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4156 real(TKR) , intent(out) , contiguous :: rank(:)
4157 end subroutine
4158#endif
4159
4160#endif
4161!PDT_ENABLED
4162
4163 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4164
4165 PURE module subroutine setRankFractionalDefCom_D1_BSSK(rank, array)
4166#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4167 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalDefCom_D1_BSSK
4168#endif
4169 use pm_kind, only: TKR => RK, SKG => SK
4170 use pm_container, only: css_type
4171 type(css_type) , intent(in) , contiguous :: array(:)
4172 real(TKR) , intent(out) , contiguous :: rank(:)
4173 end subroutine
4174
4175 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4176
4177 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4178 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4179 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4180
4181 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4182
4183#if SK5_ENABLED
4184 module subroutine setRankFractionalCusCom_D0_SK5(rank, array, isSorted)
4185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4186 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D0_SK5
4187#endif
4188 use pm_kind, only: TKR => RK, SKG => SK5
4189 character(*,SKG) , intent(in) :: array
4190 real(TKR) , intent(out) , contiguous :: rank(:)
4191 procedure(logical(LK)) :: isSorted
4192 end subroutine
4193#endif
4194
4195#if SK4_ENABLED
4196 module subroutine setRankFractionalCusCom_D0_SK4(rank, array, isSorted)
4197#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4198 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D0_SK4
4199#endif
4200 use pm_kind, only: TKR => RK, SKG => SK4
4201 character(*,SKG) , intent(in) :: array
4202 real(TKR) , intent(out) , contiguous :: rank(:)
4203 procedure(logical(LK)) :: isSorted
4204 end subroutine
4205#endif
4206
4207#if SK3_ENABLED
4208 module subroutine setRankFractionalCusCom_D0_SK3(rank, array, isSorted)
4209#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4210 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D0_SK3
4211#endif
4212 use pm_kind, only: TKR => RK, SKG => SK3
4213 character(*,SKG) , intent(in) :: array
4214 real(TKR) , intent(out) , contiguous :: rank(:)
4215 procedure(logical(LK)) :: isSorted
4216 end subroutine
4217#endif
4218
4219#if SK2_ENABLED
4220 module subroutine setRankFractionalCusCom_D0_SK2(rank, array, isSorted)
4221#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4222 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D0_SK2
4223#endif
4224 use pm_kind, only: TKR => RK, SKG => SK2
4225 character(*,SKG) , intent(in) :: array
4226 real(TKR) , intent(out) , contiguous :: rank(:)
4227 procedure(logical(LK)) :: isSorted
4228 end subroutine
4229#endif
4230
4231#if SK1_ENABLED
4232 module subroutine setRankFractionalCusCom_D0_SK1(rank, array, isSorted)
4233#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4234 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D0_SK1
4235#endif
4236 use pm_kind, only: TKR => RK, SKG => SK1
4237 character(*,SKG) , intent(in) :: array
4238 real(TKR) , intent(out) , contiguous :: rank(:)
4239 procedure(logical(LK)) :: isSorted
4240 end subroutine
4241#endif
4242
4243 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4244
4245#if SK5_ENABLED
4246 module subroutine setRankFractionalCusCom_D1_SK5(rank, array, isSorted)
4247#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4248 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_SK5
4249#endif
4250 use pm_kind, only: TKR => RK, SKG => SK5
4251 character(*,SKG) , intent(in) , contiguous :: array(:)
4252 real(TKR) , intent(out) , contiguous :: rank(:)
4253 procedure(logical(LK)) :: isSorted
4254 end subroutine
4255#endif
4256
4257#if SK4_ENABLED
4258 module subroutine setRankFractionalCusCom_D1_SK4(rank, array, isSorted)
4259#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4260 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_SK4
4261#endif
4262 use pm_kind, only: TKR => RK, SKG => SK4
4263 character(*,SKG) , intent(in) , contiguous :: array(:)
4264 real(TKR) , intent(out) , contiguous :: rank(:)
4265 procedure(logical(LK)) :: isSorted
4266 end subroutine
4267#endif
4268
4269#if SK3_ENABLED
4270 module subroutine setRankFractionalCusCom_D1_SK3(rank, array, isSorted)
4271#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4272 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_SK3
4273#endif
4274 use pm_kind, only: TKR => RK, SKG => SK3
4275 character(*,SKG) , intent(in) , contiguous :: array(:)
4276 real(TKR) , intent(out) , contiguous :: rank(:)
4277 procedure(logical(LK)) :: isSorted
4278 end subroutine
4279#endif
4280
4281#if SK2_ENABLED
4282 module subroutine setRankFractionalCusCom_D1_SK2(rank, array, isSorted)
4283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4284 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_SK2
4285#endif
4286 use pm_kind, only: TKR => RK, SKG => SK2
4287 character(*,SKG) , intent(in) , contiguous :: array(:)
4288 real(TKR) , intent(out) , contiguous :: rank(:)
4289 procedure(logical(LK)) :: isSorted
4290 end subroutine
4291#endif
4292
4293#if SK1_ENABLED
4294 module subroutine setRankFractionalCusCom_D1_SK1(rank, array, isSorted)
4295#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4296 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_SK1
4297#endif
4298 use pm_kind, only: TKR => RK, SKG => SK1
4299 character(*,SKG) , intent(in) , contiguous :: array(:)
4300 real(TKR) , intent(out) , contiguous :: rank(:)
4301 procedure(logical(LK)) :: isSorted
4302 end subroutine
4303#endif
4304
4305 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4306
4307#if IK5_ENABLED
4308 module subroutine setRankFractionalCusCom_D1_IK5(rank, array, isSorted)
4309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4310 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_IK5
4311#endif
4312 use pm_kind, only: TKR => RK, IKG => IK5
4313 integer(IKG) , intent(in) , contiguous :: array(:)
4314 real(TKR) , intent(out) , contiguous :: rank(:)
4315 procedure(logical(LK)) :: isSorted
4316 end subroutine
4317#endif
4318
4319#if IK4_ENABLED
4320 module subroutine setRankFractionalCusCom_D1_IK4(rank, array, isSorted)
4321#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4322 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_IK4
4323#endif
4324 use pm_kind, only: TKR => RK, IKG => IK4
4325 integer(IKG) , intent(in) , contiguous :: array(:)
4326 real(TKR) , intent(out) , contiguous :: rank(:)
4327 procedure(logical(LK)) :: isSorted
4328 end subroutine
4329#endif
4330
4331#if IK3_ENABLED
4332 module subroutine setRankFractionalCusCom_D1_IK3(rank, array, isSorted)
4333#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4334 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_IK3
4335#endif
4336 use pm_kind, only: TKR => RK, IKG => IK3
4337 integer(IKG) , intent(in) , contiguous :: array(:)
4338 real(TKR) , intent(out) , contiguous :: rank(:)
4339 procedure(logical(LK)) :: isSorted
4340 end subroutine
4341#endif
4342
4343#if IK2_ENABLED
4344 module subroutine setRankFractionalCusCom_D1_IK2(rank, array, isSorted)
4345#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4346 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_IK2
4347#endif
4348 use pm_kind, only: TKR => RK, IKG => IK2
4349 integer(IKG) , intent(in) , contiguous :: array(:)
4350 real(TKR) , intent(out) , contiguous :: rank(:)
4351 procedure(logical(LK)) :: isSorted
4352 end subroutine
4353#endif
4354
4355#if IK1_ENABLED
4356 module subroutine setRankFractionalCusCom_D1_IK1(rank, array, isSorted)
4357#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4358 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_IK1
4359#endif
4360 use pm_kind, only: TKR => RK, IKG => IK1
4361 integer(IKG) , intent(in) , contiguous :: array(:)
4362 real(TKR) , intent(out) , contiguous :: rank(:)
4363 procedure(logical(LK)) :: isSorted
4364 end subroutine
4365#endif
4366
4367 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4368
4369#if LK5_ENABLED
4370 module subroutine setRankFractionalCusCom_D1_LK5(rank, array, isSorted)
4371#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4372 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_LK5
4373#endif
4374 use pm_kind, only: TKR => RK, LKG => LK5
4375 logical(LKG) , intent(in) , contiguous :: array(:)
4376 real(TKR) , intent(out) , contiguous :: rank(:)
4377 procedure(logical(LK)) :: isSorted
4378 end subroutine
4379#endif
4380
4381#if LK4_ENABLED
4382 module subroutine setRankFractionalCusCom_D1_LK4(rank, array, isSorted)
4383#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4384 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_LK4
4385#endif
4386 use pm_kind, only: TKR => RK, LKG => LK4
4387 logical(LKG) , intent(in) , contiguous :: array(:)
4388 real(TKR) , intent(out) , contiguous :: rank(:)
4389 procedure(logical(LK)) :: isSorted
4390 end subroutine
4391#endif
4392
4393#if LK3_ENABLED
4394 module subroutine setRankFractionalCusCom_D1_LK3(rank, array, isSorted)
4395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4396 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_LK3
4397#endif
4398 use pm_kind, only: TKR => RK, LKG => LK3
4399 logical(LKG) , intent(in) , contiguous :: array(:)
4400 real(TKR) , intent(out) , contiguous :: rank(:)
4401 procedure(logical(LK)) :: isSorted
4402 end subroutine
4403#endif
4404
4405#if LK2_ENABLED
4406 module subroutine setRankFractionalCusCom_D1_LK2(rank, array, isSorted)
4407#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4408 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_LK2
4409#endif
4410 use pm_kind, only: TKR => RK, LKG => LK2
4411 logical(LKG) , intent(in) , contiguous :: array(:)
4412 real(TKR) , intent(out) , contiguous :: rank(:)
4413 procedure(logical(LK)) :: isSorted
4414 end subroutine
4415#endif
4416
4417#if LK1_ENABLED
4418 module subroutine setRankFractionalCusCom_D1_LK1(rank, array, isSorted)
4419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4420 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_LK1
4421#endif
4422 use pm_kind, only: TKR => RK, LKG => LK1
4423 logical(LKG) , intent(in) , contiguous :: array(:)
4424 real(TKR) , intent(out) , contiguous :: rank(:)
4425 procedure(logical(LK)) :: isSorted
4426 end subroutine
4427#endif
4428
4429 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4430
4431#if CK5_ENABLED
4432 module subroutine setRankFractionalCusCom_D1_CK5(rank, array, isSorted)
4433#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4434 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_CK5
4435#endif
4436 use pm_kind, only: TKR => RK, CKG => CK5
4437 complex(CKG) , intent(in) , contiguous :: array(:)
4438 real(TKR) , intent(out) , contiguous :: rank(:)
4439 procedure(logical(LK)) :: isSorted
4440 end subroutine
4441#endif
4442
4443#if CK4_ENABLED
4444 module subroutine setRankFractionalCusCom_D1_CK4(rank, array, isSorted)
4445#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4446 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_CK4
4447#endif
4448 use pm_kind, only: TKR => RK, CKG => CK4
4449 complex(CKG) , intent(in) , contiguous :: array(:)
4450 real(TKR) , intent(out) , contiguous :: rank(:)
4451 procedure(logical(LK)) :: isSorted
4452 end subroutine
4453#endif
4454
4455#if CK3_ENABLED
4456 module subroutine setRankFractionalCusCom_D1_CK3(rank, array, isSorted)
4457#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4458 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_CK3
4459#endif
4460 use pm_kind, only: TKR => RK, CKG => CK3
4461 complex(CKG) , intent(in) , contiguous :: array(:)
4462 real(TKR) , intent(out) , contiguous :: rank(:)
4463 procedure(logical(LK)) :: isSorted
4464 end subroutine
4465#endif
4466
4467#if CK2_ENABLED
4468 module subroutine setRankFractionalCusCom_D1_CK2(rank, array, isSorted)
4469#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4470 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_CK2
4471#endif
4472 use pm_kind, only: TKR => RK, CKG => CK2
4473 complex(CKG) , intent(in) , contiguous :: array(:)
4474 real(TKR) , intent(out) , contiguous :: rank(:)
4475 procedure(logical(LK)) :: isSorted
4476 end subroutine
4477#endif
4478
4479#if CK1_ENABLED
4480 module subroutine setRankFractionalCusCom_D1_CK1(rank, array, isSorted)
4481#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4482 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_CK1
4483#endif
4484 use pm_kind, only: TKR => RK, CKG => CK1
4485 complex(CKG) , intent(in) , contiguous :: array(:)
4486 real(TKR) , intent(out) , contiguous :: rank(:)
4487 procedure(logical(LK)) :: isSorted
4488 end subroutine
4489#endif
4490
4491 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4492
4493#if RK5_ENABLED
4494 module subroutine setRankFractionalCusCom_D1_RK5(rank, array, isSorted)
4495#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4496 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_RK5
4497#endif
4498 use pm_kind, only: TKR => RK, RKG => RK5
4499 real(RKG) , intent(in) , contiguous :: array(:)
4500 real(TKR) , intent(out) , contiguous :: rank(:)
4501 procedure(logical(LK)) :: isSorted
4502 end subroutine
4503#endif
4504
4505#if RK4_ENABLED
4506 module subroutine setRankFractionalCusCom_D1_RK4(rank, array, isSorted)
4507#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4508 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_RK4
4509#endif
4510 use pm_kind, only: TKR => RK, RKG => RK4
4511 real(RKG) , intent(in) , contiguous :: array(:)
4512 real(TKR) , intent(out) , contiguous :: rank(:)
4513 procedure(logical(LK)) :: isSorted
4514 end subroutine
4515#endif
4516
4517#if RK3_ENABLED
4518 module subroutine setRankFractionalCusCom_D1_RK3(rank, array, isSorted)
4519#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4520 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_RK3
4521#endif
4522 use pm_kind, only: TKR => RK, RKG => RK3
4523 real(RKG) , intent(in) , contiguous :: array(:)
4524 real(TKR) , intent(out) , contiguous :: rank(:)
4525 procedure(logical(LK)) :: isSorted
4526 end subroutine
4527#endif
4528
4529#if RK2_ENABLED
4530 module subroutine setRankFractionalCusCom_D1_RK2(rank, array, isSorted)
4531#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4532 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_RK2
4533#endif
4534 use pm_kind, only: TKR => RK, RKG => RK2
4535 real(RKG) , intent(in) , contiguous :: array(:)
4536 real(TKR) , intent(out) , contiguous :: rank(:)
4537 procedure(logical(LK)) :: isSorted
4538 end subroutine
4539#endif
4540
4541#if RK1_ENABLED
4542 module subroutine setRankFractionalCusCom_D1_RK1(rank, array, isSorted)
4543#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4544 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_RK1
4545#endif
4546 use pm_kind, only: TKR => RK, RKG => RK1
4547 real(RKG) , intent(in) , contiguous :: array(:)
4548 real(TKR) , intent(out) , contiguous :: rank(:)
4549 procedure(logical(LK)) :: isSorted
4550 end subroutine
4551#endif
4552
4553 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4554
4555#if PDT_ENABLED
4556
4557#if SK5_ENABLED
4558 module subroutine setRankFractionalCusCom_D1_PSSK5(rank, array, isSorted)
4559#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4560 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_PSSK5
4561#endif
4562 use pm_kind, only: TKR => RK, SKG => SK5
4563 use pm_container, only: css_pdt
4564 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4565 real(TKR) , intent(out) , contiguous :: rank(:)
4566 procedure(logical(LK)) :: isSorted
4567 end subroutine
4568#endif
4569
4570#if SK4_ENABLED
4571 module subroutine setRankFractionalCusCom_D1_PSSK4(rank, array, isSorted)
4572#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4573 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_PSSK4
4574#endif
4575 use pm_kind, only: TKR => RK, SKG => SK4
4576 use pm_container, only: css_pdt
4577 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4578 real(TKR) , intent(out) , contiguous :: rank(:)
4579 procedure(logical(LK)) :: isSorted
4580 end subroutine
4581#endif
4582
4583#if SK3_ENABLED
4584 module subroutine setRankFractionalCusCom_D1_PSSK3(rank, array, isSorted)
4585#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4586 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_PSSK3
4587#endif
4588 use pm_kind, only: TKR => RK, SKG => SK3
4589 use pm_container, only: css_pdt
4590 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4591 real(TKR) , intent(out) , contiguous :: rank(:)
4592 procedure(logical(LK)) :: isSorted
4593 end subroutine
4594#endif
4595
4596#if SK2_ENABLED
4597 module subroutine setRankFractionalCusCom_D1_PSSK2(rank, array, isSorted)
4598#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4599 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_PSSK2
4600#endif
4601 use pm_kind, only: TKR => RK, SKG => SK2
4602 use pm_container, only: css_pdt
4603 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4604 real(TKR) , intent(out) , contiguous :: rank(:)
4605 procedure(logical(LK)) :: isSorted
4606 end subroutine
4607#endif
4608
4609#if SK1_ENABLED
4610 module subroutine setRankFractionalCusCom_D1_PSSK1(rank, array, isSorted)
4611#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4612 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_PSSK1
4613#endif
4614 use pm_kind, only: TKR => RK, SKG => SK1
4615 use pm_container, only: css_pdt
4616 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
4617 real(TKR) , intent(out) , contiguous :: rank(:)
4618 procedure(logical(LK)) :: isSorted
4619 end subroutine
4620#endif
4621
4622#endif
4623!PDT_ENABLED
4624
4625 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4626
4627 module subroutine setRankFractionalCusCom_D1_BSSK(rank, array, isSorted)
4628#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4629 !DEC$ ATTRIBUTES DLLEXPORT :: setRankFractionalCusCom_D1_BSSK
4630#endif
4631 use pm_kind, only: TKR => RK, SKG => SK
4632 use pm_container, only: css_type
4633 type(css_type) , intent(in) , contiguous :: array(:)
4634 real(TKR) , intent(out) , contiguous :: rank(:)
4635 procedure(logical(LK)) :: isSorted
4636 end subroutine
4637
4638 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4639
4640 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4641 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4642 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4643
4644 end interface
4645
4646!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4647
4797
4798 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4799 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4800 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4801
4802 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4803
4804#if SK5_ENABLED
4805 module function getRankModifiedDefCom_D0_SK5(array) result(rank)
4806#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4807 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D0_SK5
4808#endif
4809 use pm_kind, only: TKR => IK, SKG => SK5
4810 character(*,SKG) , intent(in) :: array
4811 integer(TKR) :: rank(len(array, IK))
4812 end function
4813#endif
4814
4815#if SK4_ENABLED
4816 module function getRankModifiedDefCom_D0_SK4(array) result(rank)
4817#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4818 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D0_SK4
4819#endif
4820 use pm_kind, only: TKR => IK, SKG => SK4
4821 character(*,SKG) , intent(in) :: array
4822 integer(TKR) :: rank(len(array, IK))
4823 end function
4824#endif
4825
4826#if SK3_ENABLED
4827 module function getRankModifiedDefCom_D0_SK3(array) result(rank)
4828#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4829 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D0_SK3
4830#endif
4831 use pm_kind, only: TKR => IK, SKG => SK3
4832 character(*,SKG) , intent(in) :: array
4833 integer(TKR) :: rank(len(array, IK))
4834 end function
4835#endif
4836
4837#if SK2_ENABLED
4838 module function getRankModifiedDefCom_D0_SK2(array) result(rank)
4839#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4840 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D0_SK2
4841#endif
4842 use pm_kind, only: TKR => IK, SKG => SK2
4843 character(*,SKG) , intent(in) :: array
4844 integer(TKR) :: rank(len(array, IK))
4845 end function
4846#endif
4847
4848#if SK1_ENABLED
4849 module function getRankModifiedDefCom_D0_SK1(array) result(rank)
4850#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4851 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D0_SK1
4852#endif
4853 use pm_kind, only: TKR => IK, SKG => SK1
4854 character(*,SKG) , intent(in) :: array
4855 integer(TKR) :: rank(len(array, IK))
4856 end function
4857#endif
4858
4859 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4860
4861#if SK5_ENABLED
4862 module function getRankModifiedDefCom_D1_SK5(array) result(rank)
4863#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4864 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_SK5
4865#endif
4866 use pm_kind, only: TKR => IK, SKG => SK5
4867 character(*,SKG) , intent(in) , contiguous :: array(:)
4868 integer(TKR) :: rank(size(array, kind = IK))
4869 end function
4870#endif
4871
4872#if SK4_ENABLED
4873 module function getRankModifiedDefCom_D1_SK4(array) result(rank)
4874#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4875 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_SK4
4876#endif
4877 use pm_kind, only: TKR => IK, SKG => SK4
4878 character(*,SKG) , intent(in) , contiguous :: array(:)
4879 integer(TKR) :: rank(size(array, kind = IK))
4880 end function
4881#endif
4882
4883#if SK3_ENABLED
4884 module function getRankModifiedDefCom_D1_SK3(array) result(rank)
4885#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4886 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_SK3
4887#endif
4888 use pm_kind, only: TKR => IK, SKG => SK3
4889 character(*,SKG) , intent(in) , contiguous :: array(:)
4890 integer(TKR) :: rank(size(array, kind = IK))
4891 end function
4892#endif
4893
4894#if SK2_ENABLED
4895 module function getRankModifiedDefCom_D1_SK2(array) result(rank)
4896#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4897 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_SK2
4898#endif
4899 use pm_kind, only: TKR => IK, SKG => SK2
4900 character(*,SKG) , intent(in) , contiguous :: array(:)
4901 integer(TKR) :: rank(size(array, kind = IK))
4902 end function
4903#endif
4904
4905#if SK1_ENABLED
4906 module function getRankModifiedDefCom_D1_SK1(array) result(rank)
4907#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4908 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_SK1
4909#endif
4910 use pm_kind, only: TKR => IK, SKG => SK1
4911 character(*,SKG) , intent(in) , contiguous :: array(:)
4912 integer(TKR) :: rank(size(array, kind = IK))
4913 end function
4914#endif
4915
4916 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4917
4918#if IK5_ENABLED
4919 module function getRankModifiedDefCom_D1_IK5(array) result(rank)
4920#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4921 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_IK5
4922#endif
4923 use pm_kind, only: TKR => IK, IKG => IK5
4924 integer(IKG) , intent(in) , contiguous :: array(:)
4925 integer(TKR) :: rank(size(array, kind = IK))
4926 end function
4927#endif
4928
4929#if IK4_ENABLED
4930 module function getRankModifiedDefCom_D1_IK4(array) result(rank)
4931#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4932 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_IK4
4933#endif
4934 use pm_kind, only: TKR => IK, IKG => IK4
4935 integer(IKG) , intent(in) , contiguous :: array(:)
4936 integer(TKR) :: rank(size(array, kind = IK))
4937 end function
4938#endif
4939
4940#if IK3_ENABLED
4941 module function getRankModifiedDefCom_D1_IK3(array) result(rank)
4942#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4943 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_IK3
4944#endif
4945 use pm_kind, only: TKR => IK, IKG => IK3
4946 integer(IKG) , intent(in) , contiguous :: array(:)
4947 integer(TKR) :: rank(size(array, kind = IK))
4948 end function
4949#endif
4950
4951#if IK2_ENABLED
4952 module function getRankModifiedDefCom_D1_IK2(array) result(rank)
4953#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4954 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_IK2
4955#endif
4956 use pm_kind, only: TKR => IK, IKG => IK2
4957 integer(IKG) , intent(in) , contiguous :: array(:)
4958 integer(TKR) :: rank(size(array, kind = IK))
4959 end function
4960#endif
4961
4962#if IK1_ENABLED
4963 module function getRankModifiedDefCom_D1_IK1(array) result(rank)
4964#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4965 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_IK1
4966#endif
4967 use pm_kind, only: TKR => IK, IKG => IK1
4968 integer(IKG) , intent(in) , contiguous :: array(:)
4969 integer(TKR) :: rank(size(array, kind = IK))
4970 end function
4971#endif
4972
4973 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4974
4975#if LK5_ENABLED
4976 module function getRankModifiedDefCom_D1_LK5(array) result(rank)
4977#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4978 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_LK5
4979#endif
4980 use pm_kind, only: TKR => IK, LKG => LK5
4981 logical(LKG) , intent(in) , contiguous :: array(:)
4982 integer(TKR) :: rank(size(array, kind = IK))
4983 end function
4984#endif
4985
4986#if LK4_ENABLED
4987 module function getRankModifiedDefCom_D1_LK4(array) result(rank)
4988#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4989 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_LK4
4990#endif
4991 use pm_kind, only: TKR => IK, LKG => LK4
4992 logical(LKG) , intent(in) , contiguous :: array(:)
4993 integer(TKR) :: rank(size(array, kind = IK))
4994 end function
4995#endif
4996
4997#if LK3_ENABLED
4998 module function getRankModifiedDefCom_D1_LK3(array) result(rank)
4999#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5000 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_LK3
5001#endif
5002 use pm_kind, only: TKR => IK, LKG => LK3
5003 logical(LKG) , intent(in) , contiguous :: array(:)
5004 integer(TKR) :: rank(size(array, kind = IK))
5005 end function
5006#endif
5007
5008#if LK2_ENABLED
5009 module function getRankModifiedDefCom_D1_LK2(array) result(rank)
5010#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5011 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_LK2
5012#endif
5013 use pm_kind, only: TKR => IK, LKG => LK2
5014 logical(LKG) , intent(in) , contiguous :: array(:)
5015 integer(TKR) :: rank(size(array, kind = IK))
5016 end function
5017#endif
5018
5019#if LK1_ENABLED
5020 module function getRankModifiedDefCom_D1_LK1(array) result(rank)
5021#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5022 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_LK1
5023#endif
5024 use pm_kind, only: TKR => IK, LKG => LK1
5025 logical(LKG) , intent(in) , contiguous :: array(:)
5026 integer(TKR) :: rank(size(array, kind = IK))
5027 end function
5028#endif
5029
5030 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5031
5032#if CK5_ENABLED
5033 module function getRankModifiedDefCom_D1_CK5(array) result(rank)
5034#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5035 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_CK5
5036#endif
5037 use pm_kind, only: TKR => IK, CKG => CK5
5038 complex(CKG) , intent(in) , contiguous :: array(:)
5039 integer(TKR) :: rank(size(array, kind = IK))
5040 end function
5041#endif
5042
5043#if CK4_ENABLED
5044 module function getRankModifiedDefCom_D1_CK4(array) result(rank)
5045#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5046 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_CK4
5047#endif
5048 use pm_kind, only: TKR => IK, CKG => CK4
5049 complex(CKG) , intent(in) , contiguous :: array(:)
5050 integer(TKR) :: rank(size(array, kind = IK))
5051 end function
5052#endif
5053
5054#if CK3_ENABLED
5055 module function getRankModifiedDefCom_D1_CK3(array) result(rank)
5056#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5057 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_CK3
5058#endif
5059 use pm_kind, only: TKR => IK, CKG => CK3
5060 complex(CKG) , intent(in) , contiguous :: array(:)
5061 integer(TKR) :: rank(size(array, kind = IK))
5062 end function
5063#endif
5064
5065#if CK2_ENABLED
5066 module function getRankModifiedDefCom_D1_CK2(array) result(rank)
5067#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5068 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_CK2
5069#endif
5070 use pm_kind, only: TKR => IK, CKG => CK2
5071 complex(CKG) , intent(in) , contiguous :: array(:)
5072 integer(TKR) :: rank(size(array, kind = IK))
5073 end function
5074#endif
5075
5076#if CK1_ENABLED
5077 module function getRankModifiedDefCom_D1_CK1(array) result(rank)
5078#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5079 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_CK1
5080#endif
5081 use pm_kind, only: TKR => IK, CKG => CK1
5082 complex(CKG) , intent(in) , contiguous :: array(:)
5083 integer(TKR) :: rank(size(array, kind = IK))
5084 end function
5085#endif
5086
5087 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5088
5089#if RK5_ENABLED
5090 module function getRankModifiedDefCom_D1_RK5(array) result(rank)
5091#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5092 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_RK5
5093#endif
5094 use pm_kind, only: TKR => IK, RKG => RK5
5095 real(RKG) , intent(in) , contiguous :: array(:)
5096 integer(TKR) :: rank(size(array, kind = IK))
5097 end function
5098#endif
5099
5100#if RK4_ENABLED
5101 module function getRankModifiedDefCom_D1_RK4(array) result(rank)
5102#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5103 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_RK4
5104#endif
5105 use pm_kind, only: TKR => IK, RKG => RK4
5106 real(RKG) , intent(in) , contiguous :: array(:)
5107 integer(TKR) :: rank(size(array, kind = IK))
5108 end function
5109#endif
5110
5111#if RK3_ENABLED
5112 module function getRankModifiedDefCom_D1_RK3(array) result(rank)
5113#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5114 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_RK3
5115#endif
5116 use pm_kind, only: TKR => IK, RKG => RK3
5117 real(RKG) , intent(in) , contiguous :: array(:)
5118 integer(TKR) :: rank(size(array, kind = IK))
5119 end function
5120#endif
5121
5122#if RK2_ENABLED
5123 module function getRankModifiedDefCom_D1_RK2(array) result(rank)
5124#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5125 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_RK2
5126#endif
5127 use pm_kind, only: TKR => IK, RKG => RK2
5128 real(RKG) , intent(in) , contiguous :: array(:)
5129 integer(TKR) :: rank(size(array, kind = IK))
5130 end function
5131#endif
5132
5133#if RK1_ENABLED
5134 module function getRankModifiedDefCom_D1_RK1(array) result(rank)
5135#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5136 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_RK1
5137#endif
5138 use pm_kind, only: TKR => IK, RKG => RK1
5139 real(RKG) , intent(in) , contiguous :: array(:)
5140 integer(TKR) :: rank(size(array, kind = IK))
5141 end function
5142#endif
5143
5144 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5145
5146#if PDT_ENABLED
5147
5148#if SK5_ENABLED
5149 module function getRankModifiedDefCom_D1_PSSK5(array) result(rank)
5150#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5151 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_PSSK5
5152#endif
5153 use pm_kind, only: TKR => IK, SKG => SK5
5154 use pm_container, only: css_pdt
5155 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
5156 integer(TKR) :: rank(size(array, kind = IK))
5157 end function
5158#endif
5159
5160#if SK4_ENABLED
5161 module function getRankModifiedDefCom_D1_PSSK4(array) result(rank)
5162#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5163 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_PSSK4
5164#endif
5165 use pm_kind, only: TKR => IK, SKG => SK4
5166 use pm_container, only: css_pdt
5167 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
5168 integer(TKR) :: rank(size(array, kind = IK))
5169 end function
5170#endif
5171
5172#if SK3_ENABLED
5173 module function getRankModifiedDefCom_D1_PSSK3(array) result(rank)
5174#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5175 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_PSSK3
5176#endif
5177 use pm_kind, only: TKR => IK, SKG => SK3
5178 use pm_container, only: css_pdt
5179 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
5180 integer(TKR) :: rank(size(array, kind = IK))
5181 end function
5182#endif
5183
5184#if SK2_ENABLED
5185 module function getRankModifiedDefCom_D1_PSSK2(array) result(rank)
5186#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5187 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_PSSK2
5188#endif
5189 use pm_kind, only: TKR => IK, SKG => SK2
5190 use pm_container, only: css_pdt
5191 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
5192 integer(TKR) :: rank(size(array, kind = IK))
5193 end function
5194#endif
5195
5196#if SK1_ENABLED
5197 module function getRankModifiedDefCom_D1_PSSK1(array) result(rank)
5198#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5199 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_PSSK1
5200#endif
5201 use pm_kind, only: TKR => IK, SKG => SK1
5202 use pm_container, only: css_pdt
5203 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
5204 integer(TKR) :: rank(size(array, kind = IK))
5205 end function
5206#endif
5207
5208#endif
5209!PDT_ENABLED
5210
5211 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5212
5213 module function getRankModifiedDefCom_D1_BSSK(array) result(rank)
5214#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5215 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedDefCom_D1_BSSK
5216#endif
5217 use pm_kind, only: TKR => IK, SKG => SK
5218 use pm_container, only: css_type
5219 type(css_type) , intent(in) , contiguous :: array(:)
5220 integer(TKR) :: rank(size(array, kind = IK))
5221 end function
5222
5223 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5224
5225 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5226 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5227 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5228
5229 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5230
5231#if SK5_ENABLED
5232 module function getRankModifiedCusCom_D0_SK5(array, isSorted) result(rank)
5233#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5234 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D0_SK5
5235#endif
5236 use pm_kind, only: TKR => IK, SKG => SK5
5237 character(*,SKG) , intent(in) :: array
5238 procedure(logical(LK)) :: isSorted
5239 integer(TKR) :: rank(len(array, IK))
5240 end function
5241#endif
5242
5243#if SK4_ENABLED
5244 module function getRankModifiedCusCom_D0_SK4(array, isSorted) result(rank)
5245#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5246 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D0_SK4
5247#endif
5248 use pm_kind, only: TKR => IK, SKG => SK4
5249 character(*,SKG) , intent(in) :: array
5250 procedure(logical(LK)) :: isSorted
5251 integer(TKR) :: rank(len(array, IK))
5252 end function
5253#endif
5254
5255#if SK3_ENABLED
5256 module function getRankModifiedCusCom_D0_SK3(array, isSorted) result(rank)
5257#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5258 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D0_SK3
5259#endif
5260 use pm_kind, only: TKR => IK, SKG => SK3
5261 character(*,SKG) , intent(in) :: array
5262 procedure(logical(LK)) :: isSorted
5263 integer(TKR) :: rank(len(array, IK))
5264 end function
5265#endif
5266
5267#if SK2_ENABLED
5268 module function getRankModifiedCusCom_D0_SK2(array, isSorted) result(rank)
5269#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5270 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D0_SK2
5271#endif
5272 use pm_kind, only: TKR => IK, SKG => SK2
5273 character(*,SKG) , intent(in) :: array
5274 procedure(logical(LK)) :: isSorted
5275 integer(TKR) :: rank(len(array, IK))
5276 end function
5277#endif
5278
5279#if SK1_ENABLED
5280 module function getRankModifiedCusCom_D0_SK1(array, isSorted) result(rank)
5281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5282 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D0_SK1
5283#endif
5284 use pm_kind, only: TKR => IK, SKG => SK1
5285 character(*,SKG) , intent(in) :: array
5286 procedure(logical(LK)) :: isSorted
5287 integer(TKR) :: rank(len(array, IK))
5288 end function
5289#endif
5290
5291 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5292
5293#if SK5_ENABLED
5294 module function getRankModifiedCusCom_D1_SK5(array, isSorted) result(rank)
5295#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5296 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_SK5
5297#endif
5298 use pm_kind, only: TKR => IK, SKG => SK5
5299 character(*,SKG) , intent(in) , contiguous :: array(:)
5300 procedure(logical(LK)) :: isSorted
5301 integer(TKR) :: rank(size(array, kind = IK))
5302 end function
5303#endif
5304
5305#if SK4_ENABLED
5306 module function getRankModifiedCusCom_D1_SK4(array, isSorted) result(rank)
5307#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5308 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_SK4
5309#endif
5310 use pm_kind, only: TKR => IK, SKG => SK4
5311 character(*,SKG) , intent(in) , contiguous :: array(:)
5312 procedure(logical(LK)) :: isSorted
5313 integer(TKR) :: rank(size(array, kind = IK))
5314 end function
5315#endif
5316
5317#if SK3_ENABLED
5318 module function getRankModifiedCusCom_D1_SK3(array, isSorted) result(rank)
5319#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5320 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_SK3
5321#endif
5322 use pm_kind, only: TKR => IK, SKG => SK3
5323 character(*,SKG) , intent(in) , contiguous :: array(:)
5324 procedure(logical(LK)) :: isSorted
5325 integer(TKR) :: rank(size(array, kind = IK))
5326 end function
5327#endif
5328
5329#if SK2_ENABLED
5330 module function getRankModifiedCusCom_D1_SK2(array, isSorted) result(rank)
5331#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5332 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_SK2
5333#endif
5334 use pm_kind, only: TKR => IK, SKG => SK2
5335 character(*,SKG) , intent(in) , contiguous :: array(:)
5336 procedure(logical(LK)) :: isSorted
5337 integer(TKR) :: rank(size(array, kind = IK))
5338 end function
5339#endif
5340
5341#if SK1_ENABLED
5342 module function getRankModifiedCusCom_D1_SK1(array, isSorted) result(rank)
5343#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5344 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_SK1
5345#endif
5346 use pm_kind, only: TKR => IK, SKG => SK1
5347 character(*,SKG) , intent(in) , contiguous :: array(:)
5348 procedure(logical(LK)) :: isSorted
5349 integer(TKR) :: rank(size(array, kind = IK))
5350 end function
5351#endif
5352
5353 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5354
5355#if IK5_ENABLED
5356 module function getRankModifiedCusCom_D1_IK5(array, isSorted) result(rank)
5357#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5358 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_IK5
5359#endif
5360 use pm_kind, only: TKR => IK, IKG => IK5
5361 integer(IKG) , intent(in) , contiguous :: array(:)
5362 procedure(logical(LK)) :: isSorted
5363 integer(TKR) :: rank(size(array, kind = IK))
5364 end function
5365#endif
5366
5367#if IK4_ENABLED
5368 module function getRankModifiedCusCom_D1_IK4(array, isSorted) result(rank)
5369#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5370 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_IK4
5371#endif
5372 use pm_kind, only: TKR => IK, IKG => IK4
5373 integer(IKG) , intent(in) , contiguous :: array(:)
5374 procedure(logical(LK)) :: isSorted
5375 integer(TKR) :: rank(size(array, kind = IK))
5376 end function
5377#endif
5378
5379#if IK3_ENABLED
5380 module function getRankModifiedCusCom_D1_IK3(array, isSorted) result(rank)
5381#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5382 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_IK3
5383#endif
5384 use pm_kind, only: TKR => IK, IKG => IK3
5385 integer(IKG) , intent(in) , contiguous :: array(:)
5386 procedure(logical(LK)) :: isSorted
5387 integer(TKR) :: rank(size(array, kind = IK))
5388 end function
5389#endif
5390
5391#if IK2_ENABLED
5392 module function getRankModifiedCusCom_D1_IK2(array, isSorted) result(rank)
5393#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5394 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_IK2
5395#endif
5396 use pm_kind, only: TKR => IK, IKG => IK2
5397 integer(IKG) , intent(in) , contiguous :: array(:)
5398 procedure(logical(LK)) :: isSorted
5399 integer(TKR) :: rank(size(array, kind = IK))
5400 end function
5401#endif
5402
5403#if IK1_ENABLED
5404 module function getRankModifiedCusCom_D1_IK1(array, isSorted) result(rank)
5405#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5406 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_IK1
5407#endif
5408 use pm_kind, only: TKR => IK, IKG => IK1
5409 integer(IKG) , intent(in) , contiguous :: array(:)
5410 procedure(logical(LK)) :: isSorted
5411 integer(TKR) :: rank(size(array, kind = IK))
5412 end function
5413#endif
5414
5415 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5416
5417#if LK5_ENABLED
5418 module function getRankModifiedCusCom_D1_LK5(array, isSorted) result(rank)
5419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5420 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_LK5
5421#endif
5422 use pm_kind, only: TKR => IK, LKG => LK5
5423 logical(LKG) , intent(in) , contiguous :: array(:)
5424 procedure(logical(LK)) :: isSorted
5425 integer(TKR) :: rank(size(array, kind = IK))
5426 end function
5427#endif
5428
5429#if LK4_ENABLED
5430 module function getRankModifiedCusCom_D1_LK4(array, isSorted) result(rank)
5431#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5432 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_LK4
5433#endif
5434 use pm_kind, only: TKR => IK, LKG => LK4
5435 logical(LKG) , intent(in) , contiguous :: array(:)
5436 procedure(logical(LK)) :: isSorted
5437 integer(TKR) :: rank(size(array, kind = IK))
5438 end function
5439#endif
5440
5441#if LK3_ENABLED
5442 module function getRankModifiedCusCom_D1_LK3(array, isSorted) result(rank)
5443#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5444 !DEC$ ATTRIBUTES DLLEXPORT :: getRankModifiedCusCom_D1_LK3
5445#endif