ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_arraySelect.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
46
48
49 use pm_kind, only: SK, IK, LK
50
51 implicit none
52
53 character(*,SK), parameter :: MODULE_NAME = "@pm_arraySelect"
54
55!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56
57! interface setSelectedIndex
58!
59! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
60! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
61! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
62!
63! PURE module subroutine setSelectedIndex_D0_SK(index, array, rank, lb, ub)
64!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
65! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D0_SK
66!#endif
67! use pm_kind, only: LK, IK, SK
68! integer(IK) , intent(out) :: index
69! character(*, SK), intent(in) :: array
70! integer(IK) , intent(in) :: rank
71! integer(IK) , intent(in) , optional :: lb, ub
72! end subroutine
73!
74! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
75! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
77!
78! PURE module subroutine setSelectedIndex_D1_SK(index, array, rank, lb, ub)
79!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
80! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_SK
81!#endif
82! use pm_kind, only: LK, IK, SK
83! integer(IK) , intent(out) :: index
84! character(*, SK), intent(in) , contiguous :: array(:)
85! integer(IK) , intent(in) :: rank
86! integer(IK) , intent(in) , optional :: lb, ub
87! end subroutine
88!
89! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
90! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
91! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
92!
93!#if IK4_ENABLED
94!
95! PURE module subroutine setSelectedIndex_D1_IK4(index, array, rank, lb, ub)
96!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
97! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_IK4
98!#endif
99! use pm_kind, only: LK, IK, IKG => IK4
100! integer(IK) , intent(out) :: index
101! integer(IKG) , intent(in) , contiguous :: array(:)
102! integer(IK) , intent(in) :: rank
103! integer(IK) , intent(in) , optional :: lb, ub
104! end subroutine
105!
106!#endif
107!
108! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
109!
110!#if IK3_ENABLED
111!
112! PURE module subroutine setSelectedIndex_D1_IK3(index, array, rank, lb, ub)
113!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
114! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_IK3
115!#endif
116! use pm_kind, only: LK, IK, IKG => IK3
117! integer(IK) , intent(out) :: index
118! integer(IKG) , intent(in) , contiguous :: array(:)
119! integer(IK) , intent(in) :: rank
120! integer(IK) , intent(in) , optional :: lb, ub
121! end subroutine
122!
123!#endif
124!
125! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
126!
127!#if IK2_ENABLED
128!
129! PURE module subroutine setSelectedIndex_D1_IK2(index, array, rank, lb, ub)
130!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
131! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_IK2
132!#endif
133! use pm_kind, only: LK, IK, IKG => IK2
134! integer(IK) , intent(out) :: index
135! integer(IKG) , intent(in) , contiguous :: array(:)
136! integer(IK) , intent(in) :: rank
137! integer(IK) , intent(in) , optional :: lb, ub
138! end subroutine
139!
140!#endif
141!
142! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
143!
144!#if IK1_ENABLED
145!
146! PURE module subroutine setSelectedIndex_D1_IK1(index, array, rank, lb, ub)
147!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
148! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_IK1
149!#endif
150! use pm_kind, only: LK, IK, IKG => IK1
151! integer(IK) , intent(out) :: index
152! integer(IKG) , intent(in) , contiguous :: array(:)
153! integer(IK) , intent(in) :: rank
154! integer(IK) , intent(in) , optional :: lb, ub
155! end subroutine
156!
157!#endif
158!
159! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
160! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
161! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
162!
163!#if RK3_ENABLED
164!
165! PURE module subroutine setSelectedIndex_D1_RK3(index, array, rank, lb, ub)
166!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
167! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_RK3
168!#endif
169! use pm_kind, only: LK, IK, RK => RK3
170! integer(IK) , intent(out) :: index
171! real(RK) , intent(in) , contiguous :: array(:)
172! integer(IK) , intent(in) :: rank
173! integer(IK) , intent(in) , optional :: lb, ub
174! end subroutine
175!
176!#endif
177!
178! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
179!
180!#if RK2_ENABLED
181!
182! PURE module subroutine setSelectedIndex_D1_RK2(index, array, rank, lb, ub)
183!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
184! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_RK2
185!#endif
186! use pm_kind, only: LK, IK, RK => RK2
187! integer(IK) , intent(out) :: index
188! real(RK) , intent(in) , contiguous :: array(:)
189! integer(IK) , intent(in) :: rank
190! integer(IK) , intent(in) , optional :: lb, ub
191! end subroutine
192!
193!#endif
194!
195! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
196!
197!#if RK1_ENABLED
198!
199! PURE module subroutine setSelectedIndex_D1_RK1(index, array, rank, lb, ub)
200!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
201! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_RK1
202!#endif
203! use pm_kind, only: LK, IK, RK => RK1
204! integer(IK) , intent(out) :: index
205! real(RK) , intent(in) , contiguous :: array(:)
206! integer(IK) , intent(in) :: rank
207! integer(IK) , intent(in) , optional :: lb, ub
208! end subroutine
209!
210!#endif
211!
212! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
213! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
214! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
215!
216! PURE module subroutine setSelectedIndex_D1_SSK(index, array, rank, lb, ub)
217!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
218! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndex_D1_SSK
219!#endif
220! use pm_kind, only: IK, LK
221! use pm_container, only: Container => css_pdt
222! integer(IK) , intent(out) :: index
223! type(Container) , intent(in) :: array(:)
224! integer(IK) , intent(in) :: rank
225! integer(IK) , intent(in) , optional :: lb, ub
226! end subroutine
227!
228! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
229! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
230! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
231! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
232! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
233! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
234! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
235! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
236! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
237!
238! module subroutine setSelectedIndexCustom_D0_SK(index, array, rank, isSorted, lb, ub)
239!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
240! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D0_SK
241!#endif
242! use pm_kind, only: LK, IK, SK
243! integer(IK) , intent(out) :: index
244! character(*, SK), intent(in) :: array
245! integer(IK) , intent(in) :: rank
246! logical(LK) , external :: isSorted
247! integer(IK) , intent(in) , optional :: lb, ub
248! end subroutine
249!
250! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
251! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
252! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
253!
254! module subroutine setSelectedIndexCustom_D1_SK(index, array, rank, isSorted, lb, ub)
255!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
256! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_SK
257!#endif
258! use pm_kind, only: LK, IK, SK
259! integer(IK) , intent(out) :: index
260! character(*, SK), intent(in) , contiguous :: array(:)
261! integer(IK) , intent(in) :: rank
262! logical(LK) , external :: isSorted
263! integer(IK) , intent(in) , optional :: lb, ub
264! end subroutine
265!
266! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
267! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
268! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
269!
270!#if IK4_ENABLED
271!
272! module subroutine setSelectedIndexCustom_D1_IK4(index, array, rank, isSorted, lb, ub)
273!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
274! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_IK4
275!#endif
276! use pm_kind, only: LK, IK, IKG => IK4
277! integer(IK) , intent(out) :: index
278! integer(IKG) , intent(in) , contiguous :: array(:)
279! integer(IK) , intent(in) :: rank
280! logical(LK) , external :: isSorted
281! integer(IK) , intent(in) , optional :: lb, ub
282! end subroutine
283!
284!#endif
285!
286! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
287!
288!#if IK3_ENABLED
289!
290! module subroutine setSelectedIndexCustom_D1_IK3(index, array, rank, isSorted, lb, ub)
291!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
292! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_IK3
293!#endif
294! use pm_kind, only: LK, IK, IKG => IK3
295! integer(IK) , intent(out) :: index
296! integer(IKG) , intent(in) , contiguous :: array(:)
297! integer(IK) , intent(in) :: rank
298! logical(LK) , external :: isSorted
299! integer(IK) , intent(in) , optional :: lb, ub
300! end subroutine
301!
302!#endif
303!
304! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
305!
306!#if IK2_ENABLED
307!
308! module subroutine setSelectedIndexCustom_D1_IK2(index, array, rank, isSorted, lb, ub)
309!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
310! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_IK2
311!#endif
312! use pm_kind, only: LK, IK, IKG => IK2
313! integer(IK) , intent(out) :: index
314! integer(IKG) , intent(in) , contiguous :: array(:)
315! integer(IK) , intent(in) :: rank
316! logical(LK) , external :: isSorted
317! integer(IK) , intent(in) , optional :: lb, ub
318! end subroutine
319!
320!#endif
321!
322! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
323!
324!#if IK1_ENABLED
325!
326! module subroutine setSelectedIndexCustom_D1_IK1(index, array, rank, isSorted, lb, ub)
327!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
328! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_IK1
329!#endif
330! use pm_kind, only: LK, IK, IKG => IK1
331! integer(IK) , intent(out) :: index
332! integer(IKG) , intent(in) , contiguous :: array(:)
333! integer(IK) , intent(in) :: rank
334! logical(LK) , external :: isSorted
335! integer(IK) , intent(in) , optional :: lb, ub
336! end subroutine
337!
338!#endif
339!
340! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
341! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
342! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
343!
344!#if RK3_ENABLED
345!
346! module subroutine setSelectedIndexCustom_D1_RK3(index, array, rank, isSorted, lb, ub)
347!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
348! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_RK3
349!#endif
350! use pm_kind, only: LK, IK, RK => RK3
351! integer(IK) , intent(out) :: index
352! real(RK) , intent(in) , contiguous :: array(:)
353! integer(IK) , intent(in) :: rank
354! logical(LK) , external :: isSorted
355! integer(IK) , intent(in) , optional :: lb, ub
356! end subroutine
357!
358!#endif
359!
360! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
361!
362!#if RK2_ENABLED
363!
364! module subroutine setSelectedIndexCustom_D1_RK2(index, array, rank, isSorted, lb, ub)
365!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
366! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_RK2
367!#endif
368! use pm_kind, only: LK, IK, RK => RK2
369! integer(IK) , intent(out) :: index
370! real(RK) , intent(in) , contiguous :: array(:)
371! integer(IK) , intent(in) :: rank
372! logical(LK) , external :: isSorted
373! integer(IK) , intent(in) , optional :: lb, ub
374! end subroutine
375!
376!#endif
377!
378! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
379!
380!#if RK1_ENABLED
381!
382! module subroutine setSelectedIndexCustom_D1_RK1(index, array, rank, isSorted, lb, ub)
383!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
384! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_RK1
385!#endif
386! use pm_kind, only: LK, IK, RK => RK1
387! integer(IK) , intent(out) :: index
388! real(RK) , intent(in) , contiguous :: array(:)
389! integer(IK) , intent(in) :: rank
390! logical(LK) , external :: isSorted
391! integer(IK) , intent(in) , optional :: lb, ub
392! end subroutine
393!
394!#endif
395!
396! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
397! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
398! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
399!
400! module subroutine setSelectedIndexCustom_D1_SSK(index, array, rank, isSorted, lb, ub)
401!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
402! !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedIndexCustom_D1_SSK
403!#endif
404! use pm_kind, only: IK, LK
405! use pm_container, only: Container => css_pdt
406! integer(IK) , intent(out) :: index
407! type(Container) , intent(in) :: array(:)
408! integer(IK) , intent(in) :: rank
409! logical(LK) , external :: isSorted
410! integer(IK) , intent(in) , optional :: lb, ub
411! end subroutine
412!
413! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
414! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
415! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
416!
417! end interface setSelectedIndex
418
419!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
420
543
544 ! DefCom
545
546 interface getSelected
547
548 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
549 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
550 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
551
552 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
553
554#if SK5_ENABLED
555 PURE module function getSelectedDefCom_D0_SK5(array, rank, lb, ub) result(selection)
556#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
557 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D0_SK5
558#endif
559 use pm_kind, only: SKG => SK5
560 character(*,SKG) , intent(in) :: array
561 integer(IK) , intent(in) :: rank
562 integer(IK) , intent(in) , optional :: lb, ub
563 character(1,SKG) :: selection
564 end function
565#endif
566
567#if SK4_ENABLED
568 PURE module function getSelectedDefCom_D0_SK4(array, rank, lb, ub) result(selection)
569#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
570 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D0_SK4
571#endif
572 use pm_kind, only: SKG => SK4
573 character(*,SKG) , intent(in) :: array
574 integer(IK) , intent(in) :: rank
575 integer(IK) , intent(in) , optional :: lb, ub
576 character(1,SKG) :: selection
577 end function
578#endif
579
580#if SK3_ENABLED
581 PURE module function getSelectedDefCom_D0_SK3(array, rank, lb, ub) result(selection)
582#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
583 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D0_SK3
584#endif
585 use pm_kind, only: SKG => SK3
586 character(*,SKG) , intent(in) :: array
587 integer(IK) , intent(in) :: rank
588 integer(IK) , intent(in) , optional :: lb, ub
589 character(1,SKG) :: selection
590 end function
591#endif
592
593#if SK2_ENABLED
594 PURE module function getSelectedDefCom_D0_SK2(array, rank, lb, ub) result(selection)
595#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
596 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D0_SK2
597#endif
598 use pm_kind, only: SKG => SK2
599 character(*,SKG) , intent(in) :: array
600 integer(IK) , intent(in) :: rank
601 integer(IK) , intent(in) , optional :: lb, ub
602 character(1,SKG) :: selection
603 end function
604#endif
605
606#if SK1_ENABLED
607 PURE module function getSelectedDefCom_D0_SK1(array, rank, lb, ub) result(selection)
608#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
609 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D0_SK1
610#endif
611 use pm_kind, only: SKG => SK1
612 character(*,SKG) , intent(in) :: array
613 integer(IK) , intent(in) :: rank
614 integer(IK) , intent(in) , optional :: lb, ub
615 character(1,SKG) :: selection
616 end function
617#endif
618
619 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
620
621#if SK5_ENABLED
622 PURE module function getSelectedDefCom_D1_SK5(array, rank, lb, ub) result(selection)
623#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
624 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_SK5
625#endif
626 use pm_kind, only: SKG => SK5
627 character(*,SKG) , intent(in) , contiguous :: array(:)
628 integer(IK) , intent(in) :: rank
629 integer(IK) , intent(in) , optional :: lb, ub
630 character(len(array,IK),SKG) :: selection
631 end function
632#endif
633
634#if SK4_ENABLED
635 PURE module function getSelectedDefCom_D1_SK4(array, rank, lb, ub) result(selection)
636#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
637 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_SK4
638#endif
639 use pm_kind, only: SKG => SK4
640 character(*,SKG) , intent(in) , contiguous :: array(:)
641 integer(IK) , intent(in) :: rank
642 integer(IK) , intent(in) , optional :: lb, ub
643 character(len(array,IK),SKG) :: selection
644 end function
645#endif
646
647#if SK3_ENABLED
648 PURE module function getSelectedDefCom_D1_SK3(array, rank, lb, ub) result(selection)
649#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
650 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_SK3
651#endif
652 use pm_kind, only: SKG => SK3
653 character(*,SKG) , intent(in) , contiguous :: array(:)
654 integer(IK) , intent(in) :: rank
655 integer(IK) , intent(in) , optional :: lb, ub
656 character(len(array,IK),SKG) :: selection
657 end function
658#endif
659
660#if SK2_ENABLED
661 PURE module function getSelectedDefCom_D1_SK2(array, rank, lb, ub) result(selection)
662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
663 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_SK2
664#endif
665 use pm_kind, only: SKG => SK2
666 character(*,SKG) , intent(in) , contiguous :: array(:)
667 integer(IK) , intent(in) :: rank
668 integer(IK) , intent(in) , optional :: lb, ub
669 character(len(array,IK),SKG) :: selection
670 end function
671#endif
672
673#if SK1_ENABLED
674 PURE module function getSelectedDefCom_D1_SK1(array, rank, lb, ub) result(selection)
675#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
676 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_SK1
677#endif
678 use pm_kind, only: SKG => SK1
679 character(*,SKG) , intent(in) , contiguous :: array(:)
680 integer(IK) , intent(in) :: rank
681 integer(IK) , intent(in) , optional :: lb, ub
682 character(len(array,IK),SKG) :: selection
683 end function
684#endif
685
686 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
687
688#if IK5_ENABLED
689 PURE module function getSelectedDefCom_D1_IK5(array, rank, lb, ub) result(selection)
690#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
691 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_IK5
692#endif
693 use pm_kind, only: IKG => IK5
694 integer(IKG) , intent(in) , contiguous :: array(:)
695 integer(IK) , intent(in) :: rank
696 integer(IK) , intent(in) , optional :: lb, ub
697 integer(IKG) :: selection
698 end function
699#endif
700
701#if IK4_ENABLED
702 PURE module function getSelectedDefCom_D1_IK4(array, rank, lb, ub) result(selection)
703#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
704 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_IK4
705#endif
706 use pm_kind, only: IKG => IK4
707 integer(IKG) , intent(in) , contiguous :: array(:)
708 integer(IK) , intent(in) :: rank
709 integer(IK) , intent(in) , optional :: lb, ub
710 integer(IKG) :: selection
711 end function
712#endif
713
714#if IK3_ENABLED
715 PURE module function getSelectedDefCom_D1_IK3(array, rank, lb, ub) result(selection)
716#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
717 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_IK3
718#endif
719 use pm_kind, only: IKG => IK3
720 integer(IKG) , intent(in) , contiguous :: array(:)
721 integer(IK) , intent(in) :: rank
722 integer(IK) , intent(in) , optional :: lb, ub
723 integer(IKG) :: selection
724 end function
725#endif
726
727#if IK2_ENABLED
728 PURE module function getSelectedDefCom_D1_IK2(array, rank, lb, ub) result(selection)
729#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
730 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_IK2
731#endif
732 use pm_kind, only: IKG => IK2
733 integer(IKG) , intent(in) , contiguous :: array(:)
734 integer(IK) , intent(in) :: rank
735 integer(IK) , intent(in) , optional :: lb, ub
736 integer(IKG) :: selection
737 end function
738#endif
739
740#if IK1_ENABLED
741 PURE module function getSelectedDefCom_D1_IK1(array, rank, lb, ub) result(selection)
742#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
743 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_IK1
744#endif
745 use pm_kind, only: IKG => IK1
746 integer(IKG) , intent(in) , contiguous :: array(:)
747 integer(IK) , intent(in) :: rank
748 integer(IK) , intent(in) , optional :: lb, ub
749 integer(IKG) :: selection
750 end function
751#endif
752
753 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
754
755#if LK5_ENABLED
756 PURE module function getSelectedDefCom_D1_LK5(array, rank, lb, ub) result(selection)
757#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
758 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_LK5
759#endif
760 use pm_kind, only: LKG => LK5
761 logical(LKG) , intent(in) , contiguous :: array(:)
762 integer(IK) , intent(in) :: rank
763 integer(IK) , intent(in) , optional :: lb, ub
764 logical(LKG) :: selection
765 end function
766#endif
767
768#if LK4_ENABLED
769 PURE module function getSelectedDefCom_D1_LK4(array, rank, lb, ub) result(selection)
770#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
771 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_LK4
772#endif
773 use pm_kind, only: LKG => LK4
774 logical(LKG) , intent(in) , contiguous :: array(:)
775 integer(IK) , intent(in) :: rank
776 integer(IK) , intent(in) , optional :: lb, ub
777 logical(LKG) :: selection
778 end function
779#endif
780
781#if LK3_ENABLED
782 PURE module function getSelectedDefCom_D1_LK3(array, rank, lb, ub) result(selection)
783#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
784 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_LK3
785#endif
786 use pm_kind, only: LKG => LK3
787 logical(LKG) , intent(in) , contiguous :: array(:)
788 integer(IK) , intent(in) :: rank
789 integer(IK) , intent(in) , optional :: lb, ub
790 logical(LKG) :: selection
791 end function
792#endif
793
794#if LK2_ENABLED
795 PURE module function getSelectedDefCom_D1_LK2(array, rank, lb, ub) result(selection)
796#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
797 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_LK2
798#endif
799 use pm_kind, only: LKG => LK2
800 logical(LKG) , intent(in) , contiguous :: array(:)
801 integer(IK) , intent(in) :: rank
802 integer(IK) , intent(in) , optional :: lb, ub
803 logical(LKG) :: selection
804 end function
805#endif
806
807#if LK1_ENABLED
808 PURE module function getSelectedDefCom_D1_LK1(array, rank, lb, ub) result(selection)
809#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
810 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_LK1
811#endif
812 use pm_kind, only: LKG => LK1
813 logical(LKG) , intent(in) , contiguous :: array(:)
814 integer(IK) , intent(in) :: rank
815 integer(IK) , intent(in) , optional :: lb, ub
816 logical(LKG) :: selection
817 end function
818#endif
819
820 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
821
822#if CK5_ENABLED
823 PURE module function getSelectedDefCom_D1_CK5(array, rank, lb, ub) result(selection)
824#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
825 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_CK5
826#endif
827 use pm_kind, only: CKG => CK5
828 complex(CKG) , intent(in) , contiguous :: array(:)
829 integer(IK) , intent(in) :: rank
830 integer(IK) , intent(in) , optional :: lb, ub
831 complex(CKG) :: selection
832 end function
833#endif
834
835#if CK4_ENABLED
836 PURE module function getSelectedDefCom_D1_CK4(array, rank, lb, ub) result(selection)
837#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
838 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_CK4
839#endif
840 use pm_kind, only: CKG => CK4
841 complex(CKG) , intent(in) , contiguous :: array(:)
842 integer(IK) , intent(in) :: rank
843 integer(IK) , intent(in) , optional :: lb, ub
844 complex(CKG) :: selection
845 end function
846#endif
847
848#if CK3_ENABLED
849 PURE module function getSelectedDefCom_D1_CK3(array, rank, lb, ub) result(selection)
850#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
851 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_CK3
852#endif
853 use pm_kind, only: CKG => CK3
854 complex(CKG) , intent(in) , contiguous :: array(:)
855 integer(IK) , intent(in) :: rank
856 integer(IK) , intent(in) , optional :: lb, ub
857 complex(CKG) :: selection
858 end function
859#endif
860
861#if CK2_ENABLED
862 PURE module function getSelectedDefCom_D1_CK2(array, rank, lb, ub) result(selection)
863#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
864 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_CK2
865#endif
866 use pm_kind, only: CKG => CK2
867 complex(CKG) , intent(in) , contiguous :: array(:)
868 integer(IK) , intent(in) :: rank
869 integer(IK) , intent(in) , optional :: lb, ub
870 complex(CKG) :: selection
871 end function
872#endif
873
874#if CK1_ENABLED
875 PURE module function getSelectedDefCom_D1_CK1(array, rank, lb, ub) result(selection)
876#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
877 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_CK1
878#endif
879 use pm_kind, only: CKG => CK1
880 complex(CKG) , intent(in) , contiguous :: array(:)
881 integer(IK) , intent(in) :: rank
882 integer(IK) , intent(in) , optional :: lb, ub
883 complex(CKG) :: selection
884 end function
885#endif
886
887 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
888
889#if RK5_ENABLED
890 PURE module function getSelectedDefCom_D1_RK5(array, rank, lb, ub) result(selection)
891#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
892 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_RK5
893#endif
894 use pm_kind, only: RKG => RK5
895 real(RKG) , intent(in) , contiguous :: array(:)
896 integer(IK) , intent(in) :: rank
897 integer(IK) , intent(in) , optional :: lb, ub
898 real(RKG) :: selection
899 end function
900#endif
901
902#if RK4_ENABLED
903 PURE module function getSelectedDefCom_D1_RK4(array, rank, lb, ub) result(selection)
904#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
905 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_RK4
906#endif
907 use pm_kind, only: RKG => RK4
908 real(RKG) , intent(in) , contiguous :: array(:)
909 integer(IK) , intent(in) :: rank
910 integer(IK) , intent(in) , optional :: lb, ub
911 real(RKG) :: selection
912 end function
913#endif
914
915#if RK3_ENABLED
916 PURE module function getSelectedDefCom_D1_RK3(array, rank, lb, ub) result(selection)
917#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
918 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_RK3
919#endif
920 use pm_kind, only: RKG => RK3
921 real(RKG) , intent(in) , contiguous :: array(:)
922 integer(IK) , intent(in) :: rank
923 integer(IK) , intent(in) , optional :: lb, ub
924 real(RKG) :: selection
925 end function
926#endif
927
928#if RK2_ENABLED
929 PURE module function getSelectedDefCom_D1_RK2(array, rank, lb, ub) result(selection)
930#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
931 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_RK2
932#endif
933 use pm_kind, only: RKG => RK2
934 real(RKG) , intent(in) , contiguous :: array(:)
935 integer(IK) , intent(in) :: rank
936 integer(IK) , intent(in) , optional :: lb, ub
937 real(RKG) :: selection
938 end function
939#endif
940
941#if RK1_ENABLED
942 PURE module function getSelectedDefCom_D1_RK1(array, rank, lb, ub) result(selection)
943#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
944 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_RK1
945#endif
946 use pm_kind, only: RKG => RK1
947 real(RKG) , intent(in) , contiguous :: array(:)
948 integer(IK) , intent(in) :: rank
949 integer(IK) , intent(in) , optional :: lb, ub
950 real(RKG) :: selection
951 end function
952#endif
953
954 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
955
956#if PDT_ENABLED
957
958#if SK5_ENABLED
959 module function getSelectedDefCom_D1_PSSK5(array, rank, lb, ub) result(selection)
960#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
961 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_PSSK5
962#endif
963 use pm_kind, only: SKG => SK5
964 use pm_container, only: css_pdt
965 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
966 integer(IK) , intent(in) :: rank
967 integer(IK) , intent(in) , optional :: lb, ub
968 type(css_pdt(SKG)) :: selection
969 end function
970#endif
971
972#if SK4_ENABLED
973 module function getSelectedDefCom_D1_PSSK4(array, rank, lb, ub) result(selection)
974#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
975 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_PSSK4
976#endif
977 use pm_kind, only: SKG => SK4
978 use pm_container, only: css_pdt
979 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
980 integer(IK) , intent(in) :: rank
981 integer(IK) , intent(in) , optional :: lb, ub
982 type(css_pdt(SKG)) :: selection
983 end function
984#endif
985
986#if SK3_ENABLED
987 module function getSelectedDefCom_D1_PSSK3(array, rank, lb, ub) result(selection)
988#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
989 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_PSSK3
990#endif
991 use pm_kind, only: SKG => SK3
992 use pm_container, only: css_pdt
993 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
994 integer(IK) , intent(in) :: rank
995 integer(IK) , intent(in) , optional :: lb, ub
996 type(css_pdt(SKG)) :: selection
997 end function
998#endif
999
1000#if SK2_ENABLED
1001 module function getSelectedDefCom_D1_PSSK2(array, rank, lb, ub) result(selection)
1002#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1003 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_PSSK2
1004#endif
1005 use pm_kind, only: SKG => SK2
1006 use pm_container, only: css_pdt
1007 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1008 integer(IK) , intent(in) :: rank
1009 integer(IK) , intent(in) , optional :: lb, ub
1010 type(css_pdt(SKG)) :: selection
1011 end function
1012#endif
1013
1014#if SK1_ENABLED
1015 module function getSelectedDefCom_D1_PSSK1(array, rank, lb, ub) result(selection)
1016#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1017 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_PSSK1
1018#endif
1019 use pm_kind, only: SKG => SK1
1020 use pm_container, only: css_pdt
1021 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1022 integer(IK) , intent(in) :: rank
1023 integer(IK) , intent(in) , optional :: lb, ub
1024 type(css_pdt(SKG)) :: selection
1025 end function
1026#endif
1027
1028#endif
1029!PDT_ENABLED
1030
1031 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1032
1033 module function getSelectedDefCom_D1_BSSK(array, rank, lb, ub) result(selection)
1034#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1035 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedDefCom_D1_BSSK
1036#endif
1037 use pm_kind, only: SKG => SK
1038 use pm_container, only: css_type
1039 type(css_type) , intent(in) , contiguous :: array(:)
1040 integer(IK) , intent(in) :: rank
1041 integer(IK) , intent(in) , optional :: lb, ub
1042 type(css_type) :: selection
1043 end function
1044
1045 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1046
1047 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1048 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1049 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1050
1051 end interface
1052
1053 ! CusCom
1054
1055 interface getSelected
1056
1057 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1058 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1059 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1060
1061 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1062
1063#if SK5_ENABLED
1064 module function getSelectedCusCom_D0_SK5(array, rank, isSorted, lb, ub) result(selection)
1065#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1066 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D0_SK5
1067#endif
1068 use pm_kind, only: SKG => SK5
1069 character(*,SKG) , intent(in) :: array
1070 integer(IK) , intent(in) :: rank
1071 procedure(logical(LK)) :: isSorted
1072 integer(IK) , intent(in) , optional :: lb, ub
1073 character(1,SKG) :: selection
1074 end function
1075#endif
1076
1077#if SK4_ENABLED
1078 module function getSelectedCusCom_D0_SK4(array, rank, isSorted, lb, ub) result(selection)
1079#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1080 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D0_SK4
1081#endif
1082 use pm_kind, only: SKG => SK4
1083 character(*,SKG) , intent(in) :: array
1084 integer(IK) , intent(in) :: rank
1085 procedure(logical(LK)) :: isSorted
1086 integer(IK) , intent(in) , optional :: lb, ub
1087 character(1,SKG) :: selection
1088 end function
1089#endif
1090
1091#if SK3_ENABLED
1092 module function getSelectedCusCom_D0_SK3(array, rank, isSorted, lb, ub) result(selection)
1093#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1094 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D0_SK3
1095#endif
1096 use pm_kind, only: SKG => SK3
1097 character(*,SKG) , intent(in) :: array
1098 integer(IK) , intent(in) :: rank
1099 procedure(logical(LK)) :: isSorted
1100 integer(IK) , intent(in) , optional :: lb, ub
1101 character(1,SKG) :: selection
1102 end function
1103#endif
1104
1105#if SK2_ENABLED
1106 module function getSelectedCusCom_D0_SK2(array, rank, isSorted, lb, ub) result(selection)
1107#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1108 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D0_SK2
1109#endif
1110 use pm_kind, only: SKG => SK2
1111 character(*,SKG) , intent(in) :: array
1112 integer(IK) , intent(in) :: rank
1113 procedure(logical(LK)) :: isSorted
1114 integer(IK) , intent(in) , optional :: lb, ub
1115 character(1,SKG) :: selection
1116 end function
1117#endif
1118
1119#if SK1_ENABLED
1120 module function getSelectedCusCom_D0_SK1(array, rank, isSorted, lb, ub) result(selection)
1121#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1122 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D0_SK1
1123#endif
1124 use pm_kind, only: SKG => SK1
1125 character(*,SKG) , intent(in) :: array
1126 integer(IK) , intent(in) :: rank
1127 procedure(logical(LK)) :: isSorted
1128 integer(IK) , intent(in) , optional :: lb, ub
1129 character(1,SKG) :: selection
1130 end function
1131#endif
1132
1133 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1134
1135#if SK5_ENABLED
1136 module function getSelectedCusCom_D1_SK5(array, rank, isSorted, lb, ub) result(selection)
1137#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1138 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_SK5
1139#endif
1140 use pm_kind, only: SKG => SK5
1141 character(*,SKG) , intent(in) , contiguous :: array(:)
1142 integer(IK) , intent(in) :: rank
1143 procedure(logical(LK)) :: isSorted
1144 integer(IK) , intent(in) , optional :: lb, ub
1145 character(len(array,IK),SKG) :: selection
1146 end function
1147#endif
1148
1149#if SK4_ENABLED
1150 module function getSelectedCusCom_D1_SK4(array, rank, isSorted, lb, ub) result(selection)
1151#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1152 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_SK4
1153#endif
1154 use pm_kind, only: SKG => SK4
1155 character(*,SKG) , intent(in) , contiguous :: array(:)
1156 integer(IK) , intent(in) :: rank
1157 procedure(logical(LK)) :: isSorted
1158 integer(IK) , intent(in) , optional :: lb, ub
1159 character(len(array,IK),SKG) :: selection
1160 end function
1161#endif
1162
1163#if SK3_ENABLED
1164 module function getSelectedCusCom_D1_SK3(array, rank, isSorted, lb, ub) result(selection)
1165#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1166 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_SK3
1167#endif
1168 use pm_kind, only: SKG => SK3
1169 character(*,SKG) , intent(in) , contiguous :: array(:)
1170 integer(IK) , intent(in) :: rank
1171 procedure(logical(LK)) :: isSorted
1172 integer(IK) , intent(in) , optional :: lb, ub
1173 character(len(array,IK),SKG) :: selection
1174 end function
1175#endif
1176
1177#if SK2_ENABLED
1178 module function getSelectedCusCom_D1_SK2(array, rank, isSorted, lb, ub) result(selection)
1179#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1180 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_SK2
1181#endif
1182 use pm_kind, only: SKG => SK2
1183 character(*,SKG) , intent(in) , contiguous :: array(:)
1184 integer(IK) , intent(in) :: rank
1185 procedure(logical(LK)) :: isSorted
1186 integer(IK) , intent(in) , optional :: lb, ub
1187 character(len(array,IK),SKG) :: selection
1188 end function
1189#endif
1190
1191#if SK1_ENABLED
1192 module function getSelectedCusCom_D1_SK1(array, rank, isSorted, lb, ub) result(selection)
1193#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1194 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_SK1
1195#endif
1196 use pm_kind, only: SKG => SK1
1197 character(*,SKG) , intent(in) , contiguous :: array(:)
1198 integer(IK) , intent(in) :: rank
1199 procedure(logical(LK)) :: isSorted
1200 integer(IK) , intent(in) , optional :: lb, ub
1201 character(len(array,IK),SKG) :: selection
1202 end function
1203#endif
1204
1205 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1206
1207#if IK5_ENABLED
1208 module function getSelectedCusCom_D1_IK5(array, rank, isSorted, lb, ub) result(selection)
1209#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1210 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_IK5
1211#endif
1212 use pm_kind, only: IKG => IK5
1213 integer(IKG) , intent(in) , contiguous :: array(:)
1214 integer(IK) , intent(in) :: rank
1215 procedure(logical(LK)) :: isSorted
1216 integer(IK) , intent(in) , optional :: lb, ub
1217 integer(IKG) :: selection
1218 end function
1219#endif
1220
1221#if IK4_ENABLED
1222 module function getSelectedCusCom_D1_IK4(array, rank, isSorted, lb, ub) result(selection)
1223#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1224 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_IK4
1225#endif
1226 use pm_kind, only: IKG => IK4
1227 integer(IKG) , intent(in) , contiguous :: array(:)
1228 integer(IK) , intent(in) :: rank
1229 procedure(logical(LK)) :: isSorted
1230 integer(IK) , intent(in) , optional :: lb, ub
1231 integer(IKG) :: selection
1232 end function
1233#endif
1234
1235#if IK3_ENABLED
1236 module function getSelectedCusCom_D1_IK3(array, rank, isSorted, lb, ub) result(selection)
1237#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1238 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_IK3
1239#endif
1240 use pm_kind, only: IKG => IK3
1241 integer(IKG) , intent(in) , contiguous :: array(:)
1242 integer(IK) , intent(in) :: rank
1243 procedure(logical(LK)) :: isSorted
1244 integer(IK) , intent(in) , optional :: lb, ub
1245 integer(IKG) :: selection
1246 end function
1247#endif
1248
1249#if IK2_ENABLED
1250 module function getSelectedCusCom_D1_IK2(array, rank, isSorted, lb, ub) result(selection)
1251#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1252 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_IK2
1253#endif
1254 use pm_kind, only: IKG => IK2
1255 integer(IKG) , intent(in) , contiguous :: array(:)
1256 integer(IK) , intent(in) :: rank
1257 procedure(logical(LK)) :: isSorted
1258 integer(IK) , intent(in) , optional :: lb, ub
1259 integer(IKG) :: selection
1260 end function
1261#endif
1262
1263#if IK1_ENABLED
1264 module function getSelectedCusCom_D1_IK1(array, rank, isSorted, lb, ub) result(selection)
1265#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1266 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_IK1
1267#endif
1268 use pm_kind, only: IKG => IK1
1269 integer(IKG) , intent(in) , contiguous :: array(:)
1270 integer(IK) , intent(in) :: rank
1271 procedure(logical(LK)) :: isSorted
1272 integer(IK) , intent(in) , optional :: lb, ub
1273 integer(IKG) :: selection
1274 end function
1275#endif
1276
1277 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1278
1279#if LK5_ENABLED
1280 module function getSelectedCusCom_D1_LK5(array, rank, isSorted, lb, ub) result(selection)
1281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1282 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_LK5
1283#endif
1284 use pm_kind, only: LKG => LK5
1285 logical(LKG) , intent(in) , contiguous :: array(:)
1286 integer(IK) , intent(in) :: rank
1287 procedure(logical(LK)) :: isSorted
1288 integer(IK) , intent(in) , optional :: lb, ub
1289 logical(LKG) :: selection
1290 end function
1291#endif
1292
1293#if LK4_ENABLED
1294 module function getSelectedCusCom_D1_LK4(array, rank, isSorted, lb, ub) result(selection)
1295#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1296 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_LK4
1297#endif
1298 use pm_kind, only: LKG => LK4
1299 logical(LKG) , intent(in) , contiguous :: array(:)
1300 integer(IK) , intent(in) :: rank
1301 procedure(logical(LK)) :: isSorted
1302 integer(IK) , intent(in) , optional :: lb, ub
1303 logical(LKG) :: selection
1304 end function
1305#endif
1306
1307#if LK3_ENABLED
1308 module function getSelectedCusCom_D1_LK3(array, rank, isSorted, lb, ub) result(selection)
1309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1310 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_LK3
1311#endif
1312 use pm_kind, only: LKG => LK3
1313 logical(LKG) , intent(in) , contiguous :: array(:)
1314 integer(IK) , intent(in) :: rank
1315 procedure(logical(LK)) :: isSorted
1316 integer(IK) , intent(in) , optional :: lb, ub
1317 logical(LKG) :: selection
1318 end function
1319#endif
1320
1321#if LK2_ENABLED
1322 module function getSelectedCusCom_D1_LK2(array, rank, isSorted, lb, ub) result(selection)
1323#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1324 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_LK2
1325#endif
1326 use pm_kind, only: LKG => LK2
1327 logical(LKG) , intent(in) , contiguous :: array(:)
1328 integer(IK) , intent(in) :: rank
1329 procedure(logical(LK)) :: isSorted
1330 integer(IK) , intent(in) , optional :: lb, ub
1331 logical(LKG) :: selection
1332 end function
1333#endif
1334
1335#if LK1_ENABLED
1336 module function getSelectedCusCom_D1_LK1(array, rank, isSorted, lb, ub) result(selection)
1337#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1338 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_LK1
1339#endif
1340 use pm_kind, only: LKG => LK1
1341 logical(LKG) , intent(in) , contiguous :: array(:)
1342 integer(IK) , intent(in) :: rank
1343 procedure(logical(LK)) :: isSorted
1344 integer(IK) , intent(in) , optional :: lb, ub
1345 logical(LKG) :: selection
1346 end function
1347#endif
1348
1349 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1350
1351#if CK5_ENABLED
1352 module function getSelectedCusCom_D1_CK5(array, rank, isSorted, lb, ub) result(selection)
1353#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1354 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_CK5
1355#endif
1356 use pm_kind, only: CKG => CK5
1357 complex(CKG) , intent(in) , contiguous :: array(:)
1358 integer(IK) , intent(in) :: rank
1359 procedure(logical(LK)) :: isSorted
1360 integer(IK) , intent(in) , optional :: lb, ub
1361 complex(CKG) :: selection
1362 end function
1363#endif
1364
1365#if CK4_ENABLED
1366 module function getSelectedCusCom_D1_CK4(array, rank, isSorted, lb, ub) result(selection)
1367#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1368 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_CK4
1369#endif
1370 use pm_kind, only: CKG => CK4
1371 complex(CKG) , intent(in) , contiguous :: array(:)
1372 integer(IK) , intent(in) :: rank
1373 procedure(logical(LK)) :: isSorted
1374 integer(IK) , intent(in) , optional :: lb, ub
1375 complex(CKG) :: selection
1376 end function
1377#endif
1378
1379#if CK3_ENABLED
1380 module function getSelectedCusCom_D1_CK3(array, rank, isSorted, lb, ub) result(selection)
1381#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1382 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_CK3
1383#endif
1384 use pm_kind, only: CKG => CK3
1385 complex(CKG) , intent(in) , contiguous :: array(:)
1386 integer(IK) , intent(in) :: rank
1387 procedure(logical(LK)) :: isSorted
1388 integer(IK) , intent(in) , optional :: lb, ub
1389 complex(CKG) :: selection
1390 end function
1391#endif
1392
1393#if CK2_ENABLED
1394 module function getSelectedCusCom_D1_CK2(array, rank, isSorted, lb, ub) result(selection)
1395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1396 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_CK2
1397#endif
1398 use pm_kind, only: CKG => CK2
1399 complex(CKG) , intent(in) , contiguous :: array(:)
1400 integer(IK) , intent(in) :: rank
1401 procedure(logical(LK)) :: isSorted
1402 integer(IK) , intent(in) , optional :: lb, ub
1403 complex(CKG) :: selection
1404 end function
1405#endif
1406
1407#if CK1_ENABLED
1408 module function getSelectedCusCom_D1_CK1(array, rank, isSorted, lb, ub) result(selection)
1409#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1410 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_CK1
1411#endif
1412 use pm_kind, only: CKG => CK1
1413 complex(CKG) , intent(in) , contiguous :: array(:)
1414 integer(IK) , intent(in) :: rank
1415 procedure(logical(LK)) :: isSorted
1416 integer(IK) , intent(in) , optional :: lb, ub
1417 complex(CKG) :: selection
1418 end function
1419#endif
1420
1421 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1422
1423#if RK5_ENABLED
1424 module function getSelectedCusCom_D1_RK5(array, rank, isSorted, lb, ub) result(selection)
1425#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1426 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_RK5
1427#endif
1428 use pm_kind, only: RKG => RK5
1429 real(RKG) , intent(in) , contiguous :: array(:)
1430 integer(IK) , intent(in) :: rank
1431 procedure(logical(LK)) :: isSorted
1432 integer(IK) , intent(in) , optional :: lb, ub
1433 real(RKG) :: selection
1434 end function
1435#endif
1436
1437#if RK4_ENABLED
1438 module function getSelectedCusCom_D1_RK4(array, rank, isSorted, lb, ub) result(selection)
1439#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1440 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_RK4
1441#endif
1442 use pm_kind, only: RKG => RK4
1443 real(RKG) , intent(in) , contiguous :: array(:)
1444 integer(IK) , intent(in) :: rank
1445 procedure(logical(LK)) :: isSorted
1446 integer(IK) , intent(in) , optional :: lb, ub
1447 real(RKG) :: selection
1448 end function
1449#endif
1450
1451#if RK3_ENABLED
1452 module function getSelectedCusCom_D1_RK3(array, rank, isSorted, lb, ub) result(selection)
1453#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1454 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_RK3
1455#endif
1456 use pm_kind, only: RKG => RK3
1457 real(RKG) , intent(in) , contiguous :: array(:)
1458 integer(IK) , intent(in) :: rank
1459 procedure(logical(LK)) :: isSorted
1460 integer(IK) , intent(in) , optional :: lb, ub
1461 real(RKG) :: selection
1462 end function
1463#endif
1464
1465#if RK2_ENABLED
1466 module function getSelectedCusCom_D1_RK2(array, rank, isSorted, lb, ub) result(selection)
1467#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1468 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_RK2
1469#endif
1470 use pm_kind, only: RKG => RK2
1471 real(RKG) , intent(in) , contiguous :: array(:)
1472 integer(IK) , intent(in) :: rank
1473 procedure(logical(LK)) :: isSorted
1474 integer(IK) , intent(in) , optional :: lb, ub
1475 real(RKG) :: selection
1476 end function
1477#endif
1478
1479#if RK1_ENABLED
1480 module function getSelectedCusCom_D1_RK1(array, rank, isSorted, lb, ub) result(selection)
1481#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1482 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_RK1
1483#endif
1484 use pm_kind, only: RKG => RK1
1485 real(RKG) , intent(in) , contiguous :: array(:)
1486 integer(IK) , intent(in) :: rank
1487 procedure(logical(LK)) :: isSorted
1488 integer(IK) , intent(in) , optional :: lb, ub
1489 real(RKG) :: selection
1490 end function
1491#endif
1492
1493 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1494
1495#if PDT_ENABLED
1496
1497#if SK5_ENABLED
1498 module function getSelectedCusCom_D1_PSSK5(array, rank, isSorted, lb, ub) result(selection)
1499#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1500 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_PSSK5
1501#endif
1502 use pm_kind, only: SKG => SK5
1503 use pm_container, only: css_pdt
1504 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1505 integer(IK) , intent(in) :: rank
1506 procedure(logical(LK)) :: isSorted
1507 integer(IK) , intent(in) , optional :: lb, ub
1508 type(css_pdt(SKG)) :: selection
1509 end function
1510#endif
1511
1512#if SK4_ENABLED
1513 module function getSelectedCusCom_D1_PSSK4(array, rank, isSorted, lb, ub) result(selection)
1514#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1515 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_PSSK4
1516#endif
1517 use pm_kind, only: SKG => SK4
1518 use pm_container, only: css_pdt
1519 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1520 integer(IK) , intent(in) :: rank
1521 procedure(logical(LK)) :: isSorted
1522 integer(IK) , intent(in) , optional :: lb, ub
1523 type(css_pdt(SKG)) :: selection
1524 end function
1525#endif
1526
1527#if SK3_ENABLED
1528 module function getSelectedCusCom_D1_PSSK3(array, rank, isSorted, lb, ub) result(selection)
1529#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1530 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_PSSK3
1531#endif
1532 use pm_kind, only: SKG => SK3
1533 use pm_container, only: css_pdt
1534 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1535 integer(IK) , intent(in) :: rank
1536 procedure(logical(LK)) :: isSorted
1537 integer(IK) , intent(in) , optional :: lb, ub
1538 type(css_pdt(SKG)) :: selection
1539 end function
1540#endif
1541
1542#if SK2_ENABLED
1543 module function getSelectedCusCom_D1_PSSK2(array, rank, isSorted, lb, ub) result(selection)
1544#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1545 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_PSSK2
1546#endif
1547 use pm_kind, only: SKG => SK2
1548 use pm_container, only: css_pdt
1549 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1550 integer(IK) , intent(in) :: rank
1551 procedure(logical(LK)) :: isSorted
1552 integer(IK) , intent(in) , optional :: lb, ub
1553 type(css_pdt(SKG)) :: selection
1554 end function
1555#endif
1556
1557#if SK1_ENABLED
1558 module function getSelectedCusCom_D1_PSSK1(array, rank, isSorted, lb, ub) result(selection)
1559#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1560 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_PSSK1
1561#endif
1562 use pm_kind, only: SKG => SK1
1563 use pm_container, only: css_pdt
1564 type(css_pdt(SKG)) , intent(in) , contiguous :: array(:)
1565 integer(IK) , intent(in) :: rank
1566 procedure(logical(LK)) :: isSorted
1567 integer(IK) , intent(in) , optional :: lb, ub
1568 type(css_pdt(SKG)) :: selection
1569 end function
1570#endif
1571
1572#endif
1573!PDT_ENABLED
1574
1575 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1576
1577 module function getSelectedCusCom_D1_BSSK(array, rank, isSorted, lb, ub) result(selection)
1578#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1579 !DEC$ ATTRIBUTES DLLEXPORT :: getSelectedCusCom_D1_BSSK
1580#endif
1581 use pm_kind, only: SKG => SK
1582 use pm_container, only: css_type
1583 type(css_type) , intent(in) , contiguous :: array(:)
1584 integer(IK) , intent(in) :: rank
1585 procedure(logical(LK)) :: isSorted
1586 integer(IK) , intent(in) , optional :: lb, ub
1587 type(css_type) :: selection
1588 end function
1589
1590 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1591
1592 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1593 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1594 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1595
1596 end interface
1597
1598!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1599
1722
1723 ! DefCom
1724
1725 interface setSelected
1726
1727 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1728 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1729 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1730
1731 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1732
1733#if SK5_ENABLED
1734 PURE module subroutine setSelectedDefCom_D0_SK5(selection, array, rank, lb, ub)
1735#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1736 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D0_SK5
1737#endif
1738 use pm_kind, only: SKG => SK5
1739 character(*,SKG) , intent(inout) :: array
1740 integer(IK) , intent(in) :: rank
1741 integer(IK) , intent(in) , optional :: lb, ub
1742 character(1,SKG) , intent(out) :: selection
1743 end subroutine
1744#endif
1745
1746#if SK4_ENABLED
1747 PURE module subroutine setSelectedDefCom_D0_SK4(selection, array, rank, lb, ub)
1748#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1749 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D0_SK4
1750#endif
1751 use pm_kind, only: SKG => SK4
1752 character(*,SKG) , intent(inout) :: array
1753 integer(IK) , intent(in) :: rank
1754 integer(IK) , intent(in) , optional :: lb, ub
1755 character(1,SKG) , intent(out) :: selection
1756 end subroutine
1757#endif
1758
1759#if SK3_ENABLED
1760 PURE module subroutine setSelectedDefCom_D0_SK3(selection, array, rank, lb, ub)
1761#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1762 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D0_SK3
1763#endif
1764 use pm_kind, only: SKG => SK3
1765 character(*,SKG) , intent(inout) :: array
1766 integer(IK) , intent(in) :: rank
1767 integer(IK) , intent(in) , optional :: lb, ub
1768 character(1,SKG) , intent(out) :: selection
1769 end subroutine
1770#endif
1771
1772#if SK2_ENABLED
1773 PURE module subroutine setSelectedDefCom_D0_SK2(selection, array, rank, lb, ub)
1774#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1775 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D0_SK2
1776#endif
1777 use pm_kind, only: SKG => SK2
1778 character(*,SKG) , intent(inout) :: array
1779 integer(IK) , intent(in) :: rank
1780 integer(IK) , intent(in) , optional :: lb, ub
1781 character(1,SKG) , intent(out) :: selection
1782 end subroutine
1783#endif
1784
1785#if SK1_ENABLED
1786 PURE module subroutine setSelectedDefCom_D0_SK1(selection, array, rank, lb, ub)
1787#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1788 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D0_SK1
1789#endif
1790 use pm_kind, only: SKG => SK1
1791 character(*,SKG) , intent(inout) :: array
1792 integer(IK) , intent(in) :: rank
1793 integer(IK) , intent(in) , optional :: lb, ub
1794 character(1,SKG) , intent(out) :: selection
1795 end subroutine
1796#endif
1797
1798 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1799
1800 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1801 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1802 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1803
1804 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1805
1806#if SK5_ENABLED
1807 PURE module subroutine setSelectedDefCom_D1_SK5(selection, array, rank, lb, ub)
1808#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1809 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_SK5
1810#endif
1811 use pm_kind, only: SKG => SK5
1812 character(*,SKG) , intent(inout) , contiguous :: array(:)
1813 integer(IK) , intent(in) :: rank
1814 integer(IK) , intent(in) , optional :: lb, ub
1815 character(len(array,IK),SKG), intent(out) :: selection
1816 end subroutine
1817#endif
1818
1819#if SK4_ENABLED
1820 PURE module subroutine setSelectedDefCom_D1_SK4(selection, array, rank, lb, ub)
1821#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1822 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_SK4
1823#endif
1824 use pm_kind, only: SKG => SK4
1825 character(*,SKG) , intent(inout) , contiguous :: array(:)
1826 integer(IK) , intent(in) :: rank
1827 integer(IK) , intent(in) , optional :: lb, ub
1828 character(len(array,IK),SKG), intent(out) :: selection
1829 end subroutine
1830#endif
1831
1832#if SK3_ENABLED
1833 PURE module subroutine setSelectedDefCom_D1_SK3(selection, array, rank, lb, ub)
1834#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1835 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_SK3
1836#endif
1837 use pm_kind, only: SKG => SK3
1838 character(*,SKG) , intent(inout) , contiguous :: array(:)
1839 integer(IK) , intent(in) :: rank
1840 integer(IK) , intent(in) , optional :: lb, ub
1841 character(len(array,IK),SKG), intent(out) :: selection
1842 end subroutine
1843#endif
1844
1845#if SK2_ENABLED
1846 PURE module subroutine setSelectedDefCom_D1_SK2(selection, array, rank, lb, ub)
1847#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1848 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_SK2
1849#endif
1850 use pm_kind, only: SKG => SK2
1851 character(*,SKG) , intent(inout) , contiguous :: array(:)
1852 integer(IK) , intent(in) :: rank
1853 integer(IK) , intent(in) , optional :: lb, ub
1854 character(len(array,IK),SKG), intent(out) :: selection
1855 end subroutine
1856#endif
1857
1858#if SK1_ENABLED
1859 PURE module subroutine setSelectedDefCom_D1_SK1(selection, array, rank, lb, ub)
1860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1861 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_SK1
1862#endif
1863 use pm_kind, only: SKG => SK1
1864 character(*,SKG) , intent(inout) , contiguous :: array(:)
1865 integer(IK) , intent(in) :: rank
1866 integer(IK) , intent(in) , optional :: lb, ub
1867 character(len(array,IK),SKG), intent(out) :: selection
1868 end subroutine
1869#endif
1870
1871 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1872
1873#if IK5_ENABLED
1874 PURE module subroutine setSelectedDefCom_D1_IK5(selection, array, rank, lb, ub)
1875#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1876 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_IK5
1877#endif
1878 use pm_kind, only: IKG => IK5
1879 integer(IKG) , intent(inout) , contiguous :: array(:)
1880 integer(IK) , intent(in) :: rank
1881 integer(IK) , intent(in) , optional :: lb, ub
1882 integer(IKG) , intent(out) :: selection
1883 end subroutine
1884#endif
1885
1886#if IK4_ENABLED
1887 PURE module subroutine setSelectedDefCom_D1_IK4(selection, array, rank, lb, ub)
1888#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1889 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_IK4
1890#endif
1891 use pm_kind, only: IKG => IK4
1892 integer(IKG) , intent(inout) , contiguous :: array(:)
1893 integer(IK) , intent(in) :: rank
1894 integer(IK) , intent(in) , optional :: lb, ub
1895 integer(IKG) , intent(out) :: selection
1896 end subroutine
1897#endif
1898
1899#if IK3_ENABLED
1900 PURE module subroutine setSelectedDefCom_D1_IK3(selection, array, rank, lb, ub)
1901#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1902 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_IK3
1903#endif
1904 use pm_kind, only: IKG => IK3
1905 integer(IKG) , intent(inout) , contiguous :: array(:)
1906 integer(IK) , intent(in) :: rank
1907 integer(IK) , intent(in) , optional :: lb, ub
1908 integer(IKG) , intent(out) :: selection
1909 end subroutine
1910#endif
1911
1912#if IK2_ENABLED
1913 PURE module subroutine setSelectedDefCom_D1_IK2(selection, array, rank, lb, ub)
1914#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1915 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_IK2
1916#endif
1917 use pm_kind, only: IKG => IK2
1918 integer(IKG) , intent(inout) , contiguous :: array(:)
1919 integer(IK) , intent(in) :: rank
1920 integer(IK) , intent(in) , optional :: lb, ub
1921 integer(IKG) , intent(out) :: selection
1922 end subroutine
1923#endif
1924
1925#if IK1_ENABLED
1926 PURE module subroutine setSelectedDefCom_D1_IK1(selection, array, rank, lb, ub)
1927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1928 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_IK1
1929#endif
1930 use pm_kind, only: IKG => IK1
1931 integer(IKG) , intent(inout) , contiguous :: array(:)
1932 integer(IK) , intent(in) :: rank
1933 integer(IK) , intent(in) , optional :: lb, ub
1934 integer(IKG) , intent(out) :: selection
1935 end subroutine
1936#endif
1937
1938 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1939
1940#if LK5_ENABLED
1941 PURE module subroutine setSelectedDefCom_D1_LK5(selection, array, rank, lb, ub)
1942#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1943 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_LK5
1944#endif
1945 use pm_kind, only: LKG => LK5
1946 logical(LKG) , intent(inout) , contiguous :: array(:)
1947 integer(IK) , intent(in) :: rank
1948 integer(IK) , intent(in) , optional :: lb, ub
1949 logical(LKG) , intent(out) :: selection
1950 end subroutine
1951#endif
1952
1953#if LK4_ENABLED
1954 PURE module subroutine setSelectedDefCom_D1_LK4(selection, array, rank, lb, ub)
1955#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1956 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_LK4
1957#endif
1958 use pm_kind, only: LKG => LK4
1959 logical(LKG) , intent(inout) , contiguous :: array(:)
1960 integer(IK) , intent(in) :: rank
1961 integer(IK) , intent(in) , optional :: lb, ub
1962 logical(LKG) , intent(out) :: selection
1963 end subroutine
1964#endif
1965
1966#if LK3_ENABLED
1967 PURE module subroutine setSelectedDefCom_D1_LK3(selection, array, rank, lb, ub)
1968#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1969 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_LK3
1970#endif
1971 use pm_kind, only: LKG => LK3
1972 logical(LKG) , intent(inout) , contiguous :: array(:)
1973 integer(IK) , intent(in) :: rank
1974 integer(IK) , intent(in) , optional :: lb, ub
1975 logical(LKG) , intent(out) :: selection
1976 end subroutine
1977#endif
1978
1979#if LK2_ENABLED
1980 PURE module subroutine setSelectedDefCom_D1_LK2(selection, array, rank, lb, ub)
1981#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1982 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_LK2
1983#endif
1984 use pm_kind, only: LKG => LK2
1985 logical(LKG) , intent(inout) , contiguous :: array(:)
1986 integer(IK) , intent(in) :: rank
1987 integer(IK) , intent(in) , optional :: lb, ub
1988 logical(LKG) , intent(out) :: selection
1989 end subroutine
1990#endif
1991
1992#if LK1_ENABLED
1993 PURE module subroutine setSelectedDefCom_D1_LK1(selection, array, rank, lb, ub)
1994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1995 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_LK1
1996#endif
1997 use pm_kind, only: LKG => LK1
1998 logical(LKG) , intent(inout) , contiguous :: array(:)
1999 integer(IK) , intent(in) :: rank
2000 integer(IK) , intent(in) , optional :: lb, ub
2001 logical(LKG) , intent(out) :: selection
2002 end subroutine
2003#endif
2004
2005 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2006
2007#if CK5_ENABLED
2008 PURE module subroutine setSelectedDefCom_D1_CK5(selection, array, rank, lb, ub)
2009#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2010 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_CK5
2011#endif
2012 use pm_kind, only: CKG => CK5
2013 complex(CKG) , intent(inout) , contiguous :: array(:)
2014 integer(IK) , intent(in) :: rank
2015 integer(IK) , intent(in) , optional :: lb, ub
2016 complex(CKG) , intent(out) :: selection
2017 end subroutine
2018#endif
2019
2020#if CK4_ENABLED
2021 PURE module subroutine setSelectedDefCom_D1_CK4(selection, array, rank, lb, ub)
2022#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2023 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_CK4
2024#endif
2025 use pm_kind, only: CKG => CK4
2026 complex(CKG) , intent(inout) , contiguous :: array(:)
2027 integer(IK) , intent(in) :: rank
2028 integer(IK) , intent(in) , optional :: lb, ub
2029 complex(CKG) , intent(out) :: selection
2030 end subroutine
2031#endif
2032
2033#if CK3_ENABLED
2034 PURE module subroutine setSelectedDefCom_D1_CK3(selection, array, rank, lb, ub)
2035#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2036 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_CK3
2037#endif
2038 use pm_kind, only: CKG => CK3
2039 complex(CKG) , intent(inout) , contiguous :: array(:)
2040 integer(IK) , intent(in) :: rank
2041 integer(IK) , intent(in) , optional :: lb, ub
2042 complex(CKG) , intent(out) :: selection
2043 end subroutine
2044#endif
2045
2046#if CK2_ENABLED
2047 PURE module subroutine setSelectedDefCom_D1_CK2(selection, array, rank, lb, ub)
2048#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2049 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_CK2
2050#endif
2051 use pm_kind, only: CKG => CK2
2052 complex(CKG) , intent(inout) , contiguous :: array(:)
2053 integer(IK) , intent(in) :: rank
2054 integer(IK) , intent(in) , optional :: lb, ub
2055 complex(CKG) , intent(out) :: selection
2056 end subroutine
2057#endif
2058
2059#if CK1_ENABLED
2060 PURE module subroutine setSelectedDefCom_D1_CK1(selection, array, rank, lb, ub)
2061#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2062 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_CK1
2063#endif
2064 use pm_kind, only: CKG => CK1
2065 complex(CKG) , intent(inout) , contiguous :: array(:)
2066 integer(IK) , intent(in) :: rank
2067 integer(IK) , intent(in) , optional :: lb, ub
2068 complex(CKG) , intent(out) :: selection
2069 end subroutine
2070#endif
2071
2072 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2073
2074#if RK5_ENABLED
2075 PURE module subroutine setSelectedDefCom_D1_RK5(selection, array, rank, lb, ub)
2076#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2077 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_RK5
2078#endif
2079 use pm_kind, only: RKG => RK5
2080 real(RKG) , intent(inout) , contiguous :: array(:)
2081 integer(IK) , intent(in) :: rank
2082 integer(IK) , intent(in) , optional :: lb, ub
2083 real(RKG) , intent(out) :: selection
2084 end subroutine
2085#endif
2086
2087#if RK4_ENABLED
2088 PURE module subroutine setSelectedDefCom_D1_RK4(selection, array, rank, lb, ub)
2089#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2090 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_RK4
2091#endif
2092 use pm_kind, only: RKG => RK4
2093 real(RKG) , intent(inout) , contiguous :: array(:)
2094 integer(IK) , intent(in) :: rank
2095 integer(IK) , intent(in) , optional :: lb, ub
2096 real(RKG) , intent(out) :: selection
2097 end subroutine
2098#endif
2099
2100#if RK3_ENABLED
2101 PURE module subroutine setSelectedDefCom_D1_RK3(selection, array, rank, lb, ub)
2102#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2103 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_RK3
2104#endif
2105 use pm_kind, only: RKG => RK3
2106 real(RKG) , intent(inout) , contiguous :: array(:)
2107 integer(IK) , intent(in) :: rank
2108 integer(IK) , intent(in) , optional :: lb, ub
2109 real(RKG) , intent(out) :: selection
2110 end subroutine
2111#endif
2112
2113#if RK2_ENABLED
2114 PURE module subroutine setSelectedDefCom_D1_RK2(selection, array, rank, lb, ub)
2115#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2116 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_RK2
2117#endif
2118 use pm_kind, only: RKG => RK2
2119 real(RKG) , intent(inout) , contiguous :: array(:)
2120 integer(IK) , intent(in) :: rank
2121 integer(IK) , intent(in) , optional :: lb, ub
2122 real(RKG) , intent(out) :: selection
2123 end subroutine
2124#endif
2125
2126#if RK1_ENABLED
2127 PURE module subroutine setSelectedDefCom_D1_RK1(selection, array, rank, lb, ub)
2128#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2129 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_RK1
2130#endif
2131 use pm_kind, only: RKG => RK1
2132 real(RKG) , intent(inout) , contiguous :: array(:)
2133 integer(IK) , intent(in) :: rank
2134 integer(IK) , intent(in) , optional :: lb, ub
2135 real(RKG) , intent(out) :: selection
2136 end subroutine
2137#endif
2138
2139 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2140
2141#if PDT_ENABLED
2142
2143#if SK5_ENABLED
2144 module subroutine setSelectedDefCom_D1_PSSK5(selection, array, rank, lb, ub)
2145#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2146 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_PSSK5
2147#endif
2148 use pm_kind, only: SKG => SK5
2149 use pm_container, only: css_pdt
2150 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2151 integer(IK) , intent(in) :: rank
2152 integer(IK) , intent(in) , optional :: lb, ub
2153 type(css_pdt(SKG)) , intent(out) :: selection
2154 end subroutine
2155#endif
2156
2157#if SK4_ENABLED
2158 module subroutine setSelectedDefCom_D1_PSSK4(selection, array, rank, lb, ub)
2159#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2160 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_PSSK4
2161#endif
2162 use pm_kind, only: SKG => SK4
2163 use pm_container, only: css_pdt
2164 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2165 integer(IK) , intent(in) :: rank
2166 integer(IK) , intent(in) , optional :: lb, ub
2167 type(css_pdt(SKG)) , intent(out) :: selection
2168 end subroutine
2169#endif
2170
2171#if SK3_ENABLED
2172 module subroutine setSelectedDefCom_D1_PSSK3(selection, array, rank, lb, ub)
2173#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2174 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_PSSK3
2175#endif
2176 use pm_kind, only: SKG => SK3
2177 use pm_container, only: css_pdt
2178 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2179 integer(IK) , intent(in) :: rank
2180 integer(IK) , intent(in) , optional :: lb, ub
2181 type(css_pdt(SKG)) , intent(out) :: selection
2182 end subroutine
2183#endif
2184
2185#if SK2_ENABLED
2186 module subroutine setSelectedDefCom_D1_PSSK2(selection, array, rank, lb, ub)
2187#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2188 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_PSSK2
2189#endif
2190 use pm_kind, only: SKG => SK2
2191 use pm_container, only: css_pdt
2192 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2193 integer(IK) , intent(in) :: rank
2194 integer(IK) , intent(in) , optional :: lb, ub
2195 type(css_pdt(SKG)) , intent(out) :: selection
2196 end subroutine
2197#endif
2198
2199#if SK1_ENABLED
2200 module subroutine setSelectedDefCom_D1_PSSK1(selection, array, rank, lb, ub)
2201#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2202 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_PSSK1
2203#endif
2204 use pm_kind, only: SKG => SK1
2205 use pm_container, only: css_pdt
2206 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2207 integer(IK) , intent(in) :: rank
2208 integer(IK) , intent(in) , optional :: lb, ub
2209 type(css_pdt(SKG)) , intent(out) :: selection
2210 end subroutine
2211#endif
2212
2213#endif
2214!PDT_ENABLED
2215
2216 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2217
2218 module subroutine setSelectedDefCom_D1_BSSK(selection, array, rank, lb, ub)
2219#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2220 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedDefCom_D1_BSSK
2221#endif
2222 use pm_kind, only: SKG => SK
2223 use pm_container, only: css_type
2224 type(css_type) , intent(inout) , contiguous :: array(:)
2225 integer(IK) , intent(in) :: rank
2226 integer(IK) , intent(in) , optional :: lb, ub
2227 type(css_type) , intent(out) :: selection
2228 end subroutine
2229
2230 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2231
2232 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2233 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2234 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2235
2236 end interface
2237
2238 ! CusCom
2239
2240 interface setSelected
2241
2242 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2243
2244#if SK5_ENABLED
2245 module subroutine setSelectedCusCom_D0_SK5(selection, array, rank, isSorted, lb, ub)
2246#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2247 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D0_SK5
2248#endif
2249 use pm_kind, only: SKG => SK5
2250 character(*,SKG) , intent(inout) :: array
2251 integer(IK) , intent(in) :: rank
2252 procedure(logical(LK)) :: isSorted
2253 integer(IK) , intent(in) , optional :: lb, ub
2254 character(1,SKG) , intent(out) :: selection
2255 end subroutine
2256#endif
2257
2258#if SK4_ENABLED
2259 module subroutine setSelectedCusCom_D0_SK4(selection, array, rank, isSorted, lb, ub)
2260#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2261 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D0_SK4
2262#endif
2263 use pm_kind, only: SKG => SK4
2264 character(*,SKG) , intent(inout) :: array
2265 integer(IK) , intent(in) :: rank
2266 procedure(logical(LK)) :: isSorted
2267 integer(IK) , intent(in) , optional :: lb, ub
2268 character(1,SKG) , intent(out) :: selection
2269 end subroutine
2270#endif
2271
2272#if SK3_ENABLED
2273 module subroutine setSelectedCusCom_D0_SK3(selection, array, rank, isSorted, lb, ub)
2274#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2275 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D0_SK3
2276#endif
2277 use pm_kind, only: SKG => SK3
2278 character(*,SKG) , intent(inout) :: array
2279 integer(IK) , intent(in) :: rank
2280 procedure(logical(LK)) :: isSorted
2281 integer(IK) , intent(in) , optional :: lb, ub
2282 character(1,SKG) , intent(out) :: selection
2283 end subroutine
2284#endif
2285
2286#if SK2_ENABLED
2287 module subroutine setSelectedCusCom_D0_SK2(selection, array, rank, isSorted, lb, ub)
2288#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2289 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D0_SK2
2290#endif
2291 use pm_kind, only: SKG => SK2
2292 character(*,SKG) , intent(inout) :: array
2293 integer(IK) , intent(in) :: rank
2294 procedure(logical(LK)) :: isSorted
2295 integer(IK) , intent(in) , optional :: lb, ub
2296 character(1,SKG) , intent(out) :: selection
2297 end subroutine
2298#endif
2299
2300#if SK1_ENABLED
2301 module subroutine setSelectedCusCom_D0_SK1(selection, array, rank, isSorted, lb, ub)
2302#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2303 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D0_SK1
2304#endif
2305 use pm_kind, only: SKG => SK1
2306 character(*,SKG) , intent(inout) :: array
2307 integer(IK) , intent(in) :: rank
2308 procedure(logical(LK)) :: isSorted
2309 integer(IK) , intent(in) , optional :: lb, ub
2310 character(1,SKG) , intent(out) :: selection
2311 end subroutine
2312#endif
2313
2314 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2315
2316#if SK5_ENABLED
2317 module subroutine setSelectedCusCom_D1_SK5(selection, array, rank, isSorted, lb, ub)
2318#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2319 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_SK5
2320#endif
2321 use pm_kind, only: SKG => SK5
2322 character(*,SKG) , intent(inout) , contiguous :: array(:)
2323 integer(IK) , intent(in) :: rank
2324 procedure(logical(LK)) :: isSorted
2325 integer(IK) , intent(in) , optional :: lb, ub
2326 character(len(array,IK),SKG), intent(out) :: selection
2327 end subroutine
2328#endif
2329
2330#if SK4_ENABLED
2331 module subroutine setSelectedCusCom_D1_SK4(selection, array, rank, isSorted, lb, ub)
2332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2333 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_SK4
2334#endif
2335 use pm_kind, only: SKG => SK4
2336 character(*,SKG) , intent(inout) , contiguous :: array(:)
2337 integer(IK) , intent(in) :: rank
2338 procedure(logical(LK)) :: isSorted
2339 integer(IK) , intent(in) , optional :: lb, ub
2340 character(len(array,IK),SKG), intent(out) :: selection
2341 end subroutine
2342#endif
2343
2344#if SK3_ENABLED
2345 module subroutine setSelectedCusCom_D1_SK3(selection, array, rank, isSorted, lb, ub)
2346#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2347 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_SK3
2348#endif
2349 use pm_kind, only: SKG => SK3
2350 character(*,SKG) , intent(inout) , contiguous :: array(:)
2351 integer(IK) , intent(in) :: rank
2352 procedure(logical(LK)) :: isSorted
2353 integer(IK) , intent(in) , optional :: lb, ub
2354 character(len(array,IK),SKG), intent(out) :: selection
2355 end subroutine
2356#endif
2357
2358#if SK2_ENABLED
2359 module subroutine setSelectedCusCom_D1_SK2(selection, array, rank, isSorted, lb, ub)
2360#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2361 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_SK2
2362#endif
2363 use pm_kind, only: SKG => SK2
2364 character(*,SKG) , intent(inout) , contiguous :: array(:)
2365 integer(IK) , intent(in) :: rank
2366 procedure(logical(LK)) :: isSorted
2367 integer(IK) , intent(in) , optional :: lb, ub
2368 character(len(array,IK),SKG), intent(out) :: selection
2369 end subroutine
2370#endif
2371
2372#if SK1_ENABLED
2373 module subroutine setSelectedCusCom_D1_SK1(selection, array, rank, isSorted, lb, ub)
2374#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2375 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_SK1
2376#endif
2377 use pm_kind, only: SKG => SK1
2378 character(*,SKG) , intent(inout) , contiguous :: array(:)
2379 integer(IK) , intent(in) :: rank
2380 procedure(logical(LK)) :: isSorted
2381 integer(IK) , intent(in) , optional :: lb, ub
2382 character(len(array,IK),SKG), intent(out) :: selection
2383 end subroutine
2384#endif
2385
2386 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2387
2388#if IK5_ENABLED
2389 module subroutine setSelectedCusCom_D1_IK5(selection, array, rank, isSorted, lb, ub)
2390#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2391 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_IK5
2392#endif
2393 use pm_kind, only: IKG => IK5
2394 integer(IKG) , intent(inout) , contiguous :: array(:)
2395 integer(IK) , intent(in) :: rank
2396 procedure(logical(LK)) :: isSorted
2397 integer(IK) , intent(in) , optional :: lb, ub
2398 integer(IKG) , intent(out) :: selection
2399 end subroutine
2400#endif
2401
2402#if IK4_ENABLED
2403 module subroutine setSelectedCusCom_D1_IK4(selection, array, rank, isSorted, lb, ub)
2404#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2405 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_IK4
2406#endif
2407 use pm_kind, only: IKG => IK4
2408 integer(IKG) , intent(inout) , contiguous :: array(:)
2409 integer(IK) , intent(in) :: rank
2410 procedure(logical(LK)) :: isSorted
2411 integer(IK) , intent(in) , optional :: lb, ub
2412 integer(IKG) , intent(out) :: selection
2413 end subroutine
2414#endif
2415
2416#if IK3_ENABLED
2417 module subroutine setSelectedCusCom_D1_IK3(selection, array, rank, isSorted, lb, ub)
2418#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2419 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_IK3
2420#endif
2421 use pm_kind, only: IKG => IK3
2422 integer(IKG) , intent(inout) , contiguous :: array(:)
2423 integer(IK) , intent(in) :: rank
2424 procedure(logical(LK)) :: isSorted
2425 integer(IK) , intent(in) , optional :: lb, ub
2426 integer(IKG) , intent(out) :: selection
2427 end subroutine
2428#endif
2429
2430#if IK2_ENABLED
2431 module subroutine setSelectedCusCom_D1_IK2(selection, array, rank, isSorted, lb, ub)
2432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2433 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_IK2
2434#endif
2435 use pm_kind, only: IKG => IK2
2436 integer(IKG) , intent(inout) , contiguous :: array(:)
2437 integer(IK) , intent(in) :: rank
2438 procedure(logical(LK)) :: isSorted
2439 integer(IK) , intent(in) , optional :: lb, ub
2440 integer(IKG) , intent(out) :: selection
2441 end subroutine
2442#endif
2443
2444#if IK1_ENABLED
2445 module subroutine setSelectedCusCom_D1_IK1(selection, array, rank, isSorted, lb, ub)
2446#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2447 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_IK1
2448#endif
2449 use pm_kind, only: IKG => IK1
2450 integer(IKG) , intent(inout) , contiguous :: array(:)
2451 integer(IK) , intent(in) :: rank
2452 procedure(logical(LK)) :: isSorted
2453 integer(IK) , intent(in) , optional :: lb, ub
2454 integer(IKG) , intent(out) :: selection
2455 end subroutine
2456#endif
2457
2458 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2459
2460#if LK5_ENABLED
2461 module subroutine setSelectedCusCom_D1_LK5(selection, array, rank, isSorted, lb, ub)
2462#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2463 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_LK5
2464#endif
2465 use pm_kind, only: LKG => LK5
2466 logical(LKG) , intent(inout) , contiguous :: array(:)
2467 integer(IK) , intent(in) :: rank
2468 procedure(logical(LK)) :: isSorted
2469 integer(IK) , intent(in) , optional :: lb, ub
2470 logical(LKG) , intent(out) :: selection
2471 end subroutine
2472#endif
2473
2474#if LK4_ENABLED
2475 module subroutine setSelectedCusCom_D1_LK4(selection, array, rank, isSorted, lb, ub)
2476#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2477 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_LK4
2478#endif
2479 use pm_kind, only: LKG => LK4
2480 logical(LKG) , intent(inout) , contiguous :: array(:)
2481 integer(IK) , intent(in) :: rank
2482 procedure(logical(LK)) :: isSorted
2483 integer(IK) , intent(in) , optional :: lb, ub
2484 logical(LKG) , intent(out) :: selection
2485 end subroutine
2486#endif
2487
2488#if LK3_ENABLED
2489 module subroutine setSelectedCusCom_D1_LK3(selection, array, rank, isSorted, lb, ub)
2490#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2491 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_LK3
2492#endif
2493 use pm_kind, only: LKG => LK3
2494 logical(LKG) , intent(inout) , contiguous :: array(:)
2495 integer(IK) , intent(in) :: rank
2496 procedure(logical(LK)) :: isSorted
2497 integer(IK) , intent(in) , optional :: lb, ub
2498 logical(LKG) , intent(out) :: selection
2499 end subroutine
2500#endif
2501
2502#if LK2_ENABLED
2503 module subroutine setSelectedCusCom_D1_LK2(selection, array, rank, isSorted, lb, ub)
2504#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2505 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_LK2
2506#endif
2507 use pm_kind, only: LKG => LK2
2508 logical(LKG) , intent(inout) , contiguous :: array(:)
2509 integer(IK) , intent(in) :: rank
2510 procedure(logical(LK)) :: isSorted
2511 integer(IK) , intent(in) , optional :: lb, ub
2512 logical(LKG) , intent(out) :: selection
2513 end subroutine
2514#endif
2515
2516#if LK1_ENABLED
2517 module subroutine setSelectedCusCom_D1_LK1(selection, array, rank, isSorted, lb, ub)
2518#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2519 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_LK1
2520#endif
2521 use pm_kind, only: LKG => LK1
2522 logical(LKG) , intent(inout) , contiguous :: array(:)
2523 integer(IK) , intent(in) :: rank
2524 procedure(logical(LK)) :: isSorted
2525 integer(IK) , intent(in) , optional :: lb, ub
2526 logical(LKG) , intent(out) :: selection
2527 end subroutine
2528#endif
2529
2530 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2531
2532#if CK5_ENABLED
2533 module subroutine setSelectedCusCom_D1_CK5(selection, array, rank, isSorted, lb, ub)
2534#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2535 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_CK5
2536#endif
2537 use pm_kind, only: CKG => CK5
2538 complex(CKG) , intent(inout) , contiguous :: array(:)
2539 integer(IK) , intent(in) :: rank
2540 procedure(logical(LK)) :: isSorted
2541 integer(IK) , intent(in) , optional :: lb, ub
2542 complex(CKG) , intent(out) :: selection
2543 end subroutine
2544#endif
2545
2546#if CK4_ENABLED
2547 module subroutine setSelectedCusCom_D1_CK4(selection, array, rank, isSorted, lb, ub)
2548#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2549 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_CK4
2550#endif
2551 use pm_kind, only: CKG => CK4
2552 complex(CKG) , intent(inout) , contiguous :: array(:)
2553 integer(IK) , intent(in) :: rank
2554 procedure(logical(LK)) :: isSorted
2555 integer(IK) , intent(in) , optional :: lb, ub
2556 complex(CKG) , intent(out) :: selection
2557 end subroutine
2558#endif
2559
2560#if CK3_ENABLED
2561 module subroutine setSelectedCusCom_D1_CK3(selection, array, rank, isSorted, lb, ub)
2562#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2563 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_CK3
2564#endif
2565 use pm_kind, only: CKG => CK3
2566 complex(CKG) , intent(inout) , contiguous :: array(:)
2567 integer(IK) , intent(in) :: rank
2568 procedure(logical(LK)) :: isSorted
2569 integer(IK) , intent(in) , optional :: lb, ub
2570 complex(CKG) , intent(out) :: selection
2571 end subroutine
2572#endif
2573
2574#if CK2_ENABLED
2575 module subroutine setSelectedCusCom_D1_CK2(selection, array, rank, isSorted, lb, ub)
2576#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2577 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_CK2
2578#endif
2579 use pm_kind, only: CKG => CK2
2580 complex(CKG) , intent(inout) , contiguous :: array(:)
2581 integer(IK) , intent(in) :: rank
2582 procedure(logical(LK)) :: isSorted
2583 integer(IK) , intent(in) , optional :: lb, ub
2584 complex(CKG) , intent(out) :: selection
2585 end subroutine
2586#endif
2587
2588#if CK1_ENABLED
2589 module subroutine setSelectedCusCom_D1_CK1(selection, array, rank, isSorted, lb, ub)
2590#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2591 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_CK1
2592#endif
2593 use pm_kind, only: CKG => CK1
2594 complex(CKG) , intent(inout) , contiguous :: array(:)
2595 integer(IK) , intent(in) :: rank
2596 procedure(logical(LK)) :: isSorted
2597 integer(IK) , intent(in) , optional :: lb, ub
2598 complex(CKG) , intent(out) :: selection
2599 end subroutine
2600#endif
2601
2602 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2603
2604#if RK5_ENABLED
2605 module subroutine setSelectedCusCom_D1_RK5(selection, array, rank, isSorted, lb, ub)
2606#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2607 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_RK5
2608#endif
2609 use pm_kind, only: RKG => RK5
2610 real(RKG) , intent(inout) , contiguous :: array(:)
2611 integer(IK) , intent(in) :: rank
2612 procedure(logical(LK)) :: isSorted
2613 integer(IK) , intent(in) , optional :: lb, ub
2614 real(RKG) , intent(out) :: selection
2615 end subroutine
2616#endif
2617
2618#if RK4_ENABLED
2619 module subroutine setSelectedCusCom_D1_RK4(selection, array, rank, isSorted, lb, ub)
2620#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2621 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_RK4
2622#endif
2623 use pm_kind, only: RKG => RK4
2624 real(RKG) , intent(inout) , contiguous :: array(:)
2625 integer(IK) , intent(in) :: rank
2626 procedure(logical(LK)) :: isSorted
2627 integer(IK) , intent(in) , optional :: lb, ub
2628 real(RKG) , intent(out) :: selection
2629 end subroutine
2630#endif
2631
2632#if RK3_ENABLED
2633 module subroutine setSelectedCusCom_D1_RK3(selection, array, rank, isSorted, lb, ub)
2634#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2635 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_RK3
2636#endif
2637 use pm_kind, only: RKG => RK3
2638 real(RKG) , intent(inout) , contiguous :: array(:)
2639 integer(IK) , intent(in) :: rank
2640 procedure(logical(LK)) :: isSorted
2641 integer(IK) , intent(in) , optional :: lb, ub
2642 real(RKG) , intent(out) :: selection
2643 end subroutine
2644#endif
2645
2646#if RK2_ENABLED
2647 module subroutine setSelectedCusCom_D1_RK2(selection, array, rank, isSorted, lb, ub)
2648#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2649 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_RK2
2650#endif
2651 use pm_kind, only: RKG => RK2
2652 real(RKG) , intent(inout) , contiguous :: array(:)
2653 integer(IK) , intent(in) :: rank
2654 procedure(logical(LK)) :: isSorted
2655 integer(IK) , intent(in) , optional :: lb, ub
2656 real(RKG) , intent(out) :: selection
2657 end subroutine
2658#endif
2659
2660#if RK1_ENABLED
2661 module subroutine setSelectedCusCom_D1_RK1(selection, array, rank, isSorted, lb, ub)
2662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2663 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_RK1
2664#endif
2665 use pm_kind, only: RKG => RK1
2666 real(RKG) , intent(inout) , contiguous :: array(:)
2667 integer(IK) , intent(in) :: rank
2668 procedure(logical(LK)) :: isSorted
2669 integer(IK) , intent(in) , optional :: lb, ub
2670 real(RKG) , intent(out) :: selection
2671 end subroutine
2672#endif
2673
2674 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2675
2676#if PDT_ENABLED
2677
2678#if SK5_ENABLED
2679 module subroutine setSelectedCusCom_D1_PSSK5(selection, array, rank, isSorted, lb, ub)
2680#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2681 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_PSSK5
2682#endif
2683 use pm_kind, only: SKG => SK5
2684 use pm_container, only: css_pdt
2685 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2686 integer(IK) , intent(in) :: rank
2687 procedure(logical(LK)) :: isSorted
2688 integer(IK) , intent(in) , optional :: lb, ub
2689 type(css_pdt(SKG)) , intent(out) :: selection
2690 end subroutine
2691#endif
2692
2693#if SK4_ENABLED
2694 module subroutine setSelectedCusCom_D1_PSSK4(selection, array, rank, isSorted, lb, ub)
2695#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2696 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_PSSK4
2697#endif
2698 use pm_kind, only: SKG => SK4
2699 use pm_container, only: css_pdt
2700 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2701 integer(IK) , intent(in) :: rank
2702 procedure(logical(LK)) :: isSorted
2703 integer(IK) , intent(in) , optional :: lb, ub
2704 type(css_pdt(SKG)) , intent(out) :: selection
2705 end subroutine
2706#endif
2707
2708#if SK3_ENABLED
2709 module subroutine setSelectedCusCom_D1_PSSK3(selection, array, rank, isSorted, lb, ub)
2710#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2711 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_PSSK3
2712#endif
2713 use pm_kind, only: SKG => SK3
2714 use pm_container, only: css_pdt
2715 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2716 integer(IK) , intent(in) :: rank
2717 procedure(logical(LK)) :: isSorted
2718 integer(IK) , intent(in) , optional :: lb, ub
2719 type(css_pdt(SKG)) , intent(out) :: selection
2720 end subroutine
2721#endif
2722
2723#if SK2_ENABLED
2724 module subroutine setSelectedCusCom_D1_PSSK2(selection, array, rank, isSorted, lb, ub)
2725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2726 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_PSSK2
2727#endif
2728 use pm_kind, only: SKG => SK2
2729 use pm_container, only: css_pdt
2730 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2731 integer(IK) , intent(in) :: rank
2732 procedure(logical(LK)) :: isSorted
2733 integer(IK) , intent(in) , optional :: lb, ub
2734 type(css_pdt(SKG)) , intent(out) :: selection
2735 end subroutine
2736#endif
2737
2738#if SK1_ENABLED
2739 module subroutine setSelectedCusCom_D1_PSSK1(selection, array, rank, isSorted, lb, ub)
2740#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2741 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_PSSK1
2742#endif
2743 use pm_kind, only: SKG => SK1
2744 use pm_container, only: css_pdt
2745 type(css_pdt(SKG)) , intent(inout) , contiguous :: array(:)
2746 integer(IK) , intent(in) :: rank
2747 procedure(logical(LK)) :: isSorted
2748 integer(IK) , intent(in) , optional :: lb, ub
2749 type(css_pdt(SKG)) , intent(out) :: selection
2750 end subroutine
2751#endif
2752
2753#endif
2754!PDT_ENABLED
2755
2756 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2757
2758 module subroutine setSelectedCusCom_D1_BSSK(selection, array, rank, isSorted, lb, ub)
2759#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2760 !DEC$ ATTRIBUTES DLLEXPORT :: setSelectedCusCom_D1_BSSK
2761#endif
2762 use pm_kind, only: SKG => SK
2763 use pm_container, only: css_type
2764 type(css_type) , intent(inout) , contiguous :: array(:)
2765 integer(IK) , intent(in) :: rank
2766 procedure(logical(LK)) :: isSorted
2767 integer(IK) , intent(in) , optional :: lb, ub
2768 type(css_type) , intent(out) :: selection
2769 end subroutine
2770
2771 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2772
2773 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2774 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2775 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2776
2777 end interface
2778
2779!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2780
2781end module pm_arraySelect ! LCOV_EXCL_LINE
Generate and return the rankth smallest value in the input array by first sorting its elements in asc...
Return the rankth smallest (or ordered) value in the input array by first sorting its elements in asc...
This module contains procedures and generic interfaces for selecting the th smallest element in unsor...
character(*, SK), parameter MODULE_NAME
This module contains the derived types for generating allocatable containers of scalar,...
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter SK5
Definition: pm_kind.F90:326
integer, parameter LK1
Definition: pm_kind.F90:412
integer, parameter IK3
Definition: pm_kind.F90:368
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter SK1
Definition: pm_kind.F90:346
integer, parameter IK1
Definition: pm_kind.F90:382
integer, parameter LK5
Definition: pm_kind.F90:392
integer, parameter RK2
Definition: pm_kind.F90:511
integer, parameter CK1
Definition: pm_kind.F90:464
integer, parameter RK3
Definition: pm_kind.F90:500
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter LK2
Definition: pm_kind.F90:407
integer, parameter LK4
Definition: pm_kind.F90:397
integer, parameter CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter SK4
Definition: pm_kind.F90:331
integer, parameter LK3
Definition: pm_kind.F90:402
integer, parameter IK2
Definition: pm_kind.F90:375
integer, parameter CK2
Definition: pm_kind.F90:453
integer, parameter SK2
Definition: pm_kind.F90:341
integer, parameter CK3
Definition: pm_kind.F90:442
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter IK4
Definition: pm_kind.F90:361
integer, parameter IK5
Definition: pm_kind.F90:354
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RK1
Definition: pm_kind.F90:522
integer, parameter SK3
Definition: pm_kind.F90:336
This is the css_pdt parameterized type for generating instances of container of scalar of string obje...
This is the css_type type for generating instances of container of scalar of string objects.