ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_arrayUnique.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
27
28!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29
31
32 use pm_container, only: cvi_type
33 use pm_kind, only: SK, IK, LK
34 implicit none
35
36 character(*, SK), parameter :: MODULE_NAME = "@pm_arrayUnique"
37
39! \bug
40! The following bypasses the bug reported below that creates a conflict between Intel and gfortran.
41#if __INTEL_COMPILER
42#define LEN_ARRAY :
43#else
44#define LEN_ARRAY len(array)
45#endif
46
47
48!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
49
139 interface isUnique
140
141 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
142 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
143 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
144
145#if SK5_ENABLED
146 pure module function isUniqueDefCom_D0_SK5(array) result(unique)
147#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
148 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D0_SK5
149#endif
150 use pm_kind, only: SKG => SK5
151 character(*,SKG) , intent(in) :: array
152 logical(LK) :: unique(len(array, IK))
153 end function
154#endif
155
156#if SK4_ENABLED
157 pure module function isUniqueDefCom_D0_SK4(array) result(unique)
158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
159 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D0_SK4
160#endif
161 use pm_kind, only: SKG => SK4
162 character(*,SKG) , intent(in) :: array
163 logical(LK) :: unique(len(array, IK))
164 end function
165#endif
166
167#if SK3_ENABLED
168 pure module function isUniqueDefCom_D0_SK3(array) result(unique)
169#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
170 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D0_SK3
171#endif
172 use pm_kind, only: SKG => SK3
173 character(*,SKG) , intent(in) :: array
174 logical(LK) :: unique(len(array, IK))
175 end function
176#endif
177
178#if SK2_ENABLED
179 pure module function isUniqueDefCom_D0_SK2(array) result(unique)
180#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
181 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D0_SK2
182#endif
183 use pm_kind, only: SKG => SK2
184 character(*,SKG) , intent(in) :: array
185 logical(LK) :: unique(len(array, IK))
186 end function
187#endif
188
189#if SK1_ENABLED
190 pure module function isUniqueDefCom_D0_SK1(array) result(unique)
191#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
192 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D0_SK1
193#endif
194 use pm_kind, only: SKG => SK1
195 character(*,SKG) , intent(in) :: array
196 logical(LK) :: unique(len(array, IK))
197 end function
198#endif
199
200 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
201
202#if SK5_ENABLED
203 pure module function isUniqueDefCom_D1_SK5(array) result(unique)
204#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
205 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_SK5
206#endif
207 use pm_kind, only: SKG => SK5
208 character(*,SKG) , intent(in), contiguous :: array(:)
209 logical(LK) :: unique(size(array, 1, IK))
210 end function
211#endif
212
213#if SK4_ENABLED
214 pure module function isUniqueDefCom_D1_SK4(array) result(unique)
215#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
216 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_SK4
217#endif
218 use pm_kind, only: SKG => SK4
219 character(*,SKG) , intent(in), contiguous :: array(:)
220 logical(LK) :: unique(size(array, 1, IK))
221 end function
222#endif
223
224#if SK3_ENABLED
225 pure module function isUniqueDefCom_D1_SK3(array) result(unique)
226#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
227 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_SK3
228#endif
229 use pm_kind, only: SKG => SK3
230 character(*,SKG) , intent(in), contiguous :: array(:)
231 logical(LK) :: unique(size(array, 1, IK))
232 end function
233#endif
234
235#if SK2_ENABLED
236 pure module function isUniqueDefCom_D1_SK2(array) result(unique)
237#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
238 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_SK2
239#endif
240 use pm_kind, only: SKG => SK2
241 character(*,SKG) , intent(in), contiguous :: array(:)
242 logical(LK) :: unique(size(array, 1, IK))
243 end function
244#endif
245
246#if SK1_ENABLED
247 pure module function isUniqueDefCom_D1_SK1(array) result(unique)
248#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
249 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_SK1
250#endif
251 use pm_kind, only: SKG => SK1
252 character(*,SKG) , intent(in), contiguous :: array(:)
253 logical(LK) :: unique(size(array, 1, IK))
254 end function
255#endif
256
257 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
258
259#if IK5_ENABLED
260 pure module function isUniqueDefCom_D1_IK5(array) result(unique)
261#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
262 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_IK5
263#endif
264 use pm_kind, only: IKG => IK5
265 integer(IKG) , intent(in), contiguous :: array(:)
266 logical(LK) :: unique(size(array, 1, IK))
267 end function
268#endif
269
270#if IK4_ENABLED
271 pure module function isUniqueDefCom_D1_IK4(array) result(unique)
272#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
273 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_IK4
274#endif
275 use pm_kind, only: IKG => IK4
276 integer(IKG) , intent(in), contiguous :: array(:)
277 logical(LK) :: unique(size(array, 1, IK))
278 end function
279#endif
280
281#if IK3_ENABLED
282 pure module function isUniqueDefCom_D1_IK3(array) result(unique)
283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
284 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_IK3
285#endif
286 use pm_kind, only: IKG => IK3
287 integer(IKG) , intent(in), contiguous :: array(:)
288 logical(LK) :: unique(size(array, 1, IK))
289 end function
290#endif
291
292#if IK2_ENABLED
293 pure module function isUniqueDefCom_D1_IK2(array) result(unique)
294#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
295 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_IK2
296#endif
297 use pm_kind, only: IKG => IK2
298 integer(IKG) , intent(in), contiguous :: array(:)
299 logical(LK) :: unique(size(array, 1, IK))
300 end function
301#endif
302
303#if IK1_ENABLED
304 pure module function isUniqueDefCom_D1_IK1(array) result(unique)
305#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
306 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_IK1
307#endif
308 use pm_kind, only: IKG => IK1
309 integer(IKG) , intent(in), contiguous :: array(:)
310 logical(LK) :: unique(size(array, 1, IK))
311 end function
312#endif
313
314 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
315
316#if LK5_ENABLED
317 pure module function isUniqueDefCom_D1_LK5(array) result(unique)
318#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
319 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_LK5
320#endif
321 use pm_kind, only: LKG => LK5
322 logical(LKG) , intent(in), contiguous :: array(:)
323 logical(LK) :: unique(size(array, 1, IK))
324 end function
325#endif
326
327#if LK4_ENABLED
328 pure module function isUniqueDefCom_D1_LK4(array) result(unique)
329#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
330 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_LK4
331#endif
332 use pm_kind, only: LKG => LK4
333 logical(LKG) , intent(in), contiguous :: array(:)
334 logical(LK) :: unique(size(array, 1, IK))
335 end function
336#endif
337
338#if LK3_ENABLED
339 pure module function isUniqueDefCom_D1_LK3(array) result(unique)
340#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
341 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_LK3
342#endif
343 use pm_kind, only: LKG => LK3
344 logical(LKG) , intent(in), contiguous :: array(:)
345 logical(LK) :: unique(size(array, 1, IK))
346 end function
347#endif
348
349#if LK2_ENABLED
350 pure module function isUniqueDefCom_D1_LK2(array) result(unique)
351#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
352 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_LK2
353#endif
354 use pm_kind, only: LKG => LK2
355 logical(LKG) , intent(in), contiguous :: array(:)
356 logical(LK) :: unique(size(array, 1, IK))
357 end function
358#endif
359
360#if LK1_ENABLED
361 pure module function isUniqueDefCom_D1_LK1(array) result(unique)
362#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
363 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_LK1
364#endif
365 use pm_kind, only: LKG => LK1
366 logical(LKG) , intent(in), contiguous :: array(:)
367 logical(LK) :: unique(size(array, 1, IK))
368 end function
369#endif
370
371 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
372
373#if CK5_ENABLED
374 pure module function isUniqueDefCom_D1_CK5(array) result(unique)
375#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
376 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_CK5
377#endif
378 use pm_kind, only: CKG => CK5
379 complex(CKG) , intent(in), contiguous :: array(:)
380 logical(LK) :: unique(size(array, 1, IK))
381 end function
382#endif
383
384#if CK4_ENABLED
385 pure module function isUniqueDefCom_D1_CK4(array) result(unique)
386#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
387 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_CK4
388#endif
389 use pm_kind, only: CKG => CK4
390 complex(CKG) , intent(in), contiguous :: array(:)
391 logical(LK) :: unique(size(array, 1, IK))
392 end function
393#endif
394
395#if CK3_ENABLED
396 pure module function isUniqueDefCom_D1_CK3(array) result(unique)
397#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
398 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_CK3
399#endif
400 use pm_kind, only: CKG => CK3
401 complex(CKG) , intent(in), contiguous :: array(:)
402 logical(LK) :: unique(size(array, 1, IK))
403 end function
404#endif
405
406#if CK2_ENABLED
407 pure module function isUniqueDefCom_D1_CK2(array) result(unique)
408#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
409 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_CK2
410#endif
411 use pm_kind, only: CKG => CK2
412 complex(CKG) , intent(in), contiguous :: array(:)
413 logical(LK) :: unique(size(array, 1, IK))
414 end function
415#endif
416
417#if CK1_ENABLED
418 pure module function isUniqueDefCom_D1_CK1(array) result(unique)
419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
420 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_CK1
421#endif
422 use pm_kind, only: CKG => CK1
423 complex(CKG) , intent(in), contiguous :: array(:)
424 logical(LK) :: unique(size(array, 1, IK))
425 end function
426#endif
427
428 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
429
430#if RK5_ENABLED
431 pure module function isUniqueDefCom_D1_RK5(array) result(unique)
432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
433 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_RK5
434#endif
435 use pm_kind, only: RKG => RK5
436 real(RKG) , intent(in), contiguous :: array(:)
437 logical(LK) :: unique(size(array, 1, IK))
438 end function
439#endif
440
441#if RK4_ENABLED
442 pure module function isUniqueDefCom_D1_RK4(array) result(unique)
443#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
444 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_RK4
445#endif
446 use pm_kind, only: RKG => RK4
447 real(RKG) , intent(in), contiguous :: array(:)
448 logical(LK) :: unique(size(array, 1, IK))
449 end function
450#endif
451
452#if RK3_ENABLED
453 pure module function isUniqueDefCom_D1_RK3(array) result(unique)
454#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
455 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_RK3
456#endif
457 use pm_kind, only: RKG => RK3
458 real(RKG) , intent(in), contiguous :: array(:)
459 logical(LK) :: unique(size(array, 1, IK))
460 end function
461#endif
462
463#if RK2_ENABLED
464 pure module function isUniqueDefCom_D1_RK2(array) result(unique)
465#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
466 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_RK2
467#endif
468 use pm_kind, only: RKG => RK2
469 real(RKG) , intent(in), contiguous :: array(:)
470 logical(LK) :: unique(size(array, 1, IK))
471 end function
472#endif
473
474#if RK1_ENABLED
475 pure module function isUniqueDefCom_D1_RK1(array) result(unique)
476#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
477 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueDefCom_D1_RK1
478#endif
479 use pm_kind, only: RKG => RK1
480 real(RKG) , intent(in), contiguous :: array(:)
481 logical(LK) :: unique(size(array, 1, IK))
482 end function
483#endif
484
485 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
486 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
487 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
488
489#if SK5_ENABLED
490 module function isUniqueCusCom_D0_SK5(array, iseq) result(unique)
491#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
492 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D0_SK5
493#endif
494 use pm_kind, only: SKG => SK5
495 character(*,SKG) , intent(in) :: array
496 procedure(logical(LK)) :: iseq
497 logical(LK) :: unique(len(array, IK))
498 end function
499#endif
500
501#if SK4_ENABLED
502 module function isUniqueCusCom_D0_SK4(array, iseq) result(unique)
503#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
504 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D0_SK4
505#endif
506 use pm_kind, only: SKG => SK4
507 character(*,SKG) , intent(in) :: array
508 procedure(logical(LK)) :: iseq
509 logical(LK) :: unique(len(array, IK))
510 end function
511#endif
512
513#if SK3_ENABLED
514 module function isUniqueCusCom_D0_SK3(array, iseq) result(unique)
515#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
516 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D0_SK3
517#endif
518 use pm_kind, only: SKG => SK3
519 character(*,SKG) , intent(in) :: array
520 procedure(logical(LK)) :: iseq
521 logical(LK) :: unique(len(array, IK))
522 end function
523#endif
524
525#if SK2_ENABLED
526 module function isUniqueCusCom_D0_SK2(array, iseq) result(unique)
527#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
528 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D0_SK2
529#endif
530 use pm_kind, only: SKG => SK2
531 character(*,SKG) , intent(in) :: array
532 procedure(logical(LK)) :: iseq
533 logical(LK) :: unique(len(array, IK))
534 end function
535#endif
536
537#if SK1_ENABLED
538 module function isUniqueCusCom_D0_SK1(array, iseq) result(unique)
539#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
540 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D0_SK1
541#endif
542 use pm_kind, only: SKG => SK1
543 character(*,SKG) , intent(in) :: array
544 procedure(logical(LK)) :: iseq
545 logical(LK) :: unique(len(array, IK))
546 end function
547#endif
548
549 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
550
551#if SK5_ENABLED
552 module function isUniqueCusCom_D1_SK5(array, iseq) result(unique)
553#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
554 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_SK5
555#endif
556 use pm_kind, only: SKG => SK5
557 character(*,SKG) , intent(in), contiguous :: array(:)
558 procedure(logical(LK)) :: iseq
559 logical(LK) :: unique(size(array, 1, IK))
560 end function
561#endif
562
563#if SK4_ENABLED
564 module function isUniqueCusCom_D1_SK4(array, iseq) result(unique)
565#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
566 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_SK4
567#endif
568 use pm_kind, only: SKG => SK4
569 character(*,SKG) , intent(in), contiguous :: array(:)
570 procedure(logical(LK)) :: iseq
571 logical(LK) :: unique(size(array, 1, IK))
572 end function
573#endif
574
575#if SK3_ENABLED
576 module function isUniqueCusCom_D1_SK3(array, iseq) result(unique)
577#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
578 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_SK3
579#endif
580 use pm_kind, only: SKG => SK3
581 character(*,SKG) , intent(in), contiguous :: array(:)
582 procedure(logical(LK)) :: iseq
583 logical(LK) :: unique(size(array, 1, IK))
584 end function
585#endif
586
587#if SK2_ENABLED
588 module function isUniqueCusCom_D1_SK2(array, iseq) result(unique)
589#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
590 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_SK2
591#endif
592 use pm_kind, only: SKG => SK2
593 character(*,SKG) , intent(in), contiguous :: array(:)
594 procedure(logical(LK)) :: iseq
595 logical(LK) :: unique(size(array, 1, IK))
596 end function
597#endif
598
599#if SK1_ENABLED
600 module function isUniqueCusCom_D1_SK1(array, iseq) result(unique)
601#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
602 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_SK1
603#endif
604 use pm_kind, only: SKG => SK1
605 character(*,SKG) , intent(in), contiguous :: array(:)
606 procedure(logical(LK)) :: iseq
607 logical(LK) :: unique(size(array, 1, IK))
608 end function
609#endif
610
611 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
612
613#if IK5_ENABLED
614 module function isUniqueCusCom_D1_IK5(array, iseq) result(unique)
615#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
616 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_IK5
617#endif
618 use pm_kind, only: IKG => IK5
619 integer(IKG) , intent(in), contiguous :: array(:)
620 procedure(logical(LK)) :: iseq
621 logical(LK) :: unique(size(array, 1, IK))
622 end function
623#endif
624
625#if IK4_ENABLED
626 module function isUniqueCusCom_D1_IK4(array, iseq) result(unique)
627#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
628 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_IK4
629#endif
630 use pm_kind, only: IKG => IK4
631 integer(IKG) , intent(in), contiguous :: array(:)
632 procedure(logical(LK)) :: iseq
633 logical(LK) :: unique(size(array, 1, IK))
634 end function
635#endif
636
637#if IK3_ENABLED
638 module function isUniqueCusCom_D1_IK3(array, iseq) result(unique)
639#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
640 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_IK3
641#endif
642 use pm_kind, only: IKG => IK3
643 integer(IKG) , intent(in), contiguous :: array(:)
644 procedure(logical(LK)) :: iseq
645 logical(LK) :: unique(size(array, 1, IK))
646 end function
647#endif
648
649#if IK2_ENABLED
650 module function isUniqueCusCom_D1_IK2(array, iseq) result(unique)
651#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
652 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_IK2
653#endif
654 use pm_kind, only: IKG => IK2
655 integer(IKG) , intent(in), contiguous :: array(:)
656 procedure(logical(LK)) :: iseq
657 logical(LK) :: unique(size(array, 1, IK))
658 end function
659#endif
660
661#if IK1_ENABLED
662 module function isUniqueCusCom_D1_IK1(array, iseq) result(unique)
663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
664 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_IK1
665#endif
666 use pm_kind, only: IKG => IK1
667 integer(IKG) , intent(in), contiguous :: array(:)
668 procedure(logical(LK)) :: iseq
669 logical(LK) :: unique(size(array, 1, IK))
670 end function
671#endif
672
673 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
674
675#if LK5_ENABLED
676 module function isUniqueCusCom_D1_LK5(array, iseq) result(unique)
677#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
678 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_LK5
679#endif
680 use pm_kind, only: LKG => LK5
681 logical(LKG) , intent(in), contiguous :: array(:)
682 procedure(logical(LK)) :: iseq
683 logical(LK) :: unique(size(array, 1, IK))
684 end function
685#endif
686
687#if LK4_ENABLED
688 module function isUniqueCusCom_D1_LK4(array, iseq) result(unique)
689#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
690 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_LK4
691#endif
692 use pm_kind, only: LKG => LK4
693 logical(LKG) , intent(in), contiguous :: array(:)
694 procedure(logical(LK)) :: iseq
695 logical(LK) :: unique(size(array, 1, IK))
696 end function
697#endif
698
699#if LK3_ENABLED
700 module function isUniqueCusCom_D1_LK3(array, iseq) result(unique)
701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
702 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_LK3
703#endif
704 use pm_kind, only: LKG => LK3
705 logical(LKG) , intent(in), contiguous :: array(:)
706 procedure(logical(LK)) :: iseq
707 logical(LK) :: unique(size(array, 1, IK))
708 end function
709#endif
710
711#if LK2_ENABLED
712 module function isUniqueCusCom_D1_LK2(array, iseq) result(unique)
713#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
714 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_LK2
715#endif
716 use pm_kind, only: LKG => LK2
717 logical(LKG) , intent(in), contiguous :: array(:)
718 procedure(logical(LK)) :: iseq
719 logical(LK) :: unique(size(array, 1, IK))
720 end function
721#endif
722
723#if LK1_ENABLED
724 module function isUniqueCusCom_D1_LK1(array, iseq) result(unique)
725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
726 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_LK1
727#endif
728 use pm_kind, only: LKG => LK1
729 logical(LKG) , intent(in), contiguous :: array(:)
730 procedure(logical(LK)) :: iseq
731 logical(LK) :: unique(size(array, 1, IK))
732 end function
733#endif
734
735 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
736
737#if CK5_ENABLED
738 module function isUniqueCusCom_D1_CK5(array, iseq) result(unique)
739#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
740 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_CK5
741#endif
742 use pm_kind, only: CKG => CK5
743 complex(CKG) , intent(in), contiguous :: array(:)
744 procedure(logical(LK)) :: iseq
745 logical(LK) :: unique(size(array, 1, IK))
746 end function
747#endif
748
749#if CK4_ENABLED
750 module function isUniqueCusCom_D1_CK4(array, iseq) result(unique)
751#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
752 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_CK4
753#endif
754 use pm_kind, only: CKG => CK4
755 complex(CKG) , intent(in), contiguous :: array(:)
756 procedure(logical(LK)) :: iseq
757 logical(LK) :: unique(size(array, 1, IK))
758 end function
759#endif
760
761#if CK3_ENABLED
762 module function isUniqueCusCom_D1_CK3(array, iseq) result(unique)
763#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
764 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_CK3
765#endif
766 use pm_kind, only: CKG => CK3
767 complex(CKG) , intent(in), contiguous :: array(:)
768 procedure(logical(LK)) :: iseq
769 logical(LK) :: unique(size(array, 1, IK))
770 end function
771#endif
772
773#if CK2_ENABLED
774 module function isUniqueCusCom_D1_CK2(array, iseq) result(unique)
775#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
776 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_CK2
777#endif
778 use pm_kind, only: CKG => CK2
779 complex(CKG) , intent(in), contiguous :: array(:)
780 procedure(logical(LK)) :: iseq
781 logical(LK) :: unique(size(array, 1, IK))
782 end function
783#endif
784
785#if CK1_ENABLED
786 module function isUniqueCusCom_D1_CK1(array, iseq) result(unique)
787#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
788 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_CK1
789#endif
790 use pm_kind, only: CKG => CK1
791 complex(CKG) , intent(in), contiguous :: array(:)
792 procedure(logical(LK)) :: iseq
793 logical(LK) :: unique(size(array, 1, IK))
794 end function
795#endif
796
797 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
798
799#if RK5_ENABLED
800 module function isUniqueCusCom_D1_RK5(array, iseq) result(unique)
801#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
802 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_RK5
803#endif
804 use pm_kind, only: RKG => RK5
805 real(RKG) , intent(in), contiguous :: array(:)
806 procedure(logical(LK)) :: iseq
807 logical(LK) :: unique(size(array, 1, IK))
808 end function
809#endif
810
811#if RK4_ENABLED
812 module function isUniqueCusCom_D1_RK4(array, iseq) result(unique)
813#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
814 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_RK4
815#endif
816 use pm_kind, only: RKG => RK4
817 real(RKG) , intent(in), contiguous :: array(:)
818 procedure(logical(LK)) :: iseq
819 logical(LK) :: unique(size(array, 1, IK))
820 end function
821#endif
822
823#if RK3_ENABLED
824 module function isUniqueCusCom_D1_RK3(array, iseq) result(unique)
825#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
826 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_RK3
827#endif
828 use pm_kind, only: RKG => RK3
829 real(RKG) , intent(in), contiguous :: array(:)
830 procedure(logical(LK)) :: iseq
831 logical(LK) :: unique(size(array, 1, IK))
832 end function
833#endif
834
835#if RK2_ENABLED
836 module function isUniqueCusCom_D1_RK2(array, iseq) result(unique)
837#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
838 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_RK2
839#endif
840 use pm_kind, only: RKG => RK2
841 real(RKG) , intent(in), contiguous :: array(:)
842 procedure(logical(LK)) :: iseq
843 logical(LK) :: unique(size(array, 1, IK))
844 end function
845#endif
846
847#if RK1_ENABLED
848 module function isUniqueCusCom_D1_RK1(array, iseq) result(unique)
849#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
850 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueCusCom_D1_RK1
851#endif
852 use pm_kind, only: RKG => RK1
853 real(RKG) , intent(in), contiguous :: array(:)
854 procedure(logical(LK)) :: iseq
855 logical(LK) :: unique(size(array, 1, IK))
856 end function
857#endif
858
859 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
860 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
861 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
862
863 end interface isUnique
864
865!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
866
955 interface isUniqueAll
956
957 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
958 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
959 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
960
961#if SK5_ENABLED
962 PURE module function isUniqueAllDefCom_D0_SK5(array) result(uniqueAll)
963#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
964 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D0_SK5
965#endif
966 use pm_kind, only: SKG => SK5
967 character(*,SKG) , intent(in) :: array
968 logical(LK) :: uniqueAll
969 end function
970#endif
971
972#if SK4_ENABLED
973 PURE module function isUniqueAllDefCom_D0_SK4(array) result(uniqueAll)
974#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
975 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D0_SK4
976#endif
977 use pm_kind, only: SKG => SK4
978 character(*,SKG) , intent(in) :: array
979 logical(LK) :: uniqueAll
980 end function
981#endif
982
983#if SK3_ENABLED
984 PURE module function isUniqueAllDefCom_D0_SK3(array) result(uniqueAll)
985#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
986 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D0_SK3
987#endif
988 use pm_kind, only: SKG => SK3
989 character(*,SKG) , intent(in) :: array
990 logical(LK) :: uniqueAll
991 end function
992#endif
993
994#if SK2_ENABLED
995 PURE module function isUniqueAllDefCom_D0_SK2(array) result(uniqueAll)
996#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
997 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D0_SK2
998#endif
999 use pm_kind, only: SKG => SK2
1000 character(*,SKG) , intent(in) :: array
1001 logical(LK) :: uniqueAll
1002 end function
1003#endif
1004
1005#if SK1_ENABLED
1006 PURE module function isUniqueAllDefCom_D0_SK1(array) result(uniqueAll)
1007#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1008 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D0_SK1
1009#endif
1010 use pm_kind, only: SKG => SK1
1011 character(*,SKG) , intent(in) :: array
1012 logical(LK) :: uniqueAll
1013 end function
1014#endif
1015
1016 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1017
1018#if SK5_ENABLED
1019 PURE module function isUniqueAllDefCom_D1_SK5(array) result(uniqueAll)
1020#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1021 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_SK5
1022#endif
1023 use pm_kind, only: SKG => SK5
1024 character(*,SKG) , intent(in), contiguous :: array(:)
1025 logical(LK) :: uniqueAll
1026 end function
1027#endif
1028
1029#if SK4_ENABLED
1030 PURE module function isUniqueAllDefCom_D1_SK4(array) result(uniqueAll)
1031#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1032 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_SK4
1033#endif
1034 use pm_kind, only: SKG => SK4
1035 character(*,SKG) , intent(in), contiguous :: array(:)
1036 logical(LK) :: uniqueAll
1037 end function
1038#endif
1039
1040#if SK3_ENABLED
1041 PURE module function isUniqueAllDefCom_D1_SK3(array) result(uniqueAll)
1042#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1043 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_SK3
1044#endif
1045 use pm_kind, only: SKG => SK3
1046 character(*,SKG) , intent(in), contiguous :: array(:)
1047 logical(LK) :: uniqueAll
1048 end function
1049#endif
1050
1051#if SK2_ENABLED
1052 PURE module function isUniqueAllDefCom_D1_SK2(array) result(uniqueAll)
1053#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1054 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_SK2
1055#endif
1056 use pm_kind, only: SKG => SK2
1057 character(*,SKG) , intent(in), contiguous :: array(:)
1058 logical(LK) :: uniqueAll
1059 end function
1060#endif
1061
1062#if SK1_ENABLED
1063 PURE module function isUniqueAllDefCom_D1_SK1(array) result(uniqueAll)
1064#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1065 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_SK1
1066#endif
1067 use pm_kind, only: SKG => SK1
1068 character(*,SKG) , intent(in), contiguous :: array(:)
1069 logical(LK) :: uniqueAll
1070 end function
1071#endif
1072
1073 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1074
1075#if IK5_ENABLED
1076 PURE module function isUniqueAllDefCom_D1_IK5(array) result(uniqueAll)
1077#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1078 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_IK5
1079#endif
1080 use pm_kind, only: IKG => IK5
1081 integer(IKG) , intent(in), contiguous :: array(:)
1082 logical(LK) :: uniqueAll
1083 end function
1084#endif
1085
1086#if IK4_ENABLED
1087 PURE module function isUniqueAllDefCom_D1_IK4(array) result(uniqueAll)
1088#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1089 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_IK4
1090#endif
1091 use pm_kind, only: IKG => IK4
1092 integer(IKG) , intent(in), contiguous :: array(:)
1093 logical(LK) :: uniqueAll
1094 end function
1095#endif
1096
1097#if IK3_ENABLED
1098 PURE module function isUniqueAllDefCom_D1_IK3(array) result(uniqueAll)
1099#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1100 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_IK3
1101#endif
1102 use pm_kind, only: IKG => IK3
1103 integer(IKG) , intent(in), contiguous :: array(:)
1104 logical(LK) :: uniqueAll
1105 end function
1106#endif
1107
1108#if IK2_ENABLED
1109 PURE module function isUniqueAllDefCom_D1_IK2(array) result(uniqueAll)
1110#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1111 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_IK2
1112#endif
1113 use pm_kind, only: IKG => IK2
1114 integer(IKG) , intent(in), contiguous :: array(:)
1115 logical(LK) :: uniqueAll
1116 end function
1117#endif
1118
1119#if IK1_ENABLED
1120 PURE module function isUniqueAllDefCom_D1_IK1(array) result(uniqueAll)
1121#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1122 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_IK1
1123#endif
1124 use pm_kind, only: IKG => IK1
1125 integer(IKG) , intent(in), contiguous :: array(:)
1126 logical(LK) :: uniqueAll
1127 end function
1128#endif
1129
1130 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1131
1132#if LK5_ENABLED
1133 PURE module function isUniqueAllDefCom_D1_LK5(array) result(uniqueAll)
1134#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1135 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_LK5
1136#endif
1137 use pm_kind, only: LKG => LK5
1138 logical(LKG) , intent(in), contiguous :: array(:)
1139 logical(LK) :: uniqueAll
1140 end function
1141#endif
1142
1143#if LK4_ENABLED
1144 PURE module function isUniqueAllDefCom_D1_LK4(array) result(uniqueAll)
1145#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1146 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_LK4
1147#endif
1148 use pm_kind, only: LKG => LK4
1149 logical(LKG) , intent(in), contiguous :: array(:)
1150 logical(LK) :: uniqueAll
1151 end function
1152#endif
1153
1154#if LK3_ENABLED
1155 PURE module function isUniqueAllDefCom_D1_LK3(array) result(uniqueAll)
1156#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1157 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_LK3
1158#endif
1159 use pm_kind, only: LKG => LK3
1160 logical(LKG) , intent(in), contiguous :: array(:)
1161 logical(LK) :: uniqueAll
1162 end function
1163#endif
1164
1165#if LK2_ENABLED
1166 PURE module function isUniqueAllDefCom_D1_LK2(array) result(uniqueAll)
1167#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1168 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_LK2
1169#endif
1170 use pm_kind, only: LKG => LK2
1171 logical(LKG) , intent(in), contiguous :: array(:)
1172 logical(LK) :: uniqueAll
1173 end function
1174#endif
1175
1176#if LK1_ENABLED
1177 PURE module function isUniqueAllDefCom_D1_LK1(array) result(uniqueAll)
1178#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1179 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_LK1
1180#endif
1181 use pm_kind, only: LKG => LK1
1182 logical(LKG) , intent(in), contiguous :: array(:)
1183 logical(LK) :: uniqueAll
1184 end function
1185#endif
1186
1187 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1188
1189#if CK5_ENABLED
1190 PURE module function isUniqueAllDefCom_D1_CK5(array) result(uniqueAll)
1191#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1192 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_CK5
1193#endif
1194 use pm_kind, only: CKG => CK5
1195 complex(CKG) , intent(in), contiguous :: array(:)
1196 logical(LK) :: uniqueAll
1197 end function
1198#endif
1199
1200#if CK4_ENABLED
1201 PURE module function isUniqueAllDefCom_D1_CK4(array) result(uniqueAll)
1202#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1203 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_CK4
1204#endif
1205 use pm_kind, only: CKG => CK4
1206 complex(CKG) , intent(in), contiguous :: array(:)
1207 logical(LK) :: uniqueAll
1208 end function
1209#endif
1210
1211#if CK3_ENABLED
1212 PURE module function isUniqueAllDefCom_D1_CK3(array) result(uniqueAll)
1213#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1214 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_CK3
1215#endif
1216 use pm_kind, only: CKG => CK3
1217 complex(CKG) , intent(in), contiguous :: array(:)
1218 logical(LK) :: uniqueAll
1219 end function
1220#endif
1221
1222#if CK2_ENABLED
1223 PURE module function isUniqueAllDefCom_D1_CK2(array) result(uniqueAll)
1224#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1225 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_CK2
1226#endif
1227 use pm_kind, only: CKG => CK2
1228 complex(CKG) , intent(in), contiguous :: array(:)
1229 logical(LK) :: uniqueAll
1230 end function
1231#endif
1232
1233#if CK1_ENABLED
1234 PURE module function isUniqueAllDefCom_D1_CK1(array) result(uniqueAll)
1235#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1236 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_CK1
1237#endif
1238 use pm_kind, only: CKG => CK1
1239 complex(CKG) , intent(in), contiguous :: array(:)
1240 logical(LK) :: uniqueAll
1241 end function
1242#endif
1243
1244 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1245
1246#if RK5_ENABLED
1247 PURE module function isUniqueAllDefCom_D1_RK5(array) result(uniqueAll)
1248#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1249 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_RK5
1250#endif
1251 use pm_kind, only: RKG => RK5
1252 real(RKG) , intent(in), contiguous :: array(:)
1253 logical(LK) :: uniqueAll
1254 end function
1255#endif
1256
1257#if RK4_ENABLED
1258 PURE module function isUniqueAllDefCom_D1_RK4(array) result(uniqueAll)
1259#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1260 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_RK4
1261#endif
1262 use pm_kind, only: RKG => RK4
1263 real(RKG) , intent(in), contiguous :: array(:)
1264 logical(LK) :: uniqueAll
1265 end function
1266#endif
1267
1268#if RK3_ENABLED
1269 PURE module function isUniqueAllDefCom_D1_RK3(array) result(uniqueAll)
1270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1271 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_RK3
1272#endif
1273 use pm_kind, only: RKG => RK3
1274 real(RKG) , intent(in), contiguous :: array(:)
1275 logical(LK) :: uniqueAll
1276 end function
1277#endif
1278
1279#if RK2_ENABLED
1280 PURE module function isUniqueAllDefCom_D1_RK2(array) result(uniqueAll)
1281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1282 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_RK2
1283#endif
1284 use pm_kind, only: RKG => RK2
1285 real(RKG) , intent(in), contiguous :: array(:)
1286 logical(LK) :: uniqueAll
1287 end function
1288#endif
1289
1290#if RK1_ENABLED
1291 PURE module function isUniqueAllDefCom_D1_RK1(array) result(uniqueAll)
1292#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1293 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllDefCom_D1_RK1
1294#endif
1295 use pm_kind, only: RKG => RK1
1296 real(RKG) , intent(in), contiguous :: array(:)
1297 logical(LK) :: uniqueAll
1298 end function
1299#endif
1300
1301 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1302 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1303 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1304
1305#if SK5_ENABLED
1306 module function isUniqueAllCusCom_D0_SK5(array, iseq) result(uniqueAll)
1307#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1308 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D0_SK5
1309#endif
1310 use pm_kind, only: SKG => SK5
1311 character(*,SKG) , intent(in) :: array
1312 procedure(logical(LK)) :: iseq
1313 logical(LK) :: uniqueAll
1314 end function
1315#endif
1316
1317#if SK4_ENABLED
1318 module function isUniqueAllCusCom_D0_SK4(array, iseq) result(uniqueAll)
1319#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1320 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D0_SK4
1321#endif
1322 use pm_kind, only: SKG => SK4
1323 character(*,SKG) , intent(in) :: array
1324 procedure(logical(LK)) :: iseq
1325 logical(LK) :: uniqueAll
1326 end function
1327#endif
1328
1329#if SK3_ENABLED
1330 module function isUniqueAllCusCom_D0_SK3(array, iseq) result(uniqueAll)
1331#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1332 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D0_SK3
1333#endif
1334 use pm_kind, only: SKG => SK3
1335 character(*,SKG) , intent(in) :: array
1336 procedure(logical(LK)) :: iseq
1337 logical(LK) :: uniqueAll
1338 end function
1339#endif
1340
1341#if SK2_ENABLED
1342 module function isUniqueAllCusCom_D0_SK2(array, iseq) result(uniqueAll)
1343#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1344 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D0_SK2
1345#endif
1346 use pm_kind, only: SKG => SK2
1347 character(*,SKG) , intent(in) :: array
1348 procedure(logical(LK)) :: iseq
1349 logical(LK) :: uniqueAll
1350 end function
1351#endif
1352
1353#if SK1_ENABLED
1354 module function isUniqueAllCusCom_D0_SK1(array, iseq) result(uniqueAll)
1355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1356 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D0_SK1
1357#endif
1358 use pm_kind, only: SKG => SK1
1359 character(*,SKG) , intent(in) :: array
1360 procedure(logical(LK)) :: iseq
1361 logical(LK) :: uniqueAll
1362 end function
1363#endif
1364
1365 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1366
1367#if SK5_ENABLED
1368 module function isUniqueAllCusCom_D1_SK5(array, iseq) result(uniqueAll)
1369#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1370 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_SK5
1371#endif
1372 use pm_kind, only: SKG => SK5
1373 character(*,SKG) , intent(in), contiguous :: array(:)
1374 procedure(logical(LK)) :: iseq
1375 logical(LK) :: uniqueAll
1376 end function
1377#endif
1378
1379#if SK4_ENABLED
1380 module function isUniqueAllCusCom_D1_SK4(array, iseq) result(uniqueAll)
1381#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1382 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_SK4
1383#endif
1384 use pm_kind, only: SKG => SK4
1385 character(*,SKG) , intent(in), contiguous :: array(:)
1386 procedure(logical(LK)) :: iseq
1387 logical(LK) :: uniqueAll
1388 end function
1389#endif
1390
1391#if SK3_ENABLED
1392 module function isUniqueAllCusCom_D1_SK3(array, iseq) result(uniqueAll)
1393#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1394 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_SK3
1395#endif
1396 use pm_kind, only: SKG => SK3
1397 character(*,SKG) , intent(in), contiguous :: array(:)
1398 procedure(logical(LK)) :: iseq
1399 logical(LK) :: uniqueAll
1400 end function
1401#endif
1402
1403#if SK2_ENABLED
1404 module function isUniqueAllCusCom_D1_SK2(array, iseq) result(uniqueAll)
1405#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1406 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_SK2
1407#endif
1408 use pm_kind, only: SKG => SK2
1409 character(*,SKG) , intent(in), contiguous :: array(:)
1410 procedure(logical(LK)) :: iseq
1411 logical(LK) :: uniqueAll
1412 end function
1413#endif
1414
1415#if SK1_ENABLED
1416 module function isUniqueAllCusCom_D1_SK1(array, iseq) result(uniqueAll)
1417#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1418 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_SK1
1419#endif
1420 use pm_kind, only: SKG => SK1
1421 character(*,SKG) , intent(in), contiguous :: array(:)
1422 procedure(logical(LK)) :: iseq
1423 logical(LK) :: uniqueAll
1424 end function
1425#endif
1426
1427 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1428
1429#if IK5_ENABLED
1430 module function isUniqueAllCusCom_D1_IK5(array, iseq) result(uniqueAll)
1431#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1432 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_IK5
1433#endif
1434 use pm_kind, only: IKG => IK5
1435 integer(IKG) , intent(in), contiguous :: array(:)
1436 procedure(logical(LK)) :: iseq
1437 logical(LK) :: uniqueAll
1438 end function
1439#endif
1440
1441#if IK4_ENABLED
1442 module function isUniqueAllCusCom_D1_IK4(array, iseq) result(uniqueAll)
1443#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1444 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_IK4
1445#endif
1446 use pm_kind, only: IKG => IK4
1447 integer(IKG) , intent(in), contiguous :: array(:)
1448 procedure(logical(LK)) :: iseq
1449 logical(LK) :: uniqueAll
1450 end function
1451#endif
1452
1453#if IK3_ENABLED
1454 module function isUniqueAllCusCom_D1_IK3(array, iseq) result(uniqueAll)
1455#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1456 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_IK3
1457#endif
1458 use pm_kind, only: IKG => IK3
1459 integer(IKG) , intent(in), contiguous :: array(:)
1460 procedure(logical(LK)) :: iseq
1461 logical(LK) :: uniqueAll
1462 end function
1463#endif
1464
1465#if IK2_ENABLED
1466 module function isUniqueAllCusCom_D1_IK2(array, iseq) result(uniqueAll)
1467#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1468 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_IK2
1469#endif
1470 use pm_kind, only: IKG => IK2
1471 integer(IKG) , intent(in), contiguous :: array(:)
1472 procedure(logical(LK)) :: iseq
1473 logical(LK) :: uniqueAll
1474 end function
1475#endif
1476
1477#if IK1_ENABLED
1478 module function isUniqueAllCusCom_D1_IK1(array, iseq) result(uniqueAll)
1479#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1480 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_IK1
1481#endif
1482 use pm_kind, only: IKG => IK1
1483 integer(IKG) , intent(in), contiguous :: array(:)
1484 procedure(logical(LK)) :: iseq
1485 logical(LK) :: uniqueAll
1486 end function
1487#endif
1488
1489 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1490
1491#if LK5_ENABLED
1492 module function isUniqueAllCusCom_D1_LK5(array, iseq) result(uniqueAll)
1493#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1494 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_LK5
1495#endif
1496 use pm_kind, only: LKG => LK5
1497 logical(LKG) , intent(in), contiguous :: array(:)
1498 procedure(logical(LK)) :: iseq
1499 logical(LK) :: uniqueAll
1500 end function
1501#endif
1502
1503#if LK4_ENABLED
1504 module function isUniqueAllCusCom_D1_LK4(array, iseq) result(uniqueAll)
1505#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1506 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_LK4
1507#endif
1508 use pm_kind, only: LKG => LK4
1509 logical(LKG) , intent(in), contiguous :: array(:)
1510 procedure(logical(LK)) :: iseq
1511 logical(LK) :: uniqueAll
1512 end function
1513#endif
1514
1515#if LK3_ENABLED
1516 module function isUniqueAllCusCom_D1_LK3(array, iseq) result(uniqueAll)
1517#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1518 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_LK3
1519#endif
1520 use pm_kind, only: LKG => LK3
1521 logical(LKG) , intent(in), contiguous :: array(:)
1522 procedure(logical(LK)) :: iseq
1523 logical(LK) :: uniqueAll
1524 end function
1525#endif
1526
1527#if LK2_ENABLED
1528 module function isUniqueAllCusCom_D1_LK2(array, iseq) result(uniqueAll)
1529#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1530 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_LK2
1531#endif
1532 use pm_kind, only: LKG => LK2
1533 logical(LKG) , intent(in), contiguous :: array(:)
1534 procedure(logical(LK)) :: iseq
1535 logical(LK) :: uniqueAll
1536 end function
1537#endif
1538
1539#if LK1_ENABLED
1540 module function isUniqueAllCusCom_D1_LK1(array, iseq) result(uniqueAll)
1541#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1542 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_LK1
1543#endif
1544 use pm_kind, only: LKG => LK1
1545 logical(LKG) , intent(in), contiguous :: array(:)
1546 procedure(logical(LK)) :: iseq
1547 logical(LK) :: uniqueAll
1548 end function
1549#endif
1550
1551 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1552
1553#if CK5_ENABLED
1554 module function isUniqueAllCusCom_D1_CK5(array, iseq) result(uniqueAll)
1555#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1556 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_CK5
1557#endif
1558 use pm_kind, only: CKG => CK5
1559 complex(CKG) , intent(in), contiguous :: array(:)
1560 procedure(logical(LK)) :: iseq
1561 logical(LK) :: uniqueAll
1562 end function
1563#endif
1564
1565#if CK4_ENABLED
1566 module function isUniqueAllCusCom_D1_CK4(array, iseq) result(uniqueAll)
1567#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1568 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_CK4
1569#endif
1570 use pm_kind, only: CKG => CK4
1571 complex(CKG) , intent(in), contiguous :: array(:)
1572 procedure(logical(LK)) :: iseq
1573 logical(LK) :: uniqueAll
1574 end function
1575#endif
1576
1577#if CK3_ENABLED
1578 module function isUniqueAllCusCom_D1_CK3(array, iseq) result(uniqueAll)
1579#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1580 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_CK3
1581#endif
1582 use pm_kind, only: CKG => CK3
1583 complex(CKG) , intent(in), contiguous :: array(:)
1584 procedure(logical(LK)) :: iseq
1585 logical(LK) :: uniqueAll
1586 end function
1587#endif
1588
1589#if CK2_ENABLED
1590 module function isUniqueAllCusCom_D1_CK2(array, iseq) result(uniqueAll)
1591#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1592 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_CK2
1593#endif
1594 use pm_kind, only: CKG => CK2
1595 complex(CKG) , intent(in), contiguous :: array(:)
1596 procedure(logical(LK)) :: iseq
1597 logical(LK) :: uniqueAll
1598 end function
1599#endif
1600
1601#if CK1_ENABLED
1602 module function isUniqueAllCusCom_D1_CK1(array, iseq) result(uniqueAll)
1603#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1604 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_CK1
1605#endif
1606 use pm_kind, only: CKG => CK1
1607 complex(CKG) , intent(in), contiguous :: array(:)
1608 procedure(logical(LK)) :: iseq
1609 logical(LK) :: uniqueAll
1610 end function
1611#endif
1612
1613 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1614
1615#if RK5_ENABLED
1616 module function isUniqueAllCusCom_D1_RK5(array, iseq) result(uniqueAll)
1617#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1618 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_RK5
1619#endif
1620 use pm_kind, only: RKG => RK5
1621 real(RKG) , intent(in), contiguous :: array(:)
1622 procedure(logical(LK)) :: iseq
1623 logical(LK) :: uniqueAll
1624 end function
1625#endif
1626
1627#if RK4_ENABLED
1628 module function isUniqueAllCusCom_D1_RK4(array, iseq) result(uniqueAll)
1629#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1630 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_RK4
1631#endif
1632 use pm_kind, only: RKG => RK4
1633 real(RKG) , intent(in), contiguous :: array(:)
1634 procedure(logical(LK)) :: iseq
1635 logical(LK) :: uniqueAll
1636 end function
1637#endif
1638
1639#if RK3_ENABLED
1640 module function isUniqueAllCusCom_D1_RK3(array, iseq) result(uniqueAll)
1641#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1642 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_RK3
1643#endif
1644 use pm_kind, only: RKG => RK3
1645 real(RKG) , intent(in), contiguous :: array(:)
1646 procedure(logical(LK)) :: iseq
1647 logical(LK) :: uniqueAll
1648 end function
1649#endif
1650
1651#if RK2_ENABLED
1652 module function isUniqueAllCusCom_D1_RK2(array, iseq) result(uniqueAll)
1653#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1654 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_RK2
1655#endif
1656 use pm_kind, only: RKG => RK2
1657 real(RKG) , intent(in), contiguous :: array(:)
1658 procedure(logical(LK)) :: iseq
1659 logical(LK) :: uniqueAll
1660 end function
1661#endif
1662
1663#if RK1_ENABLED
1664 module function isUniqueAllCusCom_D1_RK1(array, iseq) result(uniqueAll)
1665#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1666 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAllCusCom_D1_RK1
1667#endif
1668 use pm_kind, only: RKG => RK1
1669 real(RKG) , intent(in), contiguous :: array(:)
1670 procedure(logical(LK)) :: iseq
1671 logical(LK) :: uniqueAll
1672 end function
1673#endif
1674
1675 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1676 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1677 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1678
1679 end interface isUniqueAll
1680
1681!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1682
1770 interface isUniqueAny
1771
1772 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1773 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1774 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1775
1776#if SK5_ENABLED
1777 PURE module function isUniqueAnyDefCom_D0_SK5(array) result(uniqueAny)
1778#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1779 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D0_SK5
1780#endif
1781 use pm_kind, only: SKG => SK5
1782 character(*,SKG) , intent(in) :: array
1783 logical(LK) :: uniqueAny
1784 end function
1785#endif
1786
1787#if SK4_ENABLED
1788 PURE module function isUniqueAnyDefCom_D0_SK4(array) result(uniqueAny)
1789#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1790 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D0_SK4
1791#endif
1792 use pm_kind, only: SKG => SK4
1793 character(*,SKG) , intent(in) :: array
1794 logical(LK) :: uniqueAny
1795 end function
1796#endif
1797
1798#if SK3_ENABLED
1799 PURE module function isUniqueAnyDefCom_D0_SK3(array) result(uniqueAny)
1800#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1801 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D0_SK3
1802#endif
1803 use pm_kind, only: SKG => SK3
1804 character(*,SKG) , intent(in) :: array
1805 logical(LK) :: uniqueAny
1806 end function
1807#endif
1808
1809#if SK2_ENABLED
1810 PURE module function isUniqueAnyDefCom_D0_SK2(array) result(uniqueAny)
1811#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1812 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D0_SK2
1813#endif
1814 use pm_kind, only: SKG => SK2
1815 character(*,SKG) , intent(in) :: array
1816 logical(LK) :: uniqueAny
1817 end function
1818#endif
1819
1820#if SK1_ENABLED
1821 PURE module function isUniqueAnyDefCom_D0_SK1(array) result(uniqueAny)
1822#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1823 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D0_SK1
1824#endif
1825 use pm_kind, only: SKG => SK1
1826 character(*,SKG) , intent(in) :: array
1827 logical(LK) :: uniqueAny
1828 end function
1829#endif
1830
1831 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1832
1833#if SK5_ENABLED
1834 PURE module function isUniqueAnyDefCom_D1_SK5(array) result(uniqueAny)
1835#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1836 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_SK5
1837#endif
1838 use pm_kind, only: SKG => SK5
1839 character(*,SKG) , intent(in), contiguous :: array(:)
1840 logical(LK) :: uniqueAny
1841 end function
1842#endif
1843
1844#if SK4_ENABLED
1845 PURE module function isUniqueAnyDefCom_D1_SK4(array) result(uniqueAny)
1846#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1847 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_SK4
1848#endif
1849 use pm_kind, only: SKG => SK4
1850 character(*,SKG) , intent(in), contiguous :: array(:)
1851 logical(LK) :: uniqueAny
1852 end function
1853#endif
1854
1855#if SK3_ENABLED
1856 PURE module function isUniqueAnyDefCom_D1_SK3(array) result(uniqueAny)
1857#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1858 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_SK3
1859#endif
1860 use pm_kind, only: SKG => SK3
1861 character(*,SKG) , intent(in), contiguous :: array(:)
1862 logical(LK) :: uniqueAny
1863 end function
1864#endif
1865
1866#if SK2_ENABLED
1867 PURE module function isUniqueAnyDefCom_D1_SK2(array) result(uniqueAny)
1868#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1869 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_SK2
1870#endif
1871 use pm_kind, only: SKG => SK2
1872 character(*,SKG) , intent(in), contiguous :: array(:)
1873 logical(LK) :: uniqueAny
1874 end function
1875#endif
1876
1877#if SK1_ENABLED
1878 PURE module function isUniqueAnyDefCom_D1_SK1(array) result(uniqueAny)
1879#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1880 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_SK1
1881#endif
1882 use pm_kind, only: SKG => SK1
1883 character(*,SKG) , intent(in), contiguous :: array(:)
1884 logical(LK) :: uniqueAny
1885 end function
1886#endif
1887
1888 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1889
1890#if IK5_ENABLED
1891 PURE module function isUniqueAnyDefCom_D1_IK5(array) result(uniqueAny)
1892#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1893 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_IK5
1894#endif
1895 use pm_kind, only: IKG => IK5
1896 integer(IKG) , intent(in), contiguous :: array(:)
1897 logical(LK) :: uniqueAny
1898 end function
1899#endif
1900
1901#if IK4_ENABLED
1902 PURE module function isUniqueAnyDefCom_D1_IK4(array) result(uniqueAny)
1903#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1904 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_IK4
1905#endif
1906 use pm_kind, only: IKG => IK4
1907 integer(IKG) , intent(in), contiguous :: array(:)
1908 logical(LK) :: uniqueAny
1909 end function
1910#endif
1911
1912#if IK3_ENABLED
1913 PURE module function isUniqueAnyDefCom_D1_IK3(array) result(uniqueAny)
1914#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1915 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_IK3
1916#endif
1917 use pm_kind, only: IKG => IK3
1918 integer(IKG) , intent(in), contiguous :: array(:)
1919 logical(LK) :: uniqueAny
1920 end function
1921#endif
1922
1923#if IK2_ENABLED
1924 PURE module function isUniqueAnyDefCom_D1_IK2(array) result(uniqueAny)
1925#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1926 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_IK2
1927#endif
1928 use pm_kind, only: IKG => IK2
1929 integer(IKG) , intent(in), contiguous :: array(:)
1930 logical(LK) :: uniqueAny
1931 end function
1932#endif
1933
1934#if IK1_ENABLED
1935 PURE module function isUniqueAnyDefCom_D1_IK1(array) result(uniqueAny)
1936#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1937 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_IK1
1938#endif
1939 use pm_kind, only: IKG => IK1
1940 integer(IKG) , intent(in), contiguous :: array(:)
1941 logical(LK) :: uniqueAny
1942 end function
1943#endif
1944
1945 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1946
1947#if LK5_ENABLED
1948 PURE module function isUniqueAnyDefCom_D1_LK5(array) result(uniqueAny)
1949#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1950 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_LK5
1951#endif
1952 use pm_kind, only: LKG => LK5
1953 logical(LKG) , intent(in), contiguous :: array(:)
1954 logical(LK) :: uniqueAny
1955 end function
1956#endif
1957
1958#if LK4_ENABLED
1959 PURE module function isUniqueAnyDefCom_D1_LK4(array) result(uniqueAny)
1960#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1961 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_LK4
1962#endif
1963 use pm_kind, only: LKG => LK4
1964 logical(LKG) , intent(in), contiguous :: array(:)
1965 logical(LK) :: uniqueAny
1966 end function
1967#endif
1968
1969#if LK3_ENABLED
1970 PURE module function isUniqueAnyDefCom_D1_LK3(array) result(uniqueAny)
1971#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1972 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_LK3
1973#endif
1974 use pm_kind, only: LKG => LK3
1975 logical(LKG) , intent(in), contiguous :: array(:)
1976 logical(LK) :: uniqueAny
1977 end function
1978#endif
1979
1980#if LK2_ENABLED
1981 PURE module function isUniqueAnyDefCom_D1_LK2(array) result(uniqueAny)
1982#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1983 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_LK2
1984#endif
1985 use pm_kind, only: LKG => LK2
1986 logical(LKG) , intent(in), contiguous :: array(:)
1987 logical(LK) :: uniqueAny
1988 end function
1989#endif
1990
1991#if LK1_ENABLED
1992 PURE module function isUniqueAnyDefCom_D1_LK1(array) result(uniqueAny)
1993#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1994 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_LK1
1995#endif
1996 use pm_kind, only: LKG => LK1
1997 logical(LKG) , intent(in), contiguous :: array(:)
1998 logical(LK) :: uniqueAny
1999 end function
2000#endif
2001
2002 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2003
2004#if CK5_ENABLED
2005 PURE module function isUniqueAnyDefCom_D1_CK5(array) result(uniqueAny)
2006#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2007 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_CK5
2008#endif
2009 use pm_kind, only: CKG => CK5
2010 complex(CKG) , intent(in), contiguous :: array(:)
2011 logical(LK) :: uniqueAny
2012 end function
2013#endif
2014
2015#if CK4_ENABLED
2016 PURE module function isUniqueAnyDefCom_D1_CK4(array) result(uniqueAny)
2017#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2018 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_CK4
2019#endif
2020 use pm_kind, only: CKG => CK4
2021 complex(CKG) , intent(in), contiguous :: array(:)
2022 logical(LK) :: uniqueAny
2023 end function
2024#endif
2025
2026#if CK3_ENABLED
2027 PURE module function isUniqueAnyDefCom_D1_CK3(array) result(uniqueAny)
2028#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2029 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_CK3
2030#endif
2031 use pm_kind, only: CKG => CK3
2032 complex(CKG) , intent(in), contiguous :: array(:)
2033 logical(LK) :: uniqueAny
2034 end function
2035#endif
2036
2037#if CK2_ENABLED
2038 PURE module function isUniqueAnyDefCom_D1_CK2(array) result(uniqueAny)
2039#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2040 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_CK2
2041#endif
2042 use pm_kind, only: CKG => CK2
2043 complex(CKG) , intent(in), contiguous :: array(:)
2044 logical(LK) :: uniqueAny
2045 end function
2046#endif
2047
2048#if CK1_ENABLED
2049 PURE module function isUniqueAnyDefCom_D1_CK1(array) result(uniqueAny)
2050#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2051 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_CK1
2052#endif
2053 use pm_kind, only: CKG => CK1
2054 complex(CKG) , intent(in), contiguous :: array(:)
2055 logical(LK) :: uniqueAny
2056 end function
2057#endif
2058
2059 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2060
2061#if RK5_ENABLED
2062 PURE module function isUniqueAnyDefCom_D1_RK5(array) result(uniqueAny)
2063#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2064 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_RK5
2065#endif
2066 use pm_kind, only: RKG => RK5
2067 real(RKG) , intent(in), contiguous :: array(:)
2068 logical(LK) :: uniqueAny
2069 end function
2070#endif
2071
2072#if RK4_ENABLED
2073 PURE module function isUniqueAnyDefCom_D1_RK4(array) result(uniqueAny)
2074#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2075 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_RK4
2076#endif
2077 use pm_kind, only: RKG => RK4
2078 real(RKG) , intent(in), contiguous :: array(:)
2079 logical(LK) :: uniqueAny
2080 end function
2081#endif
2082
2083#if RK3_ENABLED
2084 PURE module function isUniqueAnyDefCom_D1_RK3(array) result(uniqueAny)
2085#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2086 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_RK3
2087#endif
2088 use pm_kind, only: RKG => RK3
2089 real(RKG) , intent(in), contiguous :: array(:)
2090 logical(LK) :: uniqueAny
2091 end function
2092#endif
2093
2094#if RK2_ENABLED
2095 PURE module function isUniqueAnyDefCom_D1_RK2(array) result(uniqueAny)
2096#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2097 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_RK2
2098#endif
2099 use pm_kind, only: RKG => RK2
2100 real(RKG) , intent(in), contiguous :: array(:)
2101 logical(LK) :: uniqueAny
2102 end function
2103#endif
2104
2105#if RK1_ENABLED
2106 PURE module function isUniqueAnyDefCom_D1_RK1(array) result(uniqueAny)
2107#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2108 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyDefCom_D1_RK1
2109#endif
2110 use pm_kind, only: RKG => RK1
2111 real(RKG) , intent(in), contiguous :: array(:)
2112 logical(LK) :: uniqueAny
2113 end function
2114#endif
2115
2116 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2117 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2118 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2119
2120#if SK5_ENABLED
2121 module function isUniqueAnyCusCom_D0_SK5(array, iseq) result(uniqueAny)
2122#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2123 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D0_SK5
2124#endif
2125 use pm_kind, only: SKG => SK5
2126 character(*,SKG) , intent(in) :: array
2127 procedure(logical(LK)) :: iseq
2128 logical(LK) :: uniqueAny
2129 end function
2130#endif
2131
2132#if SK4_ENABLED
2133 module function isUniqueAnyCusCom_D0_SK4(array, iseq) result(uniqueAny)
2134#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2135 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D0_SK4
2136#endif
2137 use pm_kind, only: SKG => SK4
2138 character(*,SKG) , intent(in) :: array
2139 procedure(logical(LK)) :: iseq
2140 logical(LK) :: uniqueAny
2141 end function
2142#endif
2143
2144#if SK3_ENABLED
2145 module function isUniqueAnyCusCom_D0_SK3(array, iseq) result(uniqueAny)
2146#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2147 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D0_SK3
2148#endif
2149 use pm_kind, only: SKG => SK3
2150 character(*,SKG) , intent(in) :: array
2151 procedure(logical(LK)) :: iseq
2152 logical(LK) :: uniqueAny
2153 end function
2154#endif
2155
2156#if SK2_ENABLED
2157 module function isUniqueAnyCusCom_D0_SK2(array, iseq) result(uniqueAny)
2158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2159 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D0_SK2
2160#endif
2161 use pm_kind, only: SKG => SK2
2162 character(*,SKG) , intent(in) :: array
2163 procedure(logical(LK)) :: iseq
2164 logical(LK) :: uniqueAny
2165 end function
2166#endif
2167
2168#if SK1_ENABLED
2169 module function isUniqueAnyCusCom_D0_SK1(array, iseq) result(uniqueAny)
2170#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2171 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D0_SK1
2172#endif
2173 use pm_kind, only: SKG => SK1
2174 character(*,SKG) , intent(in) :: array
2175 procedure(logical(LK)) :: iseq
2176 logical(LK) :: uniqueAny
2177 end function
2178#endif
2179
2180 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2181
2182#if SK5_ENABLED
2183 module function isUniqueAnyCusCom_D1_SK5(array, iseq) result(uniqueAny)
2184#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2185 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_SK5
2186#endif
2187 use pm_kind, only: SKG => SK5
2188 character(*,SKG) , intent(in), contiguous :: array(:)
2189 procedure(logical(LK)) :: iseq
2190 logical(LK) :: uniqueAny
2191 end function
2192#endif
2193
2194#if SK4_ENABLED
2195 module function isUniqueAnyCusCom_D1_SK4(array, iseq) result(uniqueAny)
2196#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2197 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_SK4
2198#endif
2199 use pm_kind, only: SKG => SK4
2200 character(*,SKG) , intent(in), contiguous :: array(:)
2201 procedure(logical(LK)) :: iseq
2202 logical(LK) :: uniqueAny
2203 end function
2204#endif
2205
2206#if SK3_ENABLED
2207 module function isUniqueAnyCusCom_D1_SK3(array, iseq) result(uniqueAny)
2208#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2209 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_SK3
2210#endif
2211 use pm_kind, only: SKG => SK3
2212 character(*,SKG) , intent(in), contiguous :: array(:)
2213 procedure(logical(LK)) :: iseq
2214 logical(LK) :: uniqueAny
2215 end function
2216#endif
2217
2218#if SK2_ENABLED
2219 module function isUniqueAnyCusCom_D1_SK2(array, iseq) result(uniqueAny)
2220#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2221 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_SK2
2222#endif
2223 use pm_kind, only: SKG => SK2
2224 character(*,SKG) , intent(in), contiguous :: array(:)
2225 procedure(logical(LK)) :: iseq
2226 logical(LK) :: uniqueAny
2227 end function
2228#endif
2229
2230#if SK1_ENABLED
2231 module function isUniqueAnyCusCom_D1_SK1(array, iseq) result(uniqueAny)
2232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2233 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_SK1
2234#endif
2235 use pm_kind, only: SKG => SK1
2236 character(*,SKG) , intent(in), contiguous :: array(:)
2237 procedure(logical(LK)) :: iseq
2238 logical(LK) :: uniqueAny
2239 end function
2240#endif
2241
2242 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2243
2244#if IK5_ENABLED
2245 module function isUniqueAnyCusCom_D1_IK5(array, iseq) result(uniqueAny)
2246#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2247 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_IK5
2248#endif
2249 use pm_kind, only: IKG => IK5
2250 integer(IKG) , intent(in), contiguous :: array(:)
2251 procedure(logical(LK)) :: iseq
2252 logical(LK) :: uniqueAny
2253 end function
2254#endif
2255
2256#if IK4_ENABLED
2257 module function isUniqueAnyCusCom_D1_IK4(array, iseq) result(uniqueAny)
2258#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2259 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_IK4
2260#endif
2261 use pm_kind, only: IKG => IK4
2262 integer(IKG) , intent(in), contiguous :: array(:)
2263 procedure(logical(LK)) :: iseq
2264 logical(LK) :: uniqueAny
2265 end function
2266#endif
2267
2268#if IK3_ENABLED
2269 module function isUniqueAnyCusCom_D1_IK3(array, iseq) result(uniqueAny)
2270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2271 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_IK3
2272#endif
2273 use pm_kind, only: IKG => IK3
2274 integer(IKG) , intent(in), contiguous :: array(:)
2275 procedure(logical(LK)) :: iseq
2276 logical(LK) :: uniqueAny
2277 end function
2278#endif
2279
2280#if IK2_ENABLED
2281 module function isUniqueAnyCusCom_D1_IK2(array, iseq) result(uniqueAny)
2282#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2283 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_IK2
2284#endif
2285 use pm_kind, only: IKG => IK2
2286 integer(IKG) , intent(in), contiguous :: array(:)
2287 procedure(logical(LK)) :: iseq
2288 logical(LK) :: uniqueAny
2289 end function
2290#endif
2291
2292#if IK1_ENABLED
2293 module function isUniqueAnyCusCom_D1_IK1(array, iseq) result(uniqueAny)
2294#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2295 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_IK1
2296#endif
2297 use pm_kind, only: IKG => IK1
2298 integer(IKG) , intent(in), contiguous :: array(:)
2299 procedure(logical(LK)) :: iseq
2300 logical(LK) :: uniqueAny
2301 end function
2302#endif
2303
2304 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2305
2306#if LK5_ENABLED
2307 module function isUniqueAnyCusCom_D1_LK5(array, iseq) result(uniqueAny)
2308#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2309 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_LK5
2310#endif
2311 use pm_kind, only: LKG => LK5
2312 logical(LKG) , intent(in), contiguous :: array(:)
2313 procedure(logical(LK)) :: iseq
2314 logical(LK) :: uniqueAny
2315 end function
2316#endif
2317
2318#if LK4_ENABLED
2319 module function isUniqueAnyCusCom_D1_LK4(array, iseq) result(uniqueAny)
2320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2321 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_LK4
2322#endif
2323 use pm_kind, only: LKG => LK4
2324 logical(LKG) , intent(in), contiguous :: array(:)
2325 procedure(logical(LK)) :: iseq
2326 logical(LK) :: uniqueAny
2327 end function
2328#endif
2329
2330#if LK3_ENABLED
2331 module function isUniqueAnyCusCom_D1_LK3(array, iseq) result(uniqueAny)
2332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2333 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_LK3
2334#endif
2335 use pm_kind, only: LKG => LK3
2336 logical(LKG) , intent(in), contiguous :: array(:)
2337 procedure(logical(LK)) :: iseq
2338 logical(LK) :: uniqueAny
2339 end function
2340#endif
2341
2342#if LK2_ENABLED
2343 module function isUniqueAnyCusCom_D1_LK2(array, iseq) result(uniqueAny)
2344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2345 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_LK2
2346#endif
2347 use pm_kind, only: LKG => LK2
2348 logical(LKG) , intent(in), contiguous :: array(:)
2349 procedure(logical(LK)) :: iseq
2350 logical(LK) :: uniqueAny
2351 end function
2352#endif
2353
2354#if LK1_ENABLED
2355 module function isUniqueAnyCusCom_D1_LK1(array, iseq) result(uniqueAny)
2356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2357 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_LK1
2358#endif
2359 use pm_kind, only: LKG => LK1
2360 logical(LKG) , intent(in), contiguous :: array(:)
2361 procedure(logical(LK)) :: iseq
2362 logical(LK) :: uniqueAny
2363 end function
2364#endif
2365
2366 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2367
2368#if CK5_ENABLED
2369 module function isUniqueAnyCusCom_D1_CK5(array, iseq) result(uniqueAny)
2370#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2371 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_CK5
2372#endif
2373 use pm_kind, only: CKG => CK5
2374 complex(CKG) , intent(in), contiguous :: array(:)
2375 procedure(logical(LK)) :: iseq
2376 logical(LK) :: uniqueAny
2377 end function
2378#endif
2379
2380#if CK4_ENABLED
2381 module function isUniqueAnyCusCom_D1_CK4(array, iseq) result(uniqueAny)
2382#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2383 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_CK4
2384#endif
2385 use pm_kind, only: CKG => CK4
2386 complex(CKG) , intent(in), contiguous :: array(:)
2387 procedure(logical(LK)) :: iseq
2388 logical(LK) :: uniqueAny
2389 end function
2390#endif
2391
2392#if CK3_ENABLED
2393 module function isUniqueAnyCusCom_D1_CK3(array, iseq) result(uniqueAny)
2394#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2395 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_CK3
2396#endif
2397 use pm_kind, only: CKG => CK3
2398 complex(CKG) , intent(in), contiguous :: array(:)
2399 procedure(logical(LK)) :: iseq
2400 logical(LK) :: uniqueAny
2401 end function
2402#endif
2403
2404#if CK2_ENABLED
2405 module function isUniqueAnyCusCom_D1_CK2(array, iseq) result(uniqueAny)
2406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2407 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_CK2
2408#endif
2409 use pm_kind, only: CKG => CK2
2410 complex(CKG) , intent(in), contiguous :: array(:)
2411 procedure(logical(LK)) :: iseq
2412 logical(LK) :: uniqueAny
2413 end function
2414#endif
2415
2416#if CK1_ENABLED
2417 module function isUniqueAnyCusCom_D1_CK1(array, iseq) result(uniqueAny)
2418#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2419 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_CK1
2420#endif
2421 use pm_kind, only: CKG => CK1
2422 complex(CKG) , intent(in), contiguous :: array(:)
2423 procedure(logical(LK)) :: iseq
2424 logical(LK) :: uniqueAny
2425 end function
2426#endif
2427
2428 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2429
2430#if RK5_ENABLED
2431 module function isUniqueAnyCusCom_D1_RK5(array, iseq) result(uniqueAny)
2432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2433 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_RK5
2434#endif
2435 use pm_kind, only: RKG => RK5
2436 real(RKG) , intent(in), contiguous :: array(:)
2437 procedure(logical(LK)) :: iseq
2438 logical(LK) :: uniqueAny
2439 end function
2440#endif
2441
2442#if RK4_ENABLED
2443 module function isUniqueAnyCusCom_D1_RK4(array, iseq) result(uniqueAny)
2444#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2445 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_RK4
2446#endif
2447 use pm_kind, only: RKG => RK4
2448 real(RKG) , intent(in), contiguous :: array(:)
2449 procedure(logical(LK)) :: iseq
2450 logical(LK) :: uniqueAny
2451 end function
2452#endif
2453
2454#if RK3_ENABLED
2455 module function isUniqueAnyCusCom_D1_RK3(array, iseq) result(uniqueAny)
2456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2457 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_RK3
2458#endif
2459 use pm_kind, only: RKG => RK3
2460 real(RKG) , intent(in), contiguous :: array(:)
2461 procedure(logical(LK)) :: iseq
2462 logical(LK) :: uniqueAny
2463 end function
2464#endif
2465
2466#if RK2_ENABLED
2467 module function isUniqueAnyCusCom_D1_RK2(array, iseq) result(uniqueAny)
2468#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2469 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_RK2
2470#endif
2471 use pm_kind, only: RKG => RK2
2472 real(RKG) , intent(in), contiguous :: array(:)
2473 procedure(logical(LK)) :: iseq
2474 logical(LK) :: uniqueAny
2475 end function
2476#endif
2477
2478#if RK1_ENABLED
2479 module function isUniqueAnyCusCom_D1_RK1(array, iseq) result(uniqueAny)
2480#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2481 !DEC$ ATTRIBUTES DLLEXPORT :: isUniqueAnyCusCom_D1_RK1
2482#endif
2483 use pm_kind, only: RKG => RK1
2484 real(RKG) , intent(in), contiguous :: array(:)
2485 procedure(logical(LK)) :: iseq
2486 logical(LK) :: uniqueAny
2487 end function
2488#endif
2489
2490 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2491 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2492 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2493
2494 end interface isUniqueAny
2495
2496!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2497
2682 interface getUnique
2683
2684 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2685 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2686 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2687
2688#if SK5_ENABLED
2689 PURE module function getUniArbDefCom_D0_SK5(array) result(unique)
2690#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2691 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D0_SK5
2692#endif
2693 use pm_kind, only: SKG => SK5
2694 character(*,SKG) , intent(in) :: array
2695 character(:,SKG) , allocatable :: unique
2696 end function
2697#endif
2698
2699#if SK4_ENABLED
2700 PURE module function getUniArbDefCom_D0_SK4(array) result(unique)
2701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2702 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D0_SK4
2703#endif
2704 use pm_kind, only: SKG => SK4
2705 character(*,SKG) , intent(in) :: array
2706 character(:,SKG) , allocatable :: unique
2707 end function
2708#endif
2709
2710#if SK3_ENABLED
2711 PURE module function getUniArbDefCom_D0_SK3(array) result(unique)
2712#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2713 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D0_SK3
2714#endif
2715 use pm_kind, only: SKG => SK3
2716 character(*,SKG) , intent(in) :: array
2717 character(:,SKG) , allocatable :: unique
2718 end function
2719#endif
2720
2721#if SK2_ENABLED
2722 PURE module function getUniArbDefCom_D0_SK2(array) result(unique)
2723#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2724 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D0_SK2
2725#endif
2726 use pm_kind, only: SKG => SK2
2727 character(*,SKG) , intent(in) :: array
2728 character(:,SKG) , allocatable :: unique
2729 end function
2730#endif
2731
2732#if SK1_ENABLED
2733 PURE module function getUniArbDefCom_D0_SK1(array) result(unique)
2734#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2735 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D0_SK1
2736#endif
2737 use pm_kind, only: SKG => SK1
2738 character(*,SKG) , intent(in) :: array
2739 character(:,SKG) , allocatable :: unique
2740 end function
2741#endif
2742
2743 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2744
2745#if SK5_ENABLED
2746 PURE module function getUniArbDefCom_D1_SK5(array) result(unique)
2747#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2748 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_SK5
2749#endif
2750 use pm_kind, only: SKG => SK5
2751 character(*,SKG) , intent(in), contiguous :: array(:)
2752 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
2753 end function
2754#endif
2755
2756#if SK4_ENABLED
2757 PURE module function getUniArbDefCom_D1_SK4(array) result(unique)
2758#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2759 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_SK4
2760#endif
2761 use pm_kind, only: SKG => SK4
2762 character(*,SKG) , intent(in), contiguous :: array(:)
2763 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
2764 end function
2765#endif
2766
2767#if SK3_ENABLED
2768 PURE module function getUniArbDefCom_D1_SK3(array) result(unique)
2769#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2770 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_SK3
2771#endif
2772 use pm_kind, only: SKG => SK3
2773 character(*,SKG) , intent(in), contiguous :: array(:)
2774 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
2775 end function
2776#endif
2777
2778#if SK2_ENABLED
2779 PURE module function getUniArbDefCom_D1_SK2(array) result(unique)
2780#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2781 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_SK2
2782#endif
2783 use pm_kind, only: SKG => SK2
2784 character(*,SKG) , intent(in), contiguous :: array(:)
2785 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
2786 end function
2787#endif
2788
2789#if SK1_ENABLED
2790 PURE module function getUniArbDefCom_D1_SK1(array) result(unique)
2791#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2792 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_SK1
2793#endif
2794 use pm_kind, only: SKG => SK1
2795 character(*,SKG) , intent(in), contiguous :: array(:)
2796 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
2797 end function
2798#endif
2799
2800 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2801
2802#if IK5_ENABLED
2803 PURE module function getUniArbDefCom_D1_IK5(array) result(unique)
2804#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2805 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_IK5
2806#endif
2807 use pm_kind, only: IKG => IK5
2808 integer(IKG) , intent(in), contiguous :: array(:)
2809 integer(IKG) , allocatable :: unique(:)
2810 end function
2811#endif
2812
2813#if IK4_ENABLED
2814 PURE module function getUniArbDefCom_D1_IK4(array) result(unique)
2815#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2816 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_IK4
2817#endif
2818 use pm_kind, only: IKG => IK4
2819 integer(IKG) , intent(in), contiguous :: array(:)
2820 integer(IKG) , allocatable :: unique(:)
2821 end function
2822#endif
2823
2824#if IK3_ENABLED
2825 PURE module function getUniArbDefCom_D1_IK3(array) result(unique)
2826#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2827 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_IK3
2828#endif
2829 use pm_kind, only: IKG => IK3
2830 integer(IKG) , intent(in), contiguous :: array(:)
2831 integer(IKG) , allocatable :: unique(:)
2832 end function
2833#endif
2834
2835#if IK2_ENABLED
2836 PURE module function getUniArbDefCom_D1_IK2(array) result(unique)
2837#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2838 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_IK2
2839#endif
2840 use pm_kind, only: IKG => IK2
2841 integer(IKG) , intent(in), contiguous :: array(:)
2842 integer(IKG) , allocatable :: unique(:)
2843 end function
2844#endif
2845
2846#if IK1_ENABLED
2847 PURE module function getUniArbDefCom_D1_IK1(array) result(unique)
2848#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2849 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_IK1
2850#endif
2851 use pm_kind, only: IKG => IK1
2852 integer(IKG) , intent(in), contiguous :: array(:)
2853 integer(IKG) , allocatable :: unique(:)
2854 end function
2855#endif
2856
2857 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2858
2859#if LK5_ENABLED
2860 PURE module function getUniArbDefCom_D1_LK5(array) result(unique)
2861#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2862 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_LK5
2863#endif
2864 use pm_kind, only: LKG => LK5
2865 logical(LKG) , intent(in), contiguous :: array(:)
2866 logical(LKG) , allocatable :: unique(:)
2867 end function
2868#endif
2869
2870#if LK4_ENABLED
2871 PURE module function getUniArbDefCom_D1_LK4(array) result(unique)
2872#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2873 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_LK4
2874#endif
2875 use pm_kind, only: LKG => LK4
2876 logical(LKG) , intent(in), contiguous :: array(:)
2877 logical(LKG) , allocatable :: unique(:)
2878 end function
2879#endif
2880
2881#if LK3_ENABLED
2882 PURE module function getUniArbDefCom_D1_LK3(array) result(unique)
2883#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2884 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_LK3
2885#endif
2886 use pm_kind, only: LKG => LK3
2887 logical(LKG) , intent(in), contiguous :: array(:)
2888 logical(LKG) , allocatable :: unique(:)
2889 end function
2890#endif
2891
2892#if LK2_ENABLED
2893 PURE module function getUniArbDefCom_D1_LK2(array) result(unique)
2894#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2895 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_LK2
2896#endif
2897 use pm_kind, only: LKG => LK2
2898 logical(LKG) , intent(in), contiguous :: array(:)
2899 logical(LKG) , allocatable :: unique(:)
2900 end function
2901#endif
2902
2903#if LK1_ENABLED
2904 PURE module function getUniArbDefCom_D1_LK1(array) result(unique)
2905#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2906 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_LK1
2907#endif
2908 use pm_kind, only: LKG => LK1
2909 logical(LKG) , intent(in), contiguous :: array(:)
2910 logical(LKG) , allocatable :: unique(:)
2911 end function
2912#endif
2913
2914 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2915
2916#if CK5_ENABLED
2917 PURE module function getUniArbDefCom_D1_CK5(array) result(unique)
2918#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2919 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_CK5
2920#endif
2921 use pm_kind, only: CKG => CK5
2922 complex(CKG) , intent(in), contiguous :: array(:)
2923 complex(CKG) , allocatable :: unique(:)
2924 end function
2925#endif
2926
2927#if CK4_ENABLED
2928 PURE module function getUniArbDefCom_D1_CK4(array) result(unique)
2929#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2930 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_CK4
2931#endif
2932 use pm_kind, only: CKG => CK4
2933 complex(CKG) , intent(in), contiguous :: array(:)
2934 complex(CKG) , allocatable :: unique(:)
2935 end function
2936#endif
2937
2938#if CK3_ENABLED
2939 PURE module function getUniArbDefCom_D1_CK3(array) result(unique)
2940#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2941 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_CK3
2942#endif
2943 use pm_kind, only: CKG => CK3
2944 complex(CKG) , intent(in), contiguous :: array(:)
2945 complex(CKG) , allocatable :: unique(:)
2946 end function
2947#endif
2948
2949#if CK2_ENABLED
2950 PURE module function getUniArbDefCom_D1_CK2(array) result(unique)
2951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2952 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_CK2
2953#endif
2954 use pm_kind, only: CKG => CK2
2955 complex(CKG) , intent(in), contiguous :: array(:)
2956 complex(CKG) , allocatable :: unique(:)
2957 end function
2958#endif
2959
2960#if CK1_ENABLED
2961 PURE module function getUniArbDefCom_D1_CK1(array) result(unique)
2962#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2963 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_CK1
2964#endif
2965 use pm_kind, only: CKG => CK1
2966 complex(CKG) , intent(in), contiguous :: array(:)
2967 complex(CKG) , allocatable :: unique(:)
2968 end function
2969#endif
2970
2971 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2972
2973#if RK5_ENABLED
2974 PURE module function getUniArbDefCom_D1_RK5(array) result(unique)
2975#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2976 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_RK5
2977#endif
2978 use pm_kind, only: RKG => RK5
2979 real(RKG) , intent(in), contiguous :: array(:)
2980 real(RKG) , allocatable :: unique(:)
2981 end function
2982#endif
2983
2984#if RK4_ENABLED
2985 PURE module function getUniArbDefCom_D1_RK4(array) result(unique)
2986#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2987 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_RK4
2988#endif
2989 use pm_kind, only: RKG => RK4
2990 real(RKG) , intent(in), contiguous :: array(:)
2991 real(RKG) , allocatable :: unique(:)
2992 end function
2993#endif
2994
2995#if RK3_ENABLED
2996 PURE module function getUniArbDefCom_D1_RK3(array) result(unique)
2997#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2998 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_RK3
2999#endif
3000 use pm_kind, only: RKG => RK3
3001 real(RKG) , intent(in), contiguous :: array(:)
3002 real(RKG) , allocatable :: unique(:)
3003 end function
3004#endif
3005
3006#if RK2_ENABLED
3007 PURE module function getUniArbDefCom_D1_RK2(array) result(unique)
3008#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3009 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_RK2
3010#endif
3011 use pm_kind, only: RKG => RK2
3012 real(RKG) , intent(in), contiguous :: array(:)
3013 real(RKG) , allocatable :: unique(:)
3014 end function
3015#endif
3016
3017#if RK1_ENABLED
3018 PURE module function getUniArbDefCom_D1_RK1(array) result(unique)
3019#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3020 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbDefCom_D1_RK1
3021#endif
3022 use pm_kind, only: RKG => RK1
3023 real(RKG) , intent(in), contiguous :: array(:)
3024 real(RKG) , allocatable :: unique(:)
3025 end function
3026#endif
3027
3028 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3029 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3030 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3031
3032#if SK5_ENABLED
3033 module function getUniArbCusCom_D0_SK5(array, iseq) result(unique)
3034#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3035 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D0_SK5
3036#endif
3037 use pm_kind, only: SKG => SK5
3038 character(*,SKG) , intent(in) :: array
3039 procedure(logical(LK)) :: iseq
3040 character(:,SKG) , allocatable :: unique
3041 end function
3042#endif
3043
3044#if SK4_ENABLED
3045 module function getUniArbCusCom_D0_SK4(array, iseq) result(unique)
3046#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3047 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D0_SK4
3048#endif
3049 use pm_kind, only: SKG => SK4
3050 character(*,SKG) , intent(in) :: array
3051 procedure(logical(LK)) :: iseq
3052 character(:,SKG) , allocatable :: unique
3053 end function
3054#endif
3055
3056#if SK3_ENABLED
3057 module function getUniArbCusCom_D0_SK3(array, iseq) result(unique)
3058#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3059 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D0_SK3
3060#endif
3061 use pm_kind, only: SKG => SK3
3062 character(*,SKG) , intent(in) :: array
3063 procedure(logical(LK)) :: iseq
3064 character(:,SKG) , allocatable :: unique
3065 end function
3066#endif
3067
3068#if SK2_ENABLED
3069 module function getUniArbCusCom_D0_SK2(array, iseq) result(unique)
3070#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3071 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D0_SK2
3072#endif
3073 use pm_kind, only: SKG => SK2
3074 character(*,SKG) , intent(in) :: array
3075 procedure(logical(LK)) :: iseq
3076 character(:,SKG) , allocatable :: unique
3077 end function
3078#endif
3079
3080#if SK1_ENABLED
3081 module function getUniArbCusCom_D0_SK1(array, iseq) result(unique)
3082#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3083 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D0_SK1
3084#endif
3085 use pm_kind, only: SKG => SK1
3086 character(*,SKG) , intent(in) :: array
3087 procedure(logical(LK)) :: iseq
3088 character(:,SKG) , allocatable :: unique
3089 end function
3090#endif
3091
3092 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3093
3094#if SK5_ENABLED
3095 module function getUniArbCusCom_D1_SK5(array, iseq) result(unique)
3096#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3097 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_SK5
3098#endif
3099 use pm_kind, only: SKG => SK5
3100 character(*,SKG) , intent(in), contiguous :: array(:)
3101 procedure(logical(LK)) :: iseq
3102 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
3103 end function
3104#endif
3105
3106#if SK4_ENABLED
3107 module function getUniArbCusCom_D1_SK4(array, iseq) result(unique)
3108#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3109 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_SK4
3110#endif
3111 use pm_kind, only: SKG => SK4
3112 character(*,SKG) , intent(in), contiguous :: array(:)
3113 procedure(logical(LK)) :: iseq
3114 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
3115 end function
3116#endif
3117
3118#if SK3_ENABLED
3119 module function getUniArbCusCom_D1_SK3(array, iseq) result(unique)
3120#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3121 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_SK3
3122#endif
3123 use pm_kind, only: SKG => SK3
3124 character(*,SKG) , intent(in), contiguous :: array(:)
3125 procedure(logical(LK)) :: iseq
3126 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
3127 end function
3128#endif
3129
3130#if SK2_ENABLED
3131 module function getUniArbCusCom_D1_SK2(array, iseq) result(unique)
3132#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3133 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_SK2
3134#endif
3135 use pm_kind, only: SKG => SK2
3136 character(*,SKG) , intent(in), contiguous :: array(:)
3137 procedure(logical(LK)) :: iseq
3138 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
3139 end function
3140#endif
3141
3142#if SK1_ENABLED
3143 module function getUniArbCusCom_D1_SK1(array, iseq) result(unique)
3144#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3145 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_SK1
3146#endif
3147 use pm_kind, only: SKG => SK1
3148 character(*,SKG) , intent(in), contiguous :: array(:)
3149 procedure(logical(LK)) :: iseq
3150 character(LEN_ARRAY,SKG) , allocatable :: unique(:)
3151 end function
3152#endif
3153
3154 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3155
3156#if IK5_ENABLED
3157 module function getUniArbCusCom_D1_IK5(array, iseq) result(unique)
3158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3159 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_IK5
3160#endif
3161 use pm_kind, only: IKG => IK5
3162 integer(IKG) , intent(in), contiguous :: array(:)
3163 procedure(logical(LK)) :: iseq
3164 integer(IKG) , allocatable :: unique(:)
3165 end function
3166#endif
3167
3168#if IK4_ENABLED
3169 module function getUniArbCusCom_D1_IK4(array, iseq) result(unique)
3170#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3171 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_IK4
3172#endif
3173 use pm_kind, only: IKG => IK4
3174 integer(IKG) , intent(in), contiguous :: array(:)
3175 procedure(logical(LK)) :: iseq
3176 integer(IKG) , allocatable :: unique(:)
3177 end function
3178#endif
3179
3180#if IK3_ENABLED
3181 module function getUniArbCusCom_D1_IK3(array, iseq) result(unique)
3182#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3183 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_IK3
3184#endif
3185 use pm_kind, only: IKG => IK3
3186 integer(IKG) , intent(in), contiguous :: array(:)
3187 procedure(logical(LK)) :: iseq
3188 integer(IKG) , allocatable :: unique(:)
3189 end function
3190#endif
3191
3192#if IK2_ENABLED
3193 module function getUniArbCusCom_D1_IK2(array, iseq) result(unique)
3194#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3195 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_IK2
3196#endif
3197 use pm_kind, only: IKG => IK2
3198 integer(IKG) , intent(in), contiguous :: array(:)
3199 procedure(logical(LK)) :: iseq
3200 integer(IKG) , allocatable :: unique(:)
3201 end function
3202#endif
3203
3204#if IK1_ENABLED
3205 module function getUniArbCusCom_D1_IK1(array, iseq) result(unique)
3206#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3207 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_IK1
3208#endif
3209 use pm_kind, only: IKG => IK1
3210 integer(IKG) , intent(in), contiguous :: array(:)
3211 procedure(logical(LK)) :: iseq
3212 integer(IKG) , allocatable :: unique(:)
3213 end function
3214#endif
3215
3216 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3217
3218#if LK5_ENABLED
3219 module function getUniArbCusCom_D1_LK5(array, iseq) result(unique)
3220#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3221 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_LK5
3222#endif
3223 use pm_kind, only: LKG => LK5
3224 logical(LKG) , intent(in), contiguous :: array(:)
3225 procedure(logical(LK)) :: iseq
3226 logical(LKG) , allocatable :: unique(:)
3227 end function
3228#endif
3229
3230#if LK4_ENABLED
3231 module function getUniArbCusCom_D1_LK4(array, iseq) result(unique)
3232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3233 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_LK4
3234#endif
3235 use pm_kind, only: LKG => LK4
3236 logical(LKG) , intent(in), contiguous :: array(:)
3237 procedure(logical(LK)) :: iseq
3238 logical(LKG) , allocatable :: unique(:)
3239 end function
3240#endif
3241
3242#if LK3_ENABLED
3243 module function getUniArbCusCom_D1_LK3(array, iseq) result(unique)
3244#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3245 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_LK3
3246#endif
3247 use pm_kind, only: LKG => LK3
3248 logical(LKG) , intent(in), contiguous :: array(:)
3249 procedure(logical(LK)) :: iseq
3250 logical(LKG) , allocatable :: unique(:)
3251 end function
3252#endif
3253
3254#if LK2_ENABLED
3255 module function getUniArbCusCom_D1_LK2(array, iseq) result(unique)
3256#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3257 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_LK2
3258#endif
3259 use pm_kind, only: LKG => LK2
3260 logical(LKG) , intent(in), contiguous :: array(:)
3261 procedure(logical(LK)) :: iseq
3262 logical(LKG) , allocatable :: unique(:)
3263 end function
3264#endif
3265
3266#if LK1_ENABLED
3267 module function getUniArbCusCom_D1_LK1(array, iseq) result(unique)
3268#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3269 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_LK1
3270#endif
3271 use pm_kind, only: LKG => LK1
3272 logical(LKG) , intent(in), contiguous :: array(:)
3273 procedure(logical(LK)) :: iseq
3274 logical(LKG) , allocatable :: unique(:)
3275 end function
3276#endif
3277
3278 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3279
3280#if CK5_ENABLED
3281 module function getUniArbCusCom_D1_CK5(array, iseq) result(unique)
3282#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3283 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_CK5
3284#endif
3285 use pm_kind, only: CKG => CK5
3286 complex(CKG) , intent(in), contiguous :: array(:)
3287 procedure(logical(LK)) :: iseq
3288 complex(CKG) , allocatable :: unique(:)
3289 end function
3290#endif
3291
3292#if CK4_ENABLED
3293 module function getUniArbCusCom_D1_CK4(array, iseq) result(unique)
3294#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3295 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_CK4
3296#endif
3297 use pm_kind, only: CKG => CK4
3298 complex(CKG) , intent(in), contiguous :: array(:)
3299 procedure(logical(LK)) :: iseq
3300 complex(CKG) , allocatable :: unique(:)
3301 end function
3302#endif
3303
3304#if CK3_ENABLED
3305 module function getUniArbCusCom_D1_CK3(array, iseq) result(unique)
3306#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3307 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_CK3
3308#endif
3309 use pm_kind, only: CKG => CK3
3310 complex(CKG) , intent(in), contiguous :: array(:)
3311 procedure(logical(LK)) :: iseq
3312 complex(CKG) , allocatable :: unique(:)
3313 end function
3314#endif
3315
3316#if CK2_ENABLED
3317 module function getUniArbCusCom_D1_CK2(array, iseq) result(unique)
3318#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3319 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_CK2
3320#endif
3321 use pm_kind, only: CKG => CK2
3322 complex(CKG) , intent(in), contiguous :: array(:)
3323 procedure(logical(LK)) :: iseq
3324 complex(CKG) , allocatable :: unique(:)
3325 end function
3326#endif
3327
3328#if CK1_ENABLED
3329 module function getUniArbCusCom_D1_CK1(array, iseq) result(unique)
3330#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3331 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_CK1
3332#endif
3333 use pm_kind, only: CKG => CK1
3334 complex(CKG) , intent(in), contiguous :: array(:)
3335 procedure(logical(LK)) :: iseq
3336 complex(CKG) , allocatable :: unique(:)
3337 end function
3338#endif
3339
3340 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3341
3342#if RK5_ENABLED
3343 module function getUniArbCusCom_D1_RK5(array, iseq) result(unique)
3344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3345 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_RK5
3346#endif
3347 use pm_kind, only: RKG => RK5
3348 real(RKG) , intent(in), contiguous :: array(:)
3349 procedure(logical(LK)) :: iseq
3350 real(RKG) , allocatable :: unique(:)
3351 end function
3352#endif
3353
3354#if RK4_ENABLED
3355 module function getUniArbCusCom_D1_RK4(array, iseq) result(unique)
3356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3357 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_RK4
3358#endif
3359 use pm_kind, only: RKG => RK4
3360 real(RKG) , intent(in), contiguous :: array(:)
3361 procedure(logical(LK)) :: iseq
3362 real(RKG) , allocatable :: unique(:)
3363 end function
3364#endif
3365
3366#if RK3_ENABLED
3367 module function getUniArbCusCom_D1_RK3(array, iseq) result(unique)
3368#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3369 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_RK3
3370#endif
3371 use pm_kind, only: RKG => RK3
3372 real(RKG) , intent(in), contiguous :: array(:)
3373 procedure(logical(LK)) :: iseq
3374 real(RKG) , allocatable :: unique(:)
3375 end function
3376#endif
3377
3378#if RK2_ENABLED
3379 module function getUniArbCusCom_D1_RK2(array, iseq) result(unique)
3380#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3381 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_RK2
3382#endif
3383 use pm_kind, only: RKG => RK2
3384 real(RKG) , intent(in), contiguous :: array(:)
3385 procedure(logical(LK)) :: iseq
3386 real(RKG) , allocatable :: unique(:)
3387 end function
3388#endif
3389
3390#if RK1_ENABLED
3391 module function getUniArbCusCom_D1_RK1(array, iseq) result(unique)
3392#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3393 !DEC$ ATTRIBUTES DLLEXPORT :: getUniArbCusCom_D1_RK1
3394#endif
3395 use pm_kind, only: RKG => RK1
3396 real(RKG) , intent(in), contiguous :: array(:)
3397 procedure(logical(LK)) :: iseq
3398 real(RKG) , allocatable :: unique(:)
3399 end function
3400#endif
3401
3402 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3403 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3404 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3405
3406 end interface getUnique
3407
3408!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3409
3550 interface setUnique
3551
3552 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3553 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3554 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3555 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3556 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3557 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3558
3559 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3560
3561#if SK5_ENABLED
3562 PURE module subroutine setUniArbDefCom_D0_SK5(array, unique, count, index, order)
3563#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3564 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D0_SK5
3565#endif
3566 use pm_kind, only: SKG => SK5
3567 character(*,SKG) , intent(in) :: array
3568 character(:,SKG) , intent(out) , allocatable :: unique
3569 integer(IK) , intent(out) , allocatable :: count(:)
3570 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3571 integer(IK) , intent(in) , optional :: order
3572 end subroutine
3573#endif
3574
3575#if SK4_ENABLED
3576 PURE module subroutine setUniArbDefCom_D0_SK4(array, unique, count, index, order)
3577#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3578 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D0_SK4
3579#endif
3580 use pm_kind, only: SKG => SK4
3581 character(*,SKG) , intent(in) :: array
3582 character(:,SKG) , intent(out) , allocatable :: unique
3583 integer(IK) , intent(out) , allocatable :: count(:)
3584 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3585 integer(IK) , intent(in) , optional :: order
3586 end subroutine
3587#endif
3588
3589#if SK3_ENABLED
3590 PURE module subroutine setUniArbDefCom_D0_SK3(array, unique, count, index, order)
3591#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3592 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D0_SK3
3593#endif
3594 use pm_kind, only: SKG => SK3
3595 character(*,SKG) , intent(in) :: array
3596 character(:,SKG) , intent(out) , allocatable :: unique
3597 integer(IK) , intent(out) , allocatable :: count(:)
3598 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3599 integer(IK) , intent(in) , optional :: order
3600 end subroutine
3601#endif
3602
3603#if SK2_ENABLED
3604 PURE module subroutine setUniArbDefCom_D0_SK2(array, unique, count, index, order)
3605#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3606 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D0_SK2
3607#endif
3608 use pm_kind, only: SKG => SK2
3609 character(*,SKG) , intent(in) :: array
3610 character(:,SKG) , intent(out) , allocatable :: unique
3611 integer(IK) , intent(out) , allocatable :: count(:)
3612 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3613 integer(IK) , intent(in) , optional :: order
3614 end subroutine
3615#endif
3616
3617#if SK1_ENABLED
3618 PURE module subroutine setUniArbDefCom_D0_SK1(array, unique, count, index, order)
3619#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3620 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D0_SK1
3621#endif
3622 use pm_kind, only: SKG => SK1
3623 character(*,SKG) , intent(in) :: array
3624 character(:,SKG) , intent(out) , allocatable :: unique
3625 integer(IK) , intent(out) , allocatable :: count(:)
3626 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3627 integer(IK) , intent(in) , optional :: order
3628 end subroutine
3629#endif
3630
3631 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3632
3633#if SK5_ENABLED
3634 PURE module subroutine setUniArbDefCom_D1_SK5(array, unique, count, index, order)
3635#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3636 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_SK5
3637#endif
3638 use pm_kind, only: SKG => SK5
3639 character(*,SKG) , intent(in) , contiguous :: array(:)
3640 character(*,SKG) , intent(out) , allocatable :: unique(:)
3641 integer(IK) , intent(out) , allocatable :: count(:)
3642 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3643 integer(IK) , intent(in) , optional :: order
3644 end subroutine
3645#endif
3646
3647#if SK4_ENABLED
3648 PURE module subroutine setUniArbDefCom_D1_SK4(array, unique, count, index, order)
3649#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3650 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_SK4
3651#endif
3652 use pm_kind, only: SKG => SK4
3653 character(*,SKG) , intent(in) , contiguous :: array(:)
3654 character(*,SKG) , intent(out) , allocatable :: unique(:)
3655 integer(IK) , intent(out) , allocatable :: count(:)
3656 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3657 integer(IK) , intent(in) , optional :: order
3658 end subroutine
3659#endif
3660
3661#if SK3_ENABLED
3662 PURE module subroutine setUniArbDefCom_D1_SK3(array, unique, count, index, order)
3663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3664 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_SK3
3665#endif
3666 use pm_kind, only: SKG => SK3
3667 character(*,SKG) , intent(in) , contiguous :: array(:)
3668 character(*,SKG) , intent(out) , allocatable :: unique(:)
3669 integer(IK) , intent(out) , allocatable :: count(:)
3670 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3671 integer(IK) , intent(in) , optional :: order
3672 end subroutine
3673#endif
3674
3675#if SK2_ENABLED
3676 PURE module subroutine setUniArbDefCom_D1_SK2(array, unique, count, index, order)
3677#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3678 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_SK2
3679#endif
3680 use pm_kind, only: SKG => SK2
3681 character(*,SKG) , intent(in) , contiguous :: array(:)
3682 character(*,SKG) , intent(out) , allocatable :: unique(:)
3683 integer(IK) , intent(out) , allocatable :: count(:)
3684 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3685 integer(IK) , intent(in) , optional :: order
3686 end subroutine
3687#endif
3688
3689#if SK1_ENABLED
3690 PURE module subroutine setUniArbDefCom_D1_SK1(array, unique, count, index, order)
3691#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3692 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_SK1
3693#endif
3694 use pm_kind, only: SKG => SK1
3695 character(*,SKG) , intent(in) , contiguous :: array(:)
3696 character(*,SKG) , intent(out) , allocatable :: unique(:)
3697 integer(IK) , intent(out) , allocatable :: count(:)
3698 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3699 integer(IK) , intent(in) , optional :: order
3700 end subroutine
3701#endif
3702
3703 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3704
3705#if IK5_ENABLED
3706 PURE module subroutine setUniArbDefCom_D1_IK5(array, unique, count, index, order)
3707#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3708 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_IK5
3709#endif
3710 use pm_kind, only: IKG => IK5
3711 integer(IKG) , intent(in) , contiguous :: array(:)
3712 integer(IKG) , intent(out) , allocatable :: unique(:)
3713 integer(IK) , intent(out) , allocatable :: count(:)
3714 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3715 integer(IK) , intent(in) , optional :: order
3716 end subroutine
3717#endif
3718
3719#if IK4_ENABLED
3720 PURE module subroutine setUniArbDefCom_D1_IK4(array, unique, count, index, order)
3721#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3722 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_IK4
3723#endif
3724 use pm_kind, only: IKG => IK4
3725 integer(IKG) , intent(in) , contiguous :: array(:)
3726 integer(IKG) , intent(out) , allocatable :: unique(:)
3727 integer(IK) , intent(out) , allocatable :: count(:)
3728 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3729 integer(IK) , intent(in) , optional :: order
3730 end subroutine
3731#endif
3732
3733#if IK3_ENABLED
3734 PURE module subroutine setUniArbDefCom_D1_IK3(array, unique, count, index, order)
3735#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3736 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_IK3
3737#endif
3738 use pm_kind, only: IKG => IK3
3739 integer(IKG) , intent(in) , contiguous :: array(:)
3740 integer(IKG) , intent(out) , allocatable :: unique(:)
3741 integer(IK) , intent(out) , allocatable :: count(:)
3742 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3743 integer(IK) , intent(in) , optional :: order
3744 end subroutine
3745
3746#endif
3747
3748#if IK2_ENABLED
3749 PURE module subroutine setUniArbDefCom_D1_IK2(array, unique, count, index, order)
3750#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3751 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_IK2
3752#endif
3753 use pm_kind, only: IKG => IK2
3754 integer(IKG) , intent(in) , contiguous :: array(:)
3755 integer(IKG) , intent(out) , allocatable :: unique(:)
3756 integer(IK) , intent(out) , allocatable :: count(:)
3757 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3758 integer(IK) , intent(in) , optional :: order
3759 end subroutine
3760#endif
3761
3762#if IK1_ENABLED
3763 PURE module subroutine setUniArbDefCom_D1_IK1(array, unique, count, index, order)
3764#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3765 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_IK1
3766#endif
3767 use pm_kind, only: IKG => IK1
3768 integer(IKG) , intent(in) , contiguous :: array(:)
3769 integer(IKG) , intent(out) , allocatable :: unique(:)
3770 integer(IK) , intent(out) , allocatable :: count(:)
3771 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3772 integer(IK) , intent(in) , optional :: order
3773 end subroutine
3774#endif
3775
3776 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3777
3778#if LK5_ENABLED
3779 PURE module subroutine setUniArbDefCom_D1_LK5(array, unique, count, index, order)
3780#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3781 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_LK5
3782#endif
3783 use pm_kind, only: LKG => LK5
3784 logical(LKG) , intent(in) , contiguous :: array(:)
3785 logical(LKG) , intent(out) , allocatable :: unique(:)
3786 integer(IK) , intent(out) , allocatable :: count(:)
3787 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3788 integer(IK) , intent(in) , optional :: order
3789 end subroutine
3790#endif
3791
3792#if LK4_ENABLED
3793 PURE module subroutine setUniArbDefCom_D1_LK4(array, unique, count, index, order)
3794#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3795 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_LK4
3796#endif
3797 use pm_kind, only: LKG => LK4
3798 logical(LKG) , intent(in) , contiguous :: array(:)
3799 logical(LKG) , intent(out) , allocatable :: unique(:)
3800 integer(IK) , intent(out) , allocatable :: count(:)
3801 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3802 integer(IK) , intent(in) , optional :: order
3803 end subroutine
3804#endif
3805
3806#if LK3_ENABLED
3807 PURE module subroutine setUniArbDefCom_D1_LK3(array, unique, count, index, order)
3808#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3809 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_LK3
3810#endif
3811 use pm_kind, only: LKG => LK3
3812 logical(LKG) , intent(in) , contiguous :: array(:)
3813 logical(LKG) , intent(out) , allocatable :: unique(:)
3814 integer(IK) , intent(out) , allocatable :: count(:)
3815 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3816 integer(IK) , intent(in) , optional :: order
3817 end subroutine
3818#endif
3819
3820#if LK2_ENABLED
3821 PURE module subroutine setUniArbDefCom_D1_LK2(array, unique, count, index, order)
3822#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3823 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_LK2
3824#endif
3825 use pm_kind, only: LKG => LK2
3826 logical(LKG) , intent(in) , contiguous :: array(:)
3827 logical(LKG) , intent(out) , allocatable :: unique(:)
3828 integer(IK) , intent(out) , allocatable :: count(:)
3829 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3830 integer(IK) , intent(in) , optional :: order
3831 end subroutine
3832#endif
3833
3834#if LK1_ENABLED
3835 PURE module subroutine setUniArbDefCom_D1_LK1(array, unique, count, index, order)
3836#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3837 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_LK1
3838#endif
3839 use pm_kind, only: LKG => LK1
3840 logical(LKG) , intent(in) , contiguous :: array(:)
3841 logical(LKG) , intent(out) , allocatable :: unique(:)
3842 integer(IK) , intent(out) , allocatable :: count(:)
3843 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3844 integer(IK) , intent(in) , optional :: order
3845 end subroutine
3846#endif
3847
3848 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3849
3850#if CK5_ENABLED
3851 PURE module subroutine setUniArbDefCom_D1_CK5(array, unique, count, index, order)
3852#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3853 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_CK5
3854#endif
3855 use pm_kind, only: CKG => CK5
3856 complex(CKG) , intent(in) , contiguous :: array(:)
3857 complex(CKG) , intent(out) , allocatable :: unique(:)
3858 integer(IK) , intent(out) , allocatable :: count(:)
3859 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3860 integer(IK) , intent(in) , optional :: order
3861 end subroutine
3862#endif
3863
3864#if CK4_ENABLED
3865 PURE module subroutine setUniArbDefCom_D1_CK4(array, unique, count, index, order)
3866#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3867 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_CK4
3868#endif
3869 use pm_kind, only: CKG => CK4
3870 complex(CKG) , intent(in) , contiguous :: array(:)
3871 complex(CKG) , intent(out) , allocatable :: unique(:)
3872 integer(IK) , intent(out) , allocatable :: count(:)
3873 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3874 integer(IK) , intent(in) , optional :: order
3875 end subroutine
3876#endif
3877
3878#if CK3_ENABLED
3879 PURE module subroutine setUniArbDefCom_D1_CK3(array, unique, count, index, order)
3880#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3881 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_CK3
3882#endif
3883 use pm_kind, only: CKG => CK3
3884 complex(CKG) , intent(in) , contiguous :: array(:)
3885 complex(CKG) , intent(out) , allocatable :: unique(:)
3886 integer(IK) , intent(out) , allocatable :: count(:)
3887 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3888 integer(IK) , intent(in) , optional :: order
3889 end subroutine
3890#endif
3891
3892#if CK2_ENABLED
3893 PURE module subroutine setUniArbDefCom_D1_CK2(array, unique, count, index, order)
3894#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3895 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_CK2
3896#endif
3897 use pm_kind, only: CKG => CK2
3898 complex(CKG) , intent(in) , contiguous :: array(:)
3899 complex(CKG) , intent(out) , allocatable :: unique(:)
3900 integer(IK) , intent(out) , allocatable :: count(:)
3901 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3902 integer(IK) , intent(in) , optional :: order
3903 end subroutine
3904#endif
3905
3906#if CK1_ENABLED
3907 PURE module subroutine setUniArbDefCom_D1_CK1(array, unique, count, index, order)
3908#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3909 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_CK1
3910#endif
3911 use pm_kind, only: CKG => CK1
3912 complex(CKG) , intent(in) , contiguous :: array(:)
3913 complex(CKG) , intent(out) , allocatable :: unique(:)
3914 integer(IK) , intent(out) , allocatable :: count(:)
3915 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3916 integer(IK) , intent(in) , optional :: order
3917 end subroutine
3918#endif
3919
3920 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3921
3922#if RK5_ENABLED
3923 PURE module subroutine setUniArbDefCom_D1_RK5(array, unique, count, index, order)
3924#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3925 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_RK5
3926#endif
3927 use pm_kind, only: RKG => RK5
3928 real(RKG) , intent(in) , contiguous :: array(:)
3929 real(RKG) , intent(out) , allocatable :: unique(:)
3930 integer(IK) , intent(out) , allocatable :: count(:)
3931 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3932 integer(IK) , intent(in) , optional :: order
3933 end subroutine
3934#endif
3935
3936#if RK4_ENABLED
3937 PURE module subroutine setUniArbDefCom_D1_RK4(array, unique, count, index, order)
3938#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3939 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_RK4
3940#endif
3941 use pm_kind, only: RKG => RK4
3942 real(RKG) , intent(in) , contiguous :: array(:)
3943 real(RKG) , intent(out) , allocatable :: unique(:)
3944 integer(IK) , intent(out) , allocatable :: count(:)
3945 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3946 integer(IK) , intent(in) , optional :: order
3947 end subroutine
3948#endif
3949
3950#if RK3_ENABLED
3951 PURE module subroutine setUniArbDefCom_D1_RK3(array, unique, count, index, order)
3952#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3953 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_RK3
3954#endif
3955 use pm_kind, only: RKG => RK3
3956 real(RKG) , intent(in) , contiguous :: array(:)
3957 real(RKG) , intent(out) , allocatable :: unique(:)
3958 integer(IK) , intent(out) , allocatable :: count(:)
3959 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3960 integer(IK) , intent(in) , optional :: order
3961 end subroutine
3962#endif
3963
3964#if RK2_ENABLED
3965 PURE module subroutine setUniArbDefCom_D1_RK2(array, unique, count, index, order)
3966#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3967 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_RK2
3968#endif
3969 use pm_kind, only: RKG => RK2
3970 real(RKG) , intent(in) , contiguous :: array(:)
3971 real(RKG) , intent(out) , allocatable :: unique(:)
3972 integer(IK) , intent(out) , allocatable :: count(:)
3973 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3974 integer(IK) , intent(in) , optional :: order
3975 end subroutine
3976#endif
3977
3978#if RK1_ENABLED
3979 PURE module subroutine setUniArbDefCom_D1_RK1(array, unique, count, index, order)
3980#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3981 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbDefCom_D1_RK1
3982#endif
3983 use pm_kind, only: RKG => RK1
3984 real(RKG) , intent(in) , contiguous :: array(:)
3985 real(RKG) , intent(out) , allocatable :: unique(:)
3986 integer(IK) , intent(out) , allocatable :: count(:)
3987 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
3988 integer(IK) , intent(in) , optional :: order
3989 end subroutine
3990#endif
3991
3992 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3993
3994 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3995 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3996 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3997
3998 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3999
4000#if SK5_ENABLED
4001 module subroutine setUniArbCusCom_D0_SK5(array, unique, count, iseq, index, order)
4002#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4003 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D0_SK5
4004#endif
4005 use pm_kind, only: SKG => SK5
4006 character(*,SKG) , intent(in) :: array
4007 character(:,SKG) , intent(out) , allocatable :: unique
4008 integer(IK) , intent(out) , allocatable :: count(:)
4009 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4010 integer(IK) , intent(in) , optional :: order
4011 procedure(logical(LK)) :: iseq
4012 end subroutine
4013#endif
4014
4015#if SK4_ENABLED
4016 module subroutine setUniArbCusCom_D0_SK4(array, unique, count, iseq, index, order)
4017#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4018 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D0_SK4
4019#endif
4020 use pm_kind, only: SKG => SK4
4021 character(*,SKG) , intent(in) :: array
4022 character(:,SKG) , intent(out) , allocatable :: unique
4023 integer(IK) , intent(out) , allocatable :: count(:)
4024 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4025 integer(IK) , intent(in) , optional :: order
4026 procedure(logical(LK)) :: iseq
4027 end subroutine
4028#endif
4029
4030#if SK3_ENABLED
4031 module subroutine setUniArbCusCom_D0_SK3(array, unique, count, iseq, index, order)
4032#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4033 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D0_SK3
4034#endif
4035 use pm_kind, only: SKG => SK3
4036 character(*,SKG) , intent(in) :: array
4037 character(:,SKG) , intent(out) , allocatable :: unique
4038 integer(IK) , intent(out) , allocatable :: count(:)
4039 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4040 integer(IK) , intent(in) , optional :: order
4041 procedure(logical(LK)) :: iseq
4042 end subroutine
4043#endif
4044
4045#if SK2_ENABLED
4046 module subroutine setUniArbCusCom_D0_SK2(array, unique, count, iseq, index, order)
4047#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4048 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D0_SK2
4049#endif
4050 use pm_kind, only: SKG => SK2
4051 character(*,SKG) , intent(in) :: array
4052 character(:,SKG) , intent(out) , allocatable :: unique
4053 integer(IK) , intent(out) , allocatable :: count(:)
4054 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4055 integer(IK) , intent(in) , optional :: order
4056 procedure(logical(LK)) :: iseq
4057 end subroutine
4058#endif
4059
4060#if SK1_ENABLED
4061 module subroutine setUniArbCusCom_D0_SK1(array, unique, count, iseq, index, order)
4062#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4063 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D0_SK1
4064#endif
4065 use pm_kind, only: SKG => SK1
4066 character(*,SKG) , intent(in) :: array
4067 character(:,SKG) , intent(out) , allocatable :: unique
4068 integer(IK) , intent(out) , allocatable :: count(:)
4069 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4070 integer(IK) , intent(in) , optional :: order
4071 procedure(logical(LK)) :: iseq
4072 end subroutine
4073#endif
4074
4075 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4076
4077#if SK5_ENABLED
4078 module subroutine setUniArbCusCom_D1_SK5(array, unique, count, iseq, index, order)
4079#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4080 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_SK5
4081#endif
4082 use pm_kind, only: SKG => SK5
4083 character(*,SKG) , intent(in) , contiguous :: array(:)
4084 character(*,SKG) , intent(out) , allocatable :: unique(:)
4085 integer(IK) , intent(out) , allocatable :: count(:)
4086 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4087 integer(IK) , intent(in) , optional :: order
4088 procedure(logical(LK)) :: iseq
4089 end subroutine
4090#endif
4091
4092#if SK4_ENABLED
4093 module subroutine setUniArbCusCom_D1_SK4(array, unique, count, iseq, index, order)
4094#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4095 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_SK4
4096#endif
4097 use pm_kind, only: SKG => SK4
4098 character(*,SKG) , intent(in) , contiguous :: array(:)
4099 character(*,SKG) , intent(out) , allocatable :: unique(:)
4100 integer(IK) , intent(out) , allocatable :: count(:)
4101 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4102 integer(IK) , intent(in) , optional :: order
4103 procedure(logical(LK)) :: iseq
4104 end subroutine
4105#endif
4106
4107#if SK3_ENABLED
4108 module subroutine setUniArbCusCom_D1_SK3(array, unique, count, iseq, index, order)
4109#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4110 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_SK3
4111#endif
4112 use pm_kind, only: SKG => SK3
4113 character(*,SKG) , intent(in) , contiguous :: array(:)
4114 character(*,SKG) , intent(out) , allocatable :: unique(:)
4115 integer(IK) , intent(out) , allocatable :: count(:)
4116 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4117 integer(IK) , intent(in) , optional :: order
4118 procedure(logical(LK)) :: iseq
4119 end subroutine
4120#endif
4121
4122#if SK2_ENABLED
4123 module subroutine setUniArbCusCom_D1_SK2(array, unique, count, iseq, index, order)
4124#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4125 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_SK2
4126#endif
4127 use pm_kind, only: SKG => SK2
4128 character(*,SKG) , intent(in) , contiguous :: array(:)
4129 character(*,SKG) , intent(out) , allocatable :: unique(:)
4130 integer(IK) , intent(out) , allocatable :: count(:)
4131 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4132 integer(IK) , intent(in) , optional :: order
4133 procedure(logical(LK)) :: iseq
4134 end subroutine
4135#endif
4136
4137#if SK1_ENABLED
4138 module subroutine setUniArbCusCom_D1_SK1(array, unique, count, iseq, index, order)
4139#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4140 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_SK1
4141#endif
4142 use pm_kind, only: SKG => SK1
4143 character(*,SKG) , intent(in) , contiguous :: array(:)
4144 character(*,SKG) , intent(out) , allocatable :: unique(:)
4145 integer(IK) , intent(out) , allocatable :: count(:)
4146 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4147 integer(IK) , intent(in) , optional :: order
4148 procedure(logical(LK)) :: iseq
4149 end subroutine
4150#endif
4151
4152 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4153
4154#if IK5_ENABLED
4155 module subroutine setUniArbCusCom_D1_IK5(array, unique, count, iseq, index, order)
4156#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4157 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_IK5
4158#endif
4159 use pm_kind, only: IKG => IK5
4160 integer(IKG) , intent(in) , contiguous :: array(:)
4161 integer(IKG) , intent(out) , allocatable :: unique(:)
4162 integer(IK) , intent(out) , allocatable :: count(:)
4163 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4164 integer(IK) , intent(in) , optional :: order
4165 procedure(logical(LK)) :: iseq
4166 end subroutine
4167#endif
4168
4169#if IK4_ENABLED
4170 module subroutine setUniArbCusCom_D1_IK4(array, unique, count, iseq, index, order)
4171#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4172 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_IK4
4173#endif
4174 use pm_kind, only: IKG => IK4
4175 integer(IKG) , intent(in) , contiguous :: array(:)
4176 integer(IKG) , intent(out) , allocatable :: unique(:)
4177 integer(IK) , intent(out) , allocatable :: count(:)
4178 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4179 integer(IK) , intent(in) , optional :: order
4180 procedure(logical(LK)) :: iseq
4181 end subroutine
4182#endif
4183
4184#if IK3_ENABLED
4185 module subroutine setUniArbCusCom_D1_IK3(array, unique, count, iseq, index, order)
4186#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4187 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_IK3
4188#endif
4189 use pm_kind, only: IKG => IK3
4190 integer(IKG) , intent(in) , contiguous :: array(:)
4191 integer(IKG) , intent(out) , allocatable :: unique(:)
4192 integer(IK) , intent(out) , allocatable :: count(:)
4193 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4194 integer(IK) , intent(in) , optional :: order
4195 procedure(logical(LK)) :: iseq
4196 end subroutine
4197
4198#endif
4199
4200#if IK2_ENABLED
4201 module subroutine setUniArbCusCom_D1_IK2(array, unique, count, iseq, index, order)
4202#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4203 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_IK2
4204#endif
4205 use pm_kind, only: IKG => IK2
4206 integer(IKG) , intent(in) , contiguous :: array(:)
4207 integer(IKG) , intent(out) , allocatable :: unique(:)
4208 integer(IK) , intent(out) , allocatable :: count(:)
4209 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4210 integer(IK) , intent(in) , optional :: order
4211 procedure(logical(LK)) :: iseq
4212 end subroutine
4213#endif
4214
4215#if IK1_ENABLED
4216 module subroutine setUniArbCusCom_D1_IK1(array, unique, count, iseq, index, order)
4217#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4218 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_IK1
4219#endif
4220 use pm_kind, only: IKG => IK1
4221 integer(IKG) , intent(in) , contiguous :: array(:)
4222 integer(IKG) , intent(out) , allocatable :: unique(:)
4223 integer(IK) , intent(out) , allocatable :: count(:)
4224 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4225 integer(IK) , intent(in) , optional :: order
4226 procedure(logical(LK)) :: iseq
4227 end subroutine
4228#endif
4229
4230 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4231
4232#if LK5_ENABLED
4233 module subroutine setUniArbCusCom_D1_LK5(array, unique, count, iseq, index, order)
4234#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4235 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_LK5
4236#endif
4237 use pm_kind, only: LKG => LK5
4238 logical(LKG) , intent(in) , contiguous :: array(:)
4239 logical(LKG) , intent(out) , allocatable :: unique(:)
4240 integer(IK) , intent(out) , allocatable :: count(:)
4241 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4242 integer(IK) , intent(in) , optional :: order
4243 procedure(logical(LK)) :: iseq
4244 end subroutine
4245#endif
4246
4247#if LK4_ENABLED
4248 module subroutine setUniArbCusCom_D1_LK4(array, unique, count, iseq, index, order)
4249#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4250 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_LK4
4251#endif
4252 use pm_kind, only: LKG => LK4
4253 logical(LKG) , intent(in) , contiguous :: array(:)
4254 logical(LKG) , intent(out) , allocatable :: unique(:)
4255 integer(IK) , intent(out) , allocatable :: count(:)
4256 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4257 integer(IK) , intent(in) , optional :: order
4258 procedure(logical(LK)) :: iseq
4259 end subroutine
4260#endif
4261
4262#if LK3_ENABLED
4263 module subroutine setUniArbCusCom_D1_LK3(array, unique, count, iseq, index, order)
4264#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4265 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_LK3
4266#endif
4267 use pm_kind, only: LKG => LK3
4268 logical(LKG) , intent(in) , contiguous :: array(:)
4269 logical(LKG) , intent(out) , allocatable :: unique(:)
4270 integer(IK) , intent(out) , allocatable :: count(:)
4271 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4272 integer(IK) , intent(in) , optional :: order
4273 procedure(logical(LK)) :: iseq
4274 end subroutine
4275#endif
4276
4277#if LK2_ENABLED
4278 module subroutine setUniArbCusCom_D1_LK2(array, unique, count, iseq, index, order)
4279#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4280 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_LK2
4281#endif
4282 use pm_kind, only: LKG => LK2
4283 logical(LKG) , intent(in) , contiguous :: array(:)
4284 logical(LKG) , intent(out) , allocatable :: unique(:)
4285 integer(IK) , intent(out) , allocatable :: count(:)
4286 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4287 integer(IK) , intent(in) , optional :: order
4288 procedure(logical(LK)) :: iseq
4289 end subroutine
4290#endif
4291
4292#if LK1_ENABLED
4293 module subroutine setUniArbCusCom_D1_LK1(array, unique, count, iseq, index, order)
4294#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4295 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_LK1
4296#endif
4297 use pm_kind, only: LKG => LK1
4298 logical(LKG) , intent(in) , contiguous :: array(:)
4299 logical(LKG) , intent(out) , allocatable :: unique(:)
4300 integer(IK) , intent(out) , allocatable :: count(:)
4301 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4302 integer(IK) , intent(in) , optional :: order
4303 procedure(logical(LK)) :: iseq
4304 end subroutine
4305#endif
4306
4307 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4308
4309#if CK5_ENABLED
4310 module subroutine setUniArbCusCom_D1_CK5(array, unique, count, iseq, index, order)
4311#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4312 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_CK5
4313#endif
4314 use pm_kind, only: CKG => CK5
4315 complex(CKG) , intent(in) , contiguous :: array(:)
4316 complex(CKG) , intent(out) , allocatable :: unique(:)
4317 integer(IK) , intent(out) , allocatable :: count(:)
4318 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4319 integer(IK) , intent(in) , optional :: order
4320 procedure(logical(LK)) :: iseq
4321 end subroutine
4322#endif
4323
4324#if CK4_ENABLED
4325 module subroutine setUniArbCusCom_D1_CK4(array, unique, count, iseq, index, order)
4326#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4327 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_CK4
4328#endif
4329 use pm_kind, only: CKG => CK4
4330 complex(CKG) , intent(in) , contiguous :: array(:)
4331 complex(CKG) , intent(out) , allocatable :: unique(:)
4332 integer(IK) , intent(out) , allocatable :: count(:)
4333 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4334 integer(IK) , intent(in) , optional :: order
4335 procedure(logical(LK)) :: iseq
4336 end subroutine
4337#endif
4338
4339#if CK3_ENABLED
4340 module subroutine setUniArbCusCom_D1_CK3(array, unique, count, iseq, index, order)
4341#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4342 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_CK3
4343#endif
4344 use pm_kind, only: CKG => CK3
4345 complex(CKG) , intent(in) , contiguous :: array(:)
4346 complex(CKG) , intent(out) , allocatable :: unique(:)
4347 integer(IK) , intent(out) , allocatable :: count(:)
4348 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4349 integer(IK) , intent(in) , optional :: order
4350 procedure(logical(LK)) :: iseq
4351 end subroutine
4352#endif
4353
4354#if CK2_ENABLED
4355 module subroutine setUniArbCusCom_D1_CK2(array, unique, count, iseq, index, order)
4356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4357 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_CK2
4358#endif
4359 use pm_kind, only: CKG => CK2
4360 complex(CKG) , intent(in) , contiguous :: array(:)
4361 complex(CKG) , intent(out) , allocatable :: unique(:)
4362 integer(IK) , intent(out) , allocatable :: count(:)
4363 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4364 integer(IK) , intent(in) , optional :: order
4365 procedure(logical(LK)) :: iseq
4366 end subroutine
4367#endif
4368
4369#if CK1_ENABLED
4370 module subroutine setUniArbCusCom_D1_CK1(array, unique, count, iseq, index, order)
4371#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4372 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_CK1
4373#endif
4374 use pm_kind, only: CKG => CK1
4375 complex(CKG) , intent(in) , contiguous :: array(:)
4376 complex(CKG) , intent(out) , allocatable :: unique(:)
4377 integer(IK) , intent(out) , allocatable :: count(:)
4378 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4379 integer(IK) , intent(in) , optional :: order
4380 procedure(logical(LK)) :: iseq
4381 end subroutine
4382#endif
4383
4384 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4385
4386#if RK5_ENABLED
4387 module subroutine setUniArbCusCom_D1_RK5(array, unique, count, iseq, index, order)
4388#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4389 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_RK5
4390#endif
4391 use pm_kind, only: RKG => RK5
4392 real(RKG) , intent(in) , contiguous :: array(:)
4393 real(RKG) , intent(out) , allocatable :: unique(:)
4394 integer(IK) , intent(out) , allocatable :: count(:)
4395 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4396 integer(IK) , intent(in) , optional :: order
4397 procedure(logical(LK)) :: iseq
4398 end subroutine
4399#endif
4400
4401#if RK4_ENABLED
4402 module subroutine setUniArbCusCom_D1_RK4(array, unique, count, iseq, index, order)
4403#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4404 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_RK4
4405#endif
4406 use pm_kind, only: RKG => RK4
4407 real(RKG) , intent(in) , contiguous :: array(:)
4408 real(RKG) , intent(out) , allocatable :: unique(:)
4409 integer(IK) , intent(out) , allocatable :: count(:)
4410 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4411 integer(IK) , intent(in) , optional :: order
4412 procedure(logical(LK)) :: iseq
4413 end subroutine
4414#endif
4415
4416#if RK3_ENABLED
4417 module subroutine setUniArbCusCom_D1_RK3(array, unique, count, iseq, index, order)
4418#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4419 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_RK3
4420#endif
4421 use pm_kind, only: RKG => RK3
4422 real(RKG) , intent(in) , contiguous :: array(:)
4423 real(RKG) , intent(out) , allocatable :: unique(:)
4424 integer(IK) , intent(out) , allocatable :: count(:)
4425 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4426 integer(IK) , intent(in) , optional :: order
4427 procedure(logical(LK)) :: iseq
4428 end subroutine
4429#endif
4430
4431#if RK2_ENABLED
4432 module subroutine setUniArbCusCom_D1_RK2(array, unique, count, iseq, index, order)
4433#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4434 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_RK2
4435#endif
4436 use pm_kind, only: RKG => RK2
4437 real(RKG) , intent(in) , contiguous :: array(:)
4438 real(RKG) , intent(out) , allocatable :: unique(:)
4439 integer(IK) , intent(out) , allocatable :: count(:)
4440 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4441 integer(IK) , intent(in) , optional :: order
4442 procedure(logical(LK)) :: iseq
4443 end subroutine
4444#endif
4445
4446#if RK1_ENABLED
4447 module subroutine setUniArbCusCom_D1_RK1(array, unique, count, iseq, index, order)
4448#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4449 !DEC$ ATTRIBUTES DLLEXPORT :: setUniArbCusCom_D1_RK1
4450#endif
4451 use pm_kind, only: RKG => RK1
4452 real(RKG) , intent(in) , contiguous :: array(:)
4453 real(RKG) , intent(out) , allocatable :: unique(:)
4454 integer(IK) , intent(out) , allocatable :: count(:)
4455 type(cvi_type) , intent(out) , allocatable, optional :: index(:)
4456 integer(IK) , intent(in) , optional :: order
4457 procedure(logical(LK)) :: iseq
4458 end subroutine
4459#endif
4460
4461 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4462
4463 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4464 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4465 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4466 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4467 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4468 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4469
4470 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4471
4472#if SK5_ENABLED
4473 PURE module subroutine setUniFixDefCom_D0_SK5(array, unique, lenUnique, count, index, order)
4474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4475 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D0_SK5
4476#endif
4477 use pm_kind, only: SKG => SK5
4478 character(*,SKG) , intent(in) :: array
4479 character(*,SKG) , intent(out) :: unique
4480 integer(IK) , intent(out) :: lenUnique
4481 integer(IK) , intent(out) , contiguous :: count(:)
4482 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4483 integer(IK) , intent(in) , optional :: order
4484 end subroutine
4485#endif
4486
4487#if SK4_ENABLED
4488 PURE module subroutine setUniFixDefCom_D0_SK4(array, unique, lenUnique, count, index, order)
4489#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4490 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D0_SK4
4491#endif
4492 use pm_kind, only: SKG => SK4
4493 character(*,SKG) , intent(in) :: array
4494 character(*,SKG) , intent(out) :: unique
4495 integer(IK) , intent(out) :: lenUnique
4496 integer(IK) , intent(out) , contiguous :: count(:)
4497 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4498 integer(IK) , intent(in) , optional :: order
4499 end subroutine
4500#endif
4501
4502#if SK3_ENABLED
4503 PURE module subroutine setUniFixDefCom_D0_SK3(array, unique, lenUnique, count, index, order)
4504#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4505 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D0_SK3
4506#endif
4507 use pm_kind, only: SKG => SK3
4508 character(*,SKG) , intent(in) :: array
4509 character(*,SKG) , intent(out) :: unique
4510 integer(IK) , intent(out) :: lenUnique
4511 integer(IK) , intent(out) , contiguous :: count(:)
4512 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4513 integer(IK) , intent(in) , optional :: order
4514 end subroutine
4515#endif
4516
4517#if SK2_ENABLED
4518 PURE module subroutine setUniFixDefCom_D0_SK2(array, unique, lenUnique, count, index, order)
4519#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4520 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D0_SK2
4521#endif
4522 use pm_kind, only: SKG => SK2
4523 character(*,SKG) , intent(in) :: array
4524 character(*,SKG) , intent(out) :: unique
4525 integer(IK) , intent(out) :: lenUnique
4526 integer(IK) , intent(out) , contiguous :: count(:)
4527 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4528 integer(IK) , intent(in) , optional :: order
4529 end subroutine
4530#endif
4531
4532#if SK1_ENABLED
4533 PURE module subroutine setUniFixDefCom_D0_SK1(array, unique, lenUnique, count, index, order)
4534#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4535 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D0_SK1
4536#endif
4537 use pm_kind, only: SKG => SK1
4538 character(*,SKG) , intent(in) :: array
4539 character(*,SKG) , intent(out) :: unique
4540 integer(IK) , intent(out) :: lenUnique
4541 integer(IK) , intent(out) , contiguous :: count(:)
4542 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4543 integer(IK) , intent(in) , optional :: order
4544 end subroutine
4545#endif
4546
4547 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4548
4549#if SK5_ENABLED
4550 PURE module subroutine setUniFixDefCom_D1_SK5(array, unique, lenUnique, count, index, order)
4551#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4552 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_SK5
4553#endif
4554 use pm_kind, only: SKG => SK5
4555 character(*,SKG) , intent(in) , contiguous :: array(:)
4556 character(*,SKG) , intent(out) , contiguous :: unique(:)
4557 integer(IK) , intent(out) :: lenUnique
4558 integer(IK) , intent(out) , contiguous :: count(:)
4559 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4560 integer(IK) , intent(in) , optional :: order
4561 end subroutine
4562#endif
4563
4564#if SK4_ENABLED
4565 PURE module subroutine setUniFixDefCom_D1_SK4(array, unique, lenUnique, count, index, order)
4566#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4567 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_SK4
4568#endif
4569 use pm_kind, only: SKG => SK4
4570 character(*,SKG) , intent(in) , contiguous :: array(:)
4571 character(*,SKG) , intent(out) , contiguous :: unique(:)
4572 integer(IK) , intent(out) :: lenUnique
4573 integer(IK) , intent(out) , contiguous :: count(:)
4574 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4575 integer(IK) , intent(in) , optional :: order
4576 end subroutine
4577#endif
4578
4579#if SK3_ENABLED
4580 PURE module subroutine setUniFixDefCom_D1_SK3(array, unique, lenUnique, count, index, order)
4581#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4582 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_SK3
4583#endif
4584 use pm_kind, only: SKG => SK3
4585 character(*,SKG) , intent(in) , contiguous :: array(:)
4586 character(*,SKG) , intent(out) , contiguous :: unique(:)
4587 integer(IK) , intent(out) :: lenUnique
4588 integer(IK) , intent(out) , contiguous :: count(:)
4589 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4590 integer(IK) , intent(in) , optional :: order
4591 end subroutine
4592#endif
4593
4594#if SK2_ENABLED
4595 PURE module subroutine setUniFixDefCom_D1_SK2(array, unique, lenUnique, count, index, order)
4596#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4597 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_SK2
4598#endif
4599 use pm_kind, only: SKG => SK2
4600 character(*,SKG) , intent(in) , contiguous :: array(:)
4601 character(*,SKG) , intent(out) , contiguous :: unique(:)
4602 integer(IK) , intent(out) :: lenUnique
4603 integer(IK) , intent(out) , contiguous :: count(:)
4604 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4605 integer(IK) , intent(in) , optional :: order
4606 end subroutine
4607#endif
4608
4609#if SK1_ENABLED
4610 PURE module subroutine setUniFixDefCom_D1_SK1(array, unique, lenUnique, count, index, order)
4611#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4612 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_SK1
4613#endif
4614 use pm_kind, only: SKG => SK1
4615 character(*,SKG) , intent(in) , contiguous :: array(:)
4616 character(*,SKG) , intent(out) , contiguous :: unique(:)
4617 integer(IK) , intent(out) :: lenUnique
4618 integer(IK) , intent(out) , contiguous :: count(:)
4619 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4620 integer(IK) , intent(in) , optional :: order
4621 end subroutine
4622#endif
4623
4624 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4625
4626#if IK5_ENABLED
4627 PURE module subroutine setUniFixDefCom_D1_IK5(array, unique, lenUnique, count, index, order)
4628#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4629 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_IK5
4630#endif
4631 use pm_kind, only: IKG => IK5
4632 integer(IKG) , intent(in) , contiguous :: array(:)
4633 integer(IKG) , intent(out) , contiguous :: unique(:)
4634 integer(IK) , intent(out) :: lenUnique
4635 integer(IK) , intent(out) , contiguous :: count(:)
4636 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4637 integer(IK) , intent(in) , optional :: order
4638 end subroutine
4639#endif
4640
4641#if IK4_ENABLED
4642 PURE module subroutine setUniFixDefCom_D1_IK4(array, unique, lenUnique, count, index, order)
4643#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4644 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_IK4
4645#endif
4646 use pm_kind, only: IKG => IK4
4647 integer(IKG) , intent(in) , contiguous :: array(:)
4648 integer(IKG) , intent(out) , contiguous :: unique(:)
4649 integer(IK) , intent(out) :: lenUnique
4650 integer(IK) , intent(out) , contiguous :: count(:)
4651 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4652 integer(IK) , intent(in) , optional :: order
4653 end subroutine
4654#endif
4655
4656#if IK3_ENABLED
4657 PURE module subroutine setUniFixDefCom_D1_IK3(array, unique, lenUnique, count, index, order)
4658#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4659 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_IK3
4660#endif
4661 use pm_kind, only: IKG => IK3
4662 integer(IKG) , intent(in) , contiguous :: array(:)
4663 integer(IKG) , intent(out) , contiguous :: unique(:)
4664 integer(IK) , intent(out) :: lenUnique
4665 integer(IK) , intent(out) , contiguous :: count(:)
4666 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4667 integer(IK) , intent(in) , optional :: order
4668 end subroutine
4669
4670#endif
4671
4672#if IK2_ENABLED
4673 PURE module subroutine setUniFixDefCom_D1_IK2(array, unique, lenUnique, count, index, order)
4674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4675 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_IK2
4676#endif
4677 use pm_kind, only: IKG => IK2
4678 integer(IKG) , intent(in) , contiguous :: array(:)
4679 integer(IKG) , intent(out) , contiguous :: unique(:)
4680 integer(IK) , intent(out) :: lenUnique
4681 integer(IK) , intent(out) , contiguous :: count(:)
4682 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4683 integer(IK) , intent(in) , optional :: order
4684 end subroutine
4685#endif
4686
4687#if IK1_ENABLED
4688 PURE module subroutine setUniFixDefCom_D1_IK1(array, unique, lenUnique, count, index, order)
4689#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4690 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_IK1
4691#endif
4692 use pm_kind, only: IKG => IK1
4693 integer(IKG) , intent(in) , contiguous :: array(:)
4694 integer(IKG) , intent(out) , contiguous :: unique(:)
4695 integer(IK) , intent(out) :: lenUnique
4696 integer(IK) , intent(out) , contiguous :: count(:)
4697 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4698 integer(IK) , intent(in) , optional :: order
4699 end subroutine
4700#endif
4701
4702 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4703
4704#if LK5_ENABLED
4705 PURE module subroutine setUniFixDefCom_D1_LK5(array, unique, lenUnique, count, index, order)
4706#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4707 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_LK5
4708#endif
4709 use pm_kind, only: LKG => LK5
4710 logical(LKG) , intent(in) , contiguous :: array(:)
4711 logical(LKG) , intent(out) , contiguous :: unique(:)
4712 integer(IK) , intent(out) :: lenUnique
4713 integer(IK) , intent(out) , contiguous :: count(:)
4714 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4715 integer(IK) , intent(in) , optional :: order
4716 end subroutine
4717#endif
4718
4719#if LK4_ENABLED
4720 PURE module subroutine setUniFixDefCom_D1_LK4(array, unique, lenUnique, count, index, order)
4721#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4722 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_LK4
4723#endif
4724 use pm_kind, only: LKG => LK4
4725 logical(LKG) , intent(in) , contiguous :: array(:)
4726 logical(LKG) , intent(out) , contiguous :: unique(:)
4727 integer(IK) , intent(out) :: lenUnique
4728 integer(IK) , intent(out) , contiguous :: count(:)
4729 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4730 integer(IK) , intent(in) , optional :: order
4731 end subroutine
4732#endif
4733
4734#if LK3_ENABLED
4735 PURE module subroutine setUniFixDefCom_D1_LK3(array, unique, lenUnique, count, index, order)
4736#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4737 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_LK3
4738#endif
4739 use pm_kind, only: LKG => LK3
4740 logical(LKG) , intent(in) , contiguous :: array(:)
4741 logical(LKG) , intent(out) , contiguous :: unique(:)
4742 integer(IK) , intent(out) :: lenUnique
4743 integer(IK) , intent(out) , contiguous :: count(:)
4744 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4745 integer(IK) , intent(in) , optional :: order
4746 end subroutine
4747#endif
4748
4749#if LK2_ENABLED
4750 PURE module subroutine setUniFixDefCom_D1_LK2(array, unique, lenUnique, count, index, order)
4751#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4752 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_LK2
4753#endif
4754 use pm_kind, only: LKG => LK2
4755 logical(LKG) , intent(in) , contiguous :: array(:)
4756 logical(LKG) , intent(out) , contiguous :: unique(:)
4757 integer(IK) , intent(out) :: lenUnique
4758 integer(IK) , intent(out) , contiguous :: count(:)
4759 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4760 integer(IK) , intent(in) , optional :: order
4761 end subroutine
4762#endif
4763
4764#if LK1_ENABLED
4765 PURE module subroutine setUniFixDefCom_D1_LK1(array, unique, lenUnique, count, index, order)
4766#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4767 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_LK1
4768#endif
4769 use pm_kind, only: LKG => LK1
4770 logical(LKG) , intent(in) , contiguous :: array(:)
4771 logical(LKG) , intent(out) , contiguous :: unique(:)
4772 integer(IK) , intent(out) :: lenUnique
4773 integer(IK) , intent(out) , contiguous :: count(:)
4774 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4775 integer(IK) , intent(in) , optional :: order
4776 end subroutine
4777#endif
4778
4779 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4780
4781#if CK5_ENABLED
4782 PURE module subroutine setUniFixDefCom_D1_CK5(array, unique, lenUnique, count, index, order)
4783#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4784 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_CK5
4785#endif
4786 use pm_kind, only: CKG => CK5
4787 complex(CKG) , intent(in) , contiguous :: array(:)
4788 complex(CKG) , intent(out) , contiguous :: unique(:)
4789 integer(IK) , intent(out) :: lenUnique
4790 integer(IK) , intent(out) , contiguous :: count(:)
4791 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4792 integer(IK) , intent(in) , optional :: order
4793 end subroutine
4794#endif
4795
4796#if CK4_ENABLED
4797 PURE module subroutine setUniFixDefCom_D1_CK4(array, unique, lenUnique, count, index, order)
4798#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4799 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_CK4
4800#endif
4801 use pm_kind, only: CKG => CK4
4802 complex(CKG) , intent(in) , contiguous :: array(:)
4803 complex(CKG) , intent(out) , contiguous :: unique(:)
4804 integer(IK) , intent(out) :: lenUnique
4805 integer(IK) , intent(out) , contiguous :: count(:)
4806 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4807 integer(IK) , intent(in) , optional :: order
4808 end subroutine
4809#endif
4810
4811#if CK3_ENABLED
4812 PURE module subroutine setUniFixDefCom_D1_CK3(array, unique, lenUnique, count, index, order)
4813#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4814 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_CK3
4815#endif
4816 use pm_kind, only: CKG => CK3
4817 complex(CKG) , intent(in) , contiguous :: array(:)
4818 complex(CKG) , intent(out) , contiguous :: unique(:)
4819 integer(IK) , intent(out) :: lenUnique
4820 integer(IK) , intent(out) , contiguous :: count(:)
4821 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4822 integer(IK) , intent(in) , optional :: order
4823 end subroutine
4824#endif
4825
4826#if CK2_ENABLED
4827 PURE module subroutine setUniFixDefCom_D1_CK2(array, unique, lenUnique, count, index, order)
4828#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4829 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_CK2
4830#endif
4831 use pm_kind, only: CKG => CK2
4832 complex(CKG) , intent(in) , contiguous :: array(:)
4833 complex(CKG) , intent(out) , contiguous :: unique(:)
4834 integer(IK) , intent(out) :: lenUnique
4835 integer(IK) , intent(out) , contiguous :: count(:)
4836 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4837 integer(IK) , intent(in) , optional :: order
4838 end subroutine
4839#endif
4840
4841#if CK1_ENABLED
4842 PURE module subroutine setUniFixDefCom_D1_CK1(array, unique, lenUnique, count, index, order)
4843#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4844 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_CK1
4845#endif
4846 use pm_kind, only: CKG => CK1
4847 complex(CKG) , intent(in) , contiguous :: array(:)
4848 complex(CKG) , intent(out) , contiguous :: unique(:)
4849 integer(IK) , intent(out) :: lenUnique
4850 integer(IK) , intent(out) , contiguous :: count(:)
4851 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4852 integer(IK) , intent(in) , optional :: order
4853 end subroutine
4854#endif
4855
4856 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4857
4858#if RK5_ENABLED
4859 PURE module subroutine setUniFixDefCom_D1_RK5(array, unique, lenUnique, count, index, order)
4860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4861 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_RK5
4862#endif
4863 use pm_kind, only: RKG => RK5
4864 real(RKG) , intent(in) , contiguous :: array(:)
4865 real(RKG) , intent(out) , contiguous :: unique(:)
4866 integer(IK) , intent(out) :: lenUnique
4867 integer(IK) , intent(out) , contiguous :: count(:)
4868 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4869 integer(IK) , intent(in) , optional :: order
4870 end subroutine
4871#endif
4872
4873#if RK4_ENABLED
4874 PURE module subroutine setUniFixDefCom_D1_RK4(array, unique, lenUnique, count, index, order)
4875#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4876 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_RK4
4877#endif
4878 use pm_kind, only: RKG => RK4
4879 real(RKG) , intent(in) , contiguous :: array(:)
4880 real(RKG) , intent(out) , contiguous :: unique(:)
4881 integer(IK) , intent(out) :: lenUnique
4882 integer(IK) , intent(out) , contiguous :: count(:)
4883 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4884 integer(IK) , intent(in) , optional :: order
4885 end subroutine
4886#endif
4887
4888#if RK3_ENABLED
4889 PURE module subroutine setUniFixDefCom_D1_RK3(array, unique, lenUnique, count, index, order)
4890#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4891 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_RK3
4892#endif
4893 use pm_kind, only: RKG => RK3
4894 real(RKG) , intent(in) , contiguous :: array(:)
4895 real(RKG) , intent(out) , contiguous :: unique(:)
4896 integer(IK) , intent(out) :: lenUnique
4897 integer(IK) , intent(out) , contiguous :: count(:)
4898 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4899 integer(IK) , intent(in) , optional :: order
4900 end subroutine
4901#endif
4902
4903#if RK2_ENABLED
4904 PURE module subroutine setUniFixDefCom_D1_RK2(array, unique, lenUnique, count, index, order)
4905#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4906 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_RK2
4907#endif
4908 use pm_kind, only: RKG => RK2
4909 real(RKG) , intent(in) , contiguous :: array(:)
4910 real(RKG) , intent(out) , contiguous :: unique(:)
4911 integer(IK) , intent(out) :: lenUnique
4912 integer(IK) , intent(out) , contiguous :: count(:)
4913 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4914 integer(IK) , intent(in) , optional :: order
4915 end subroutine
4916#endif
4917
4918#if RK1_ENABLED
4919 PURE module subroutine setUniFixDefCom_D1_RK1(array, unique, lenUnique, count, index, order)
4920#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4921 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixDefCom_D1_RK1
4922#endif
4923 use pm_kind, only: RKG => RK1
4924 real(RKG) , intent(in) , contiguous :: array(:)
4925 real(RKG) , intent(out) , contiguous :: unique(:)
4926 integer(IK) , intent(out) :: lenUnique
4927 integer(IK) , intent(out) , contiguous :: count(:)
4928 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4929 integer(IK) , intent(in) , optional :: order
4930 end subroutine
4931#endif
4932
4933 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4934
4935 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4936 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4937 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4938
4939 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4940
4941#if SK5_ENABLED
4942 module subroutine setUniFixCusCom_D0_SK5(array, unique, lenUnique, count, iseq, index, order)
4943#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4944 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D0_SK5
4945#endif
4946 use pm_kind, only: SKG => SK5
4947 character(*,SKG) , intent(in) :: array
4948 character(*,SKG) , intent(out) :: unique
4949 integer(IK) , intent(out) :: lenUnique
4950 integer(IK) , intent(out) , contiguous :: count(:)
4951 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4952 integer(IK) , intent(in) , optional :: order
4953 procedure(logical(LK)) :: iseq
4954 end subroutine
4955#endif
4956
4957#if SK4_ENABLED
4958 module subroutine setUniFixCusCom_D0_SK4(array, unique, lenUnique, count, iseq, index, order)
4959#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4960 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D0_SK4
4961#endif
4962 use pm_kind, only: SKG => SK4
4963 character(*,SKG) , intent(in) :: array
4964 character(*,SKG) , intent(out) :: unique
4965 integer(IK) , intent(out) :: lenUnique
4966 integer(IK) , intent(out) , contiguous :: count(:)
4967 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4968 integer(IK) , intent(in) , optional :: order
4969 procedure(logical(LK)) :: iseq
4970 end subroutine
4971#endif
4972
4973#if SK3_ENABLED
4974 module subroutine setUniFixCusCom_D0_SK3(array, unique, lenUnique, count, iseq, index, order)
4975#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4976 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D0_SK3
4977#endif
4978 use pm_kind, only: SKG => SK3
4979 character(*,SKG) , intent(in) :: array
4980 character(*,SKG) , intent(out) :: unique
4981 integer(IK) , intent(out) :: lenUnique
4982 integer(IK) , intent(out) , contiguous :: count(:)
4983 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
4984 integer(IK) , intent(in) , optional :: order
4985 procedure(logical(LK)) :: iseq
4986 end subroutine
4987#endif
4988
4989#if SK2_ENABLED
4990 module subroutine setUniFixCusCom_D0_SK2(array, unique, lenUnique, count, iseq, index, order)
4991#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4992 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D0_SK2
4993#endif
4994 use pm_kind, only: SKG => SK2
4995 character(*,SKG) , intent(in) :: array
4996 character(*,SKG) , intent(out) :: unique
4997 integer(IK) , intent(out) :: lenUnique
4998 integer(IK) , intent(out) , contiguous :: count(:)
4999 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5000 integer(IK) , intent(in) , optional :: order
5001 procedure(logical(LK)) :: iseq
5002 end subroutine
5003#endif
5004
5005#if SK1_ENABLED
5006 module subroutine setUniFixCusCom_D0_SK1(array, unique, lenUnique, count, iseq, index, order)
5007#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5008 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D0_SK1
5009#endif
5010 use pm_kind, only: SKG => SK1
5011 character(*,SKG) , intent(in) :: array
5012 character(*,SKG) , intent(out) :: unique
5013 integer(IK) , intent(out) :: lenUnique
5014 integer(IK) , intent(out) , contiguous :: count(:)
5015 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5016 integer(IK) , intent(in) , optional :: order
5017 procedure(logical(LK)) :: iseq
5018 end subroutine
5019#endif
5020
5021 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5022
5023#if SK5_ENABLED
5024 module subroutine setUniFixCusCom_D1_SK5(array, unique, lenUnique, count, iseq, index, order)
5025#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5026 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_SK5
5027#endif
5028 use pm_kind, only: SKG => SK5
5029 character(*,SKG) , intent(in) , contiguous :: array(:)
5030 character(*,SKG) , intent(out) , contiguous :: unique(:)
5031 integer(IK) , intent(out) :: lenUnique
5032 integer(IK) , intent(out) , contiguous :: count(:)
5033 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5034 integer(IK) , intent(in) , optional :: order
5035 procedure(logical(LK)) :: iseq
5036 end subroutine
5037#endif
5038
5039#if SK4_ENABLED
5040 module subroutine setUniFixCusCom_D1_SK4(array, unique, lenUnique, count, iseq, index, order)
5041#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5042 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_SK4
5043#endif
5044 use pm_kind, only: SKG => SK4
5045 character(*,SKG) , intent(in) , contiguous :: array(:)
5046 character(*,SKG) , intent(out) , contiguous :: unique(:)
5047 integer(IK) , intent(out) :: lenUnique
5048 integer(IK) , intent(out) , contiguous :: count(:)
5049 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5050 integer(IK) , intent(in) , optional :: order
5051 procedure(logical(LK)) :: iseq
5052 end subroutine
5053#endif
5054
5055#if SK3_ENABLED
5056 module subroutine setUniFixCusCom_D1_SK3(array, unique, lenUnique, count, iseq, index, order)
5057#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5058 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_SK3
5059#endif
5060 use pm_kind, only: SKG => SK3
5061 character(*,SKG) , intent(in) , contiguous :: array(:)
5062 character(*,SKG) , intent(out) , contiguous :: unique(:)
5063 integer(IK) , intent(out) :: lenUnique
5064 integer(IK) , intent(out) , contiguous :: count(:)
5065 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5066 integer(IK) , intent(in) , optional :: order
5067 procedure(logical(LK)) :: iseq
5068 end subroutine
5069#endif
5070
5071#if SK2_ENABLED
5072 module subroutine setUniFixCusCom_D1_SK2(array, unique, lenUnique, count, iseq, index, order)
5073#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5074 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_SK2
5075#endif
5076 use pm_kind, only: SKG => SK2
5077 character(*,SKG) , intent(in) , contiguous :: array(:)
5078 character(*,SKG) , intent(out) , contiguous :: unique(:)
5079 integer(IK) , intent(out) :: lenUnique
5080 integer(IK) , intent(out) , contiguous :: count(:)
5081 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5082 integer(IK) , intent(in) , optional :: order
5083 procedure(logical(LK)) :: iseq
5084 end subroutine
5085#endif
5086
5087#if SK1_ENABLED
5088 module subroutine setUniFixCusCom_D1_SK1(array, unique, lenUnique, count, iseq, index, order)
5089#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5090 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_SK1
5091#endif
5092 use pm_kind, only: SKG => SK1
5093 character(*,SKG) , intent(in) , contiguous :: array(:)
5094 character(*,SKG) , intent(out) , contiguous :: unique(:)
5095 integer(IK) , intent(out) :: lenUnique
5096 integer(IK) , intent(out) , contiguous :: count(:)
5097 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5098 integer(IK) , intent(in) , optional :: order
5099 procedure(logical(LK)) :: iseq
5100 end subroutine
5101#endif
5102
5103 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5104
5105#if IK5_ENABLED
5106 module subroutine setUniFixCusCom_D1_IK5(array, unique, lenUnique, count, iseq, index, order)
5107#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5108 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_IK5
5109#endif
5110 use pm_kind, only: IKG => IK5
5111 integer(IKG) , intent(in) , contiguous :: array(:)
5112 integer(IKG) , intent(out) , contiguous :: unique(:)
5113 integer(IK) , intent(out) :: lenUnique
5114 integer(IK) , intent(out) , contiguous :: count(:)
5115 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5116 integer(IK) , intent(in) , optional :: order
5117 procedure(logical(LK)) :: iseq
5118 end subroutine
5119#endif
5120
5121#if IK4_ENABLED
5122 module subroutine setUniFixCusCom_D1_IK4(array, unique, lenUnique, count, iseq, index, order)
5123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5124 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_IK4
5125#endif
5126 use pm_kind, only: IKG => IK4
5127 integer(IKG) , intent(in) , contiguous :: array(:)
5128 integer(IKG) , intent(out) , contiguous :: unique(:)
5129 integer(IK) , intent(out) :: lenUnique
5130 integer(IK) , intent(out) , contiguous :: count(:)
5131 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5132 integer(IK) , intent(in) , optional :: order
5133 procedure(logical(LK)) :: iseq
5134 end subroutine
5135#endif
5136
5137#if IK3_ENABLED
5138 module subroutine setUniFixCusCom_D1_IK3(array, unique, lenUnique, count, iseq, index, order)
5139#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5140 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_IK3
5141#endif
5142 use pm_kind, only: IKG => IK3
5143 integer(IKG) , intent(in) , contiguous :: array(:)
5144 integer(IKG) , intent(out) , contiguous :: unique(:)
5145 integer(IK) , intent(out) :: lenUnique
5146 integer(IK) , intent(out) , contiguous :: count(:)
5147 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5148 integer(IK) , intent(in) , optional :: order
5149 procedure(logical(LK)) :: iseq
5150 end subroutine
5151
5152#endif
5153
5154#if IK2_ENABLED
5155 module subroutine setUniFixCusCom_D1_IK2(array, unique, lenUnique, count, iseq, index, order)
5156#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5157 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_IK2
5158#endif
5159 use pm_kind, only: IKG => IK2
5160 integer(IKG) , intent(in) , contiguous :: array(:)
5161 integer(IKG) , intent(out) , contiguous :: unique(:)
5162 integer(IK) , intent(out) :: lenUnique
5163 integer(IK) , intent(out) , contiguous :: count(:)
5164 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5165 integer(IK) , intent(in) , optional :: order
5166 procedure(logical(LK)) :: iseq
5167 end subroutine
5168#endif
5169
5170#if IK1_ENABLED
5171 module subroutine setUniFixCusCom_D1_IK1(array, unique, lenUnique, count, iseq, index, order)
5172#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5173 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_IK1
5174#endif
5175 use pm_kind, only: IKG => IK1
5176 integer(IKG) , intent(in) , contiguous :: array(:)
5177 integer(IKG) , intent(out) , contiguous :: unique(:)
5178 integer(IK) , intent(out) :: lenUnique
5179 integer(IK) , intent(out) , contiguous :: count(:)
5180 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5181 integer(IK) , intent(in) , optional :: order
5182 procedure(logical(LK)) :: iseq
5183 end subroutine
5184#endif
5185
5186 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5187
5188#if LK5_ENABLED
5189 module subroutine setUniFixCusCom_D1_LK5(array, unique, lenUnique, count, iseq, index, order)
5190#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5191 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_LK5
5192#endif
5193 use pm_kind, only: LKG => LK5
5194 logical(LKG) , intent(in) , contiguous :: array(:)
5195 logical(LKG) , intent(out) , contiguous :: unique(:)
5196 integer(IK) , intent(out) :: lenUnique
5197 integer(IK) , intent(out) , contiguous :: count(:)
5198 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5199 integer(IK) , intent(in) , optional :: order
5200 procedure(logical(LK)) :: iseq
5201 end subroutine
5202#endif
5203
5204#if LK4_ENABLED
5205 module subroutine setUniFixCusCom_D1_LK4(array, unique, lenUnique, count, iseq, index, order)
5206#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5207 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_LK4
5208#endif
5209 use pm_kind, only: LKG => LK4
5210 logical(LKG) , intent(in) , contiguous :: array(:)
5211 logical(LKG) , intent(out) , contiguous :: unique(:)
5212 integer(IK) , intent(out) :: lenUnique
5213 integer(IK) , intent(out) , contiguous :: count(:)
5214 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5215 integer(IK) , intent(in) , optional :: order
5216 procedure(logical(LK)) :: iseq
5217 end subroutine
5218#endif
5219
5220#if LK3_ENABLED
5221 module subroutine setUniFixCusCom_D1_LK3(array, unique, lenUnique, count, iseq, index, order)
5222#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5223 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_LK3
5224#endif
5225 use pm_kind, only: LKG => LK3
5226 logical(LKG) , intent(in) , contiguous :: array(:)
5227 logical(LKG) , intent(out) , contiguous :: unique(:)
5228 integer(IK) , intent(out) :: lenUnique
5229 integer(IK) , intent(out) , contiguous :: count(:)
5230 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5231 integer(IK) , intent(in) , optional :: order
5232 procedure(logical(LK)) :: iseq
5233 end subroutine
5234#endif
5235
5236#if LK2_ENABLED
5237 module subroutine setUniFixCusCom_D1_LK2(array, unique, lenUnique, count, iseq, index, order)
5238#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5239 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_LK2
5240#endif
5241 use pm_kind, only: LKG => LK2
5242 logical(LKG) , intent(in) , contiguous :: array(:)
5243 logical(LKG) , intent(out) , contiguous :: unique(:)
5244 integer(IK) , intent(out) :: lenUnique
5245 integer(IK) , intent(out) , contiguous :: count(:)
5246 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5247 integer(IK) , intent(in) , optional :: order
5248 procedure(logical(LK)) :: iseq
5249 end subroutine
5250#endif
5251
5252#if LK1_ENABLED
5253 module subroutine setUniFixCusCom_D1_LK1(array, unique, lenUnique, count, iseq, index, order)
5254#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5255 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_LK1
5256#endif
5257 use pm_kind, only: LKG => LK1
5258 logical(LKG) , intent(in) , contiguous :: array(:)
5259 logical(LKG) , intent(out) , contiguous :: unique(:)
5260 integer(IK) , intent(out) :: lenUnique
5261 integer(IK) , intent(out) , contiguous :: count(:)
5262 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5263 integer(IK) , intent(in) , optional :: order
5264 procedure(logical(LK)) :: iseq
5265 end subroutine
5266#endif
5267
5268 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5269
5270#if CK5_ENABLED
5271 module subroutine setUniFixCusCom_D1_CK5(array, unique, lenUnique, count, iseq, index, order)
5272#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5273 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_CK5
5274#endif
5275 use pm_kind, only: CKG => CK5
5276 complex(CKG) , intent(in) , contiguous :: array(:)
5277 complex(CKG) , intent(out) , contiguous :: unique(:)
5278 integer(IK) , intent(out) :: lenUnique
5279 integer(IK) , intent(out) , contiguous :: count(:)
5280 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5281 integer(IK) , intent(in) , optional :: order
5282 procedure(logical(LK)) :: iseq
5283 end subroutine
5284#endif
5285
5286#if CK4_ENABLED
5287 module subroutine setUniFixCusCom_D1_CK4(array, unique, lenUnique, count, iseq, index, order)
5288#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5289 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_CK4
5290#endif
5291 use pm_kind, only: CKG => CK4
5292 complex(CKG) , intent(in) , contiguous :: array(:)
5293 complex(CKG) , intent(out) , contiguous :: unique(:)
5294 integer(IK) , intent(out) :: lenUnique
5295 integer(IK) , intent(out) , contiguous :: count(:)
5296 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5297 integer(IK) , intent(in) , optional :: order
5298 procedure(logical(LK)) :: iseq
5299 end subroutine
5300#endif
5301
5302#if CK3_ENABLED
5303 module subroutine setUniFixCusCom_D1_CK3(array, unique, lenUnique, count, iseq, index, order)
5304#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5305 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_CK3
5306#endif
5307 use pm_kind, only: CKG => CK3
5308 complex(CKG) , intent(in) , contiguous :: array(:)
5309 complex(CKG) , intent(out) , contiguous :: unique(:)
5310 integer(IK) , intent(out) :: lenUnique
5311 integer(IK) , intent(out) , contiguous :: count(:)
5312 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5313 integer(IK) , intent(in) , optional :: order
5314 procedure(logical(LK)) :: iseq
5315 end subroutine
5316#endif
5317
5318#if CK2_ENABLED
5319 module subroutine setUniFixCusCom_D1_CK2(array, unique, lenUnique, count, iseq, index, order)
5320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5321 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_CK2
5322#endif
5323 use pm_kind, only: CKG => CK2
5324 complex(CKG) , intent(in) , contiguous :: array(:)
5325 complex(CKG) , intent(out) , contiguous :: unique(:)
5326 integer(IK) , intent(out) :: lenUnique
5327 integer(IK) , intent(out) , contiguous :: count(:)
5328 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5329 integer(IK) , intent(in) , optional :: order
5330 procedure(logical(LK)) :: iseq
5331 end subroutine
5332#endif
5333
5334#if CK1_ENABLED
5335 module subroutine setUniFixCusCom_D1_CK1(array, unique, lenUnique, count, iseq, index, order)
5336#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5337 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_CK1
5338#endif
5339 use pm_kind, only: CKG => CK1
5340 complex(CKG) , intent(in) , contiguous :: array(:)
5341 complex(CKG) , intent(out) , contiguous :: unique(:)
5342 integer(IK) , intent(out) :: lenUnique
5343 integer(IK) , intent(out) , contiguous :: count(:)
5344 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5345 integer(IK) , intent(in) , optional :: order
5346 procedure(logical(LK)) :: iseq
5347 end subroutine
5348#endif
5349
5350 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5351
5352#if RK5_ENABLED
5353 module subroutine setUniFixCusCom_D1_RK5(array, unique, lenUnique, count, iseq, index, order)
5354#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5355 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_RK5
5356#endif
5357 use pm_kind, only: RKG => RK5
5358 real(RKG) , intent(in) , contiguous :: array(:)
5359 real(RKG) , intent(out) , contiguous :: unique(:)
5360 integer(IK) , intent(out) :: lenUnique
5361 integer(IK) , intent(out) , contiguous :: count(:)
5362 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5363 integer(IK) , intent(in) , optional :: order
5364 procedure(logical(LK)) :: iseq
5365 end subroutine
5366#endif
5367
5368#if RK4_ENABLED
5369 module subroutine setUniFixCusCom_D1_RK4(array, unique, lenUnique, count, iseq, index, order)
5370#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5371 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_RK4
5372#endif
5373 use pm_kind, only: RKG => RK4
5374 real(RKG) , intent(in) , contiguous :: array(:)
5375 real(RKG) , intent(out) , contiguous :: unique(:)
5376 integer(IK) , intent(out) :: lenUnique
5377 integer(IK) , intent(out) , contiguous :: count(:)
5378 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5379 integer(IK) , intent(in) , optional :: order
5380 procedure(logical(LK)) :: iseq
5381 end subroutine
5382#endif
5383
5384#if RK3_ENABLED
5385 module subroutine setUniFixCusCom_D1_RK3(array, unique, lenUnique, count, iseq, index, order)
5386#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5387 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_RK3
5388#endif
5389 use pm_kind, only: RKG => RK3
5390 real(RKG) , intent(in) , contiguous :: array(:)
5391 real(RKG) , intent(out) , contiguous :: unique(:)
5392 integer(IK) , intent(out) :: lenUnique
5393 integer(IK) , intent(out) , contiguous :: count(:)
5394 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5395 integer(IK) , intent(in) , optional :: order
5396 procedure(logical(LK)) :: iseq
5397 end subroutine
5398#endif
5399
5400#if RK2_ENABLED
5401 module subroutine setUniFixCusCom_D1_RK2(array, unique, lenUnique, count, iseq, index, order)
5402#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5403 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_RK2
5404#endif
5405 use pm_kind, only: RKG => RK2
5406 real(RKG) , intent(in) , contiguous :: array(:)
5407 real(RKG) , intent(out) , contiguous :: unique(:)
5408 integer(IK) , intent(out) :: lenUnique
5409 integer(IK) , intent(out) , contiguous :: count(:)
5410 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5411 integer(IK) , intent(in) , optional :: order
5412 procedure(logical(LK)) :: iseq
5413 end subroutine
5414#endif
5415
5416#if RK1_ENABLED
5417 module subroutine setUniFixCusCom_D1_RK1(array, unique, lenUnique, count, iseq, index, order)
5418#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5419 !DEC$ ATTRIBUTES DLLEXPORT :: setUniFixCusCom_D1_RK1
5420#endif
5421 use pm_kind, only: RKG => RK1
5422 real(RKG) , intent(in) , contiguous :: array(:)
5423 real(RKG) , intent(out) , contiguous :: unique(:)
5424 integer(IK) , intent(out) :: lenUnique
5425 integer(IK) , intent(out) , contiguous :: count(:)
5426 type(cvi_type) , intent(out) , contiguous , optional :: index(:)
5427 integer(IK) , intent(in) , optional :: order
5428 procedure(logical(LK)) :: iseq
5429 end subroutine
5430#endif
5431
5432 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5433
5434 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5435 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5436 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5437 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5438 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5439 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5440
5441 end interface setUnique
5442
5443!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5444
5445contains
5446
5447!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5448
5449! !> \brief
5450! !> Find the unique values in the input integer vector.
5451! !>
5452! !> \param[in] lenVector : The size of the input square matrix - `nd` by `nd`.
5453! !> \param[in] Vector : The input integer vector.
5454! !> \param[out] lenUnique : The length of `UniqueValue`, that is, the total number of unique values.
5455! !> \param[out] UniqueValue : The vector of unique values identified in the input vector.
5456! !> \param[out] uniqueCount : The counts of each unique value in the input vector.
5457! !> \param[out] UniqueIndex : A jaggedArray of type [cvi_type](@ref pm_container::cvi_type) of length `lenUnique`,
5458! !> the ith element of which is a vector of length `uniqueCount(i)` that contains the
5459! !> indices of `Vector` where `UniqueValue(i)` occur (**optional**).
5460! !> \param[in] sorting : The input `integer` of default kind \IK.
5461! !> If `0`, the output `uniqueCount` will be not be sorted.
5462! !> If `-1`, the output `uniqueCount` will be sorted in **descending** order and along with it `UniqueValue` and `UniqueIndex`.
5463! !> If `+1`, the output `uniqueCount` will be sorted in **ascending** order and along with it `UniqueValue` and `UniqueIndex`.
5464! !> (**optional**, default = `0_IK`)
5465! !>
5466! !> \warnpure
5467! !>
5468! !> \warning
5469! !> To avoid extra data copy and improve performance, the output arrays `uniqueCount` and `UniqueValue` will not be
5470! !> resized from `(1:lenVector)` to `(1:lenUnique)`. The onus is on the user to ensure only the elements `(1:lenUnique)`
5471! !> are used for any subsequent work as only these elements are meaningful. **However**, if `Err` argument is present,
5472! !> the two aforementioned arrays will be ordered and then automatically resized to `(1:lenUnique)`.
5473! !>
5474! PURE subroutine findUniqueValueCount_IK(Vector, lenUnique, UniqueValue, uniqueCount, UniqueIndex, sorting)
5475!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5476! !DEC$ ATTRIBUTES DLLEXPORT :: findUniqueValueCount_IK
5477!#endif
5478! use pm_container, only: IV => cvi_type
5479! use pm_arraySort, only: setSorted
5480! use pm_kind, only: IK
5481!
5482! implicit none
5483!
5484! integer(IK) , intent(in) , contiguous :: Vector(:)
5485! integer(IK) , intent(out) :: lenUnique
5486! integer(IK) , intent(out) , allocatable :: uniqueValue(:)
5487! integer(IK) , intent(out) , allocatable :: uniqueCount(:)
5488! type(IV) , intent(out) , allocatable , optional :: uniqueIndex(:)
5489! integer(IK) , intent(in) , optional :: sorting
5490!
5491!
5492! character(*, SK), parameter :: PROCEDURE_NAME = MODULE_NAME//SK_"@findUniqueValueCount_IK()"
5493!
5494! integer(IK) :: lenVector
5495! integer(IK) , allocatable :: indx(:)
5496! integer(IK) :: ivec, iuniq, counter
5497! integer(IK) :: sorting_def
5498! logical(LK) :: isUnique
5499!
5500! lenVector = size(Vector, kind = IK)
5501!
5502! if (present(sorting)) then
5503! sorting_def = sorting
5504! else
5505! sorting_def = 0_IK
5506! end if
5507!
5508! allocate(UniqueValue(lenVector))
5509! allocate(uniqueCount(lenVector), source = 0_IK)
5510!
5511! lenUnique = 0_IK
5512!
5513! do ivec = 1, lenVector
5514! isUnique = .true._LK
5515! loopSearchUnique: do iuniq = 1, lenUnique
5516! if (UniqueValue(iuniq)==Vector(ivec)) then
5517! uniqueCount(iuniq) = uniqueCount(iuniq) + 1
5518! isUnique = .false._LK
5519! exit loopSearchUnique
5520! end if
5521! end do loopSearchUnique
5522! if (isUnique) then
5523! lenUnique = lenUnique + 1
5524! UniqueValue(lenUnique) = Vector(ivec)
5525! uniqueCount(lenUnique) = uniqueCount(lenUnique) + 1
5526! end if
5527! end do
5528!
5529! if (sorting_def /= 0_IK) then
5530! allocate(indx(lenUnique))
5531! call setSorted(uniqueCount(1:lenUnique), indx)
5532! if (sorting_def < 0_IK) then
5533! uniqueCount = uniqueCount(indx(lenUnique:1:-1))
5534! UniqueValue = UniqueValue(indx(lenUnique:1:-1))
5535! else
5536! uniqueCount = uniqueCount(indx)
5537! UniqueValue = UniqueValue(indx)
5538! end if
5539! deallocate(indx)
5540! end if
5541!
5542! if (present(UniqueIndex)) then
5543! allocate(UniqueIndex(lenUnique))
5544! loopUniqueIndex: do iuniq = 1, lenUnique
5545! allocate(UniqueIndex(iuniq)%val(uniqueCount(iuniq)))
5546! counter = 1_IK
5547! loopOverVector: do ivec = 1, lenVector
5548! if (UniqueValue(iuniq) == Vector(ivec)) then
5549! UniqueIndex(iuniq)%val(counter) = ivec
5550! counter = counter + 1_IK
5551! end if
5552! if (counter > uniqueCount(iuniq)) exit loopOverVector
5553! end do loopOverVector
5554! end do loopUniqueIndex
5555! end if
5556!
5557! end subroutine findUniqueValueCount_IK
5558
5559!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5560
5561end module pm_arrayUnique
Generate and return a vector of unique values in the input array.
Generate and return .true. if and only if all elements of the input sequence values are unique.
Generate and return .true. if and only if at least one element of the input sequence is unique among ...
Generate and return .true. for each element of the input sequence whose value is unique among all seq...
Return a vector of unique values in the input array in place of the array itself.
This module contains procedures and generic interfaces for finding unique values of an input array of...
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 derived type for generating a container of a vector component of type integer of default ...