ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_arrayComplement.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
17! \bug
18! The following bypasses the bug reported below that creates a conflict between Intel and gfortran.
19#if __INTEL_COMPILER
20#define LEN_STR :
21#else
22#define LEN_STR len(setA,IK)
23#endif
24
61
62!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
63
65
66 use pm_kind, only: SK, IK, LK
67 implicit none
68
69 character(*, SK), parameter :: MODULE_NAME = "@pm_arrayComplement"
70
183
184 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
185 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
186 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
187
188 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
189
190#if SK5_ENABLED
191 PURE module function getComplementRandomDefCom_D0_SK5(setA, setB) result(complement)
192#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
193 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D0_SK5
194#endif
195 use pm_kind, only: SKG => SK5
196 character(*,SKG) , intent(in) :: setA
197 character(*,SKG) , intent(in) :: setB
198 character(:,SKG) , allocatable :: complement
199 end function
200#endif
201
202#if SK4_ENABLED
203 PURE module function getComplementRandomDefCom_D0_SK4(setA, setB) result(complement)
204#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
205 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D0_SK4
206#endif
207 use pm_kind, only: SKG => SK4
208 character(*,SKG) , intent(in) :: setA
209 character(*,SKG) , intent(in) :: setB
210 character(:,SKG) , allocatable :: complement
211 end function
212#endif
213
214#if SK3_ENABLED
215 PURE module function getComplementRandomDefCom_D0_SK3(setA, setB) result(complement)
216#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
217 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D0_SK3
218#endif
219 use pm_kind, only: SKG => SK3
220 character(*,SKG) , intent(in) :: setA
221 character(*,SKG) , intent(in) :: setB
222 character(:,SKG) , allocatable :: complement
223 end function
224#endif
225
226#if SK2_ENABLED
227 PURE module function getComplementRandomDefCom_D0_SK2(setA, setB) result(complement)
228#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
229 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D0_SK2
230#endif
231 use pm_kind, only: SKG => SK2
232 character(*,SKG) , intent(in) :: setA
233 character(*,SKG) , intent(in) :: setB
234 character(:,SKG) , allocatable :: complement
235 end function
236#endif
237
238#if SK1_ENABLED
239 PURE module function getComplementRandomDefCom_D0_SK1(setA, setB) result(complement)
240#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
241 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D0_SK1
242#endif
243 use pm_kind, only: SKG => SK1
244 character(*,SKG) , intent(in) :: setA
245 character(*,SKG) , intent(in) :: setB
246 character(:,SKG) , allocatable :: complement
247 end function
248#endif
249
250 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
251
252#if SK5_ENABLED
253 PURE module function getComplementRandomDefCom_D1_SK5(setA, setB) result(complement)
254#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
255 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_SK5
256#endif
257 use pm_kind, only: SKG => SK5
258 character(*,SKG) , intent(in), contiguous :: setA(:)
259 character(*,SKG) , intent(in), contiguous :: setB(:)
260 character(LEN_STR,SKG) , allocatable :: complement(:)
261 end function
262#endif
263
264#if SK4_ENABLED
265 PURE module function getComplementRandomDefCom_D1_SK4(setA, setB) result(complement)
266#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
267 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_SK4
268#endif
269 use pm_kind, only: SKG => SK4
270 character(*,SKG) , intent(in), contiguous :: setA(:)
271 character(*,SKG) , intent(in), contiguous :: setB(:)
272 character(LEN_STR,SKG) , allocatable :: complement(:)
273 end function
274#endif
275
276#if SK3_ENABLED
277 PURE module function getComplementRandomDefCom_D1_SK3(setA, setB) result(complement)
278#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
279 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_SK3
280#endif
281 use pm_kind, only: SKG => SK3
282 character(*,SKG) , intent(in), contiguous :: setA(:)
283 character(*,SKG) , intent(in), contiguous :: setB(:)
284 character(LEN_STR,SKG) , allocatable :: complement(:)
285 end function
286#endif
287
288#if SK2_ENABLED
289 PURE module function getComplementRandomDefCom_D1_SK2(setA, setB) result(complement)
290#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
291 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_SK2
292#endif
293 use pm_kind, only: SKG => SK2
294 character(*,SKG) , intent(in), contiguous :: setA(:)
295 character(*,SKG) , intent(in), contiguous :: setB(:)
296 character(LEN_STR,SKG) , allocatable :: complement(:)
297 end function
298#endif
299
300#if SK1_ENABLED
301 PURE module function getComplementRandomDefCom_D1_SK1(setA, setB) result(complement)
302#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
303 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_SK1
304#endif
305 use pm_kind, only: SKG => SK1
306 character(*,SKG) , intent(in), contiguous :: setA(:)
307 character(*,SKG) , intent(in), contiguous :: setB(:)
308 character(LEN_STR,SKG) , allocatable :: complement(:)
309 end function
310#endif
311
312 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
313
314#if IK5_ENABLED
315 PURE module function getComplementRandomDefCom_D1_IK5(setA, setB) result(complement)
316#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
317 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_IK5
318#endif
319 use pm_kind, only: IKG => IK5
320 integer(IKG) , intent(in), contiguous :: setA(:)
321 integer(IKG) , intent(in), contiguous :: setB(:)
322 integer(IKG) , allocatable :: complement(:)
323 end function
324#endif
325
326#if IK4_ENABLED
327 PURE module function getComplementRandomDefCom_D1_IK4(setA, setB) result(complement)
328#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
329 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_IK4
330#endif
331 use pm_kind, only: IKG => IK4
332 integer(IKG) , intent(in), contiguous :: setA(:)
333 integer(IKG) , intent(in), contiguous :: setB(:)
334 integer(IKG) , allocatable :: complement(:)
335 end function
336#endif
337
338#if IK3_ENABLED
339 PURE module function getComplementRandomDefCom_D1_IK3(setA, setB) result(complement)
340#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
341 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_IK3
342#endif
343 use pm_kind, only: IKG => IK3
344 integer(IKG) , intent(in), contiguous :: setA(:)
345 integer(IKG) , intent(in), contiguous :: setB(:)
346 integer(IKG) , allocatable :: complement(:)
347 end function
348#endif
349
350#if IK2_ENABLED
351 PURE module function getComplementRandomDefCom_D1_IK2(setA, setB) result(complement)
352#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
353 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_IK2
354#endif
355 use pm_kind, only: IKG => IK2
356 integer(IKG) , intent(in), contiguous :: setA(:)
357 integer(IKG) , intent(in), contiguous :: setB(:)
358 integer(IKG) , allocatable :: complement(:)
359 end function
360#endif
361
362#if IK1_ENABLED
363 PURE module function getComplementRandomDefCom_D1_IK1(setA, setB) result(complement)
364#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
365 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_IK1
366#endif
367 use pm_kind, only: IKG => IK1
368 integer(IKG) , intent(in), contiguous :: setA(:)
369 integer(IKG) , intent(in), contiguous :: setB(:)
370 integer(IKG) , allocatable :: complement(:)
371 end function
372#endif
373
374 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
375
376#if LK5_ENABLED
377 PURE module function getComplementRandomDefCom_D1_LK5(setA, setB) result(complement)
378#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
379 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_LK5
380#endif
381 use pm_kind, only: LKG => LK5
382 logical(LKG) , intent(in), contiguous :: setA(:)
383 logical(LKG) , intent(in), contiguous :: setB(:)
384 logical(LKG) , allocatable :: complement(:)
385 end function
386#endif
387
388#if LK4_ENABLED
389 PURE module function getComplementRandomDefCom_D1_LK4(setA, setB) result(complement)
390#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
391 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_LK4
392#endif
393 use pm_kind, only: LKG => LK4
394 logical(LKG) , intent(in), contiguous :: setA(:)
395 logical(LKG) , intent(in), contiguous :: setB(:)
396 logical(LKG) , allocatable :: complement(:)
397 end function
398#endif
399
400#if LK3_ENABLED
401 PURE module function getComplementRandomDefCom_D1_LK3(setA, setB) result(complement)
402#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
403 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_LK3
404#endif
405 use pm_kind, only: LKG => LK3
406 logical(LKG) , intent(in), contiguous :: setA(:)
407 logical(LKG) , intent(in), contiguous :: setB(:)
408 logical(LKG) , allocatable :: complement(:)
409 end function
410#endif
411
412#if LK2_ENABLED
413 PURE module function getComplementRandomDefCom_D1_LK2(setA, setB) result(complement)
414#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
415 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_LK2
416#endif
417 use pm_kind, only: LKG => LK2
418 logical(LKG) , intent(in), contiguous :: setA(:)
419 logical(LKG) , intent(in), contiguous :: setB(:)
420 logical(LKG) , allocatable :: complement(:)
421 end function
422#endif
423
424#if LK1_ENABLED
425 PURE module function getComplementRandomDefCom_D1_LK1(setA, setB) result(complement)
426#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
427 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_LK1
428#endif
429 use pm_kind, only: LKG => LK1
430 logical(LKG) , intent(in), contiguous :: setA(:)
431 logical(LKG) , intent(in), contiguous :: setB(:)
432 logical(LKG) , allocatable :: complement(:)
433 end function
434#endif
435
436 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
437
438#if CK5_ENABLED
439 PURE module function getComplementRandomDefCom_D1_CK5(setA, setB) result(complement)
440#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
441 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_CK5
442#endif
443 use pm_kind, only: CKG => CK5
444 complex(CKG) , intent(in), contiguous :: setA(:)
445 complex(CKG) , intent(in), contiguous :: setB(:)
446 complex(CKG) , allocatable :: complement(:)
447 end function
448#endif
449
450#if CK4_ENABLED
451 PURE module function getComplementRandomDefCom_D1_CK4(setA, setB) result(complement)
452#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
453 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_CK4
454#endif
455 use pm_kind, only: CKG => CK4
456 complex(CKG) , intent(in), contiguous :: setA(:)
457 complex(CKG) , intent(in), contiguous :: setB(:)
458 complex(CKG) , allocatable :: complement(:)
459 end function
460#endif
461
462#if CK3_ENABLED
463 PURE module function getComplementRandomDefCom_D1_CK3(setA, setB) result(complement)
464#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
465 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_CK3
466#endif
467 use pm_kind, only: CKG => CK3
468 complex(CKG) , intent(in), contiguous :: setA(:)
469 complex(CKG) , intent(in), contiguous :: setB(:)
470 complex(CKG) , allocatable :: complement(:)
471 end function
472#endif
473
474#if CK2_ENABLED
475 PURE module function getComplementRandomDefCom_D1_CK2(setA, setB) result(complement)
476#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
477 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_CK2
478#endif
479 use pm_kind, only: CKG => CK2
480 complex(CKG) , intent(in), contiguous :: setA(:)
481 complex(CKG) , intent(in), contiguous :: setB(:)
482 complex(CKG) , allocatable :: complement(:)
483 end function
484#endif
485
486#if CK1_ENABLED
487 PURE module function getComplementRandomDefCom_D1_CK1(setA, setB) result(complement)
488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
489 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_CK1
490#endif
491 use pm_kind, only: CKG => CK1
492 complex(CKG) , intent(in), contiguous :: setA(:)
493 complex(CKG) , intent(in), contiguous :: setB(:)
494 complex(CKG) , allocatable :: complement(:)
495 end function
496#endif
497
498 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
499
500#if RK5_ENABLED
501 PURE module function getComplementRandomDefCom_D1_RK5(setA, setB) result(complement)
502#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
503 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_RK5
504#endif
505 use pm_kind, only: RKG => RK5
506 real(RKG) , intent(in), contiguous :: setA(:)
507 real(RKG) , intent(in), contiguous :: setB(:)
508 real(RKG) , allocatable :: complement(:)
509 end function
510#endif
511
512#if RK4_ENABLED
513 PURE module function getComplementRandomDefCom_D1_RK4(setA, setB) result(complement)
514#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
515 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_RK4
516#endif
517 use pm_kind, only: RKG => RK4
518 real(RKG) , intent(in), contiguous :: setA(:)
519 real(RKG) , intent(in), contiguous :: setB(:)
520 real(RKG) , allocatable :: complement(:)
521 end function
522#endif
523
524#if RK3_ENABLED
525 PURE module function getComplementRandomDefCom_D1_RK3(setA, setB) result(complement)
526#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
527 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_RK3
528#endif
529 use pm_kind, only: RKG => RK3
530 real(RKG) , intent(in), contiguous :: setA(:)
531 real(RKG) , intent(in), contiguous :: setB(:)
532 real(RKG) , allocatable :: complement(:)
533 end function
534#endif
535
536#if RK2_ENABLED
537 PURE module function getComplementRandomDefCom_D1_RK2(setA, setB) result(complement)
538#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
539 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_RK2
540#endif
541 use pm_kind, only: RKG => RK2
542 real(RKG) , intent(in), contiguous :: setA(:)
543 real(RKG) , intent(in), contiguous :: setB(:)
544 real(RKG) , allocatable :: complement(:)
545 end function
546#endif
547
548#if RK1_ENABLED
549 PURE module function getComplementRandomDefCom_D1_RK1(setA, setB) result(complement)
550#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
551 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomDefCom_D1_RK1
552#endif
553 use pm_kind, only: RKG => RK1
554 real(RKG) , intent(in), contiguous :: setA(:)
555 real(RKG) , intent(in), contiguous :: setB(:)
556 real(RKG) , allocatable :: complement(:)
557 end function
558#endif
559
560 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
561
562 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
563 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
564 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
565
566 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
567
568#if SK5_ENABLED
569 module function getComplementRandomCusCom_D0_SK5(setA, setB, iseq) result(complement)
570#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
571 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D0_SK5
572#endif
573 use pm_kind, only: SKG => SK5
574 character(*,SKG) , intent(in) :: setA
575 character(*,SKG) , intent(in) :: setB
576 procedure(logical(LK)) :: iseq
577 character(:,SKG) , allocatable :: complement
578 end function
579#endif
580
581#if SK4_ENABLED
582 module function getComplementRandomCusCom_D0_SK4(setA, setB, iseq) result(complement)
583#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
584 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D0_SK4
585#endif
586 use pm_kind, only: SKG => SK4
587 character(*,SKG) , intent(in) :: setA
588 character(*,SKG) , intent(in) :: setB
589 procedure(logical(LK)) :: iseq
590 character(:,SKG) , allocatable :: complement
591 end function
592#endif
593
594#if SK3_ENABLED
595 module function getComplementRandomCusCom_D0_SK3(setA, setB, iseq) result(complement)
596#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
597 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D0_SK3
598#endif
599 use pm_kind, only: SKG => SK3
600 character(*,SKG) , intent(in) :: setA
601 character(*,SKG) , intent(in) :: setB
602 procedure(logical(LK)) :: iseq
603 character(:,SKG) , allocatable :: complement
604 end function
605#endif
606
607#if SK2_ENABLED
608 module function getComplementRandomCusCom_D0_SK2(setA, setB, iseq) result(complement)
609#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
610 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D0_SK2
611#endif
612 use pm_kind, only: SKG => SK2
613 character(*,SKG) , intent(in) :: setA
614 character(*,SKG) , intent(in) :: setB
615 procedure(logical(LK)) :: iseq
616 character(:,SKG) , allocatable :: complement
617 end function
618#endif
619
620#if SK1_ENABLED
621 module function getComplementRandomCusCom_D0_SK1(setA, setB, iseq) result(complement)
622#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
623 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D0_SK1
624#endif
625 use pm_kind, only: SKG => SK1
626 character(*,SKG) , intent(in) :: setA
627 character(*,SKG) , intent(in) :: setB
628 procedure(logical(LK)) :: iseq
629 character(:,SKG) , allocatable :: complement
630 end function
631#endif
632
633 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
634
635#if SK5_ENABLED
636 module function getComplementRandomCusCom_D1_SK5(setA, setB, iseq) result(complement)
637#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
638 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_SK5
639#endif
640 use pm_kind, only: SKG => SK5
641 character(*,SKG) , intent(in), contiguous :: setA(:)
642 character(*,SKG) , intent(in), contiguous :: setB(:)
643 procedure(logical(LK)) :: iseq
644 character(LEN_STR,SKG) , allocatable :: complement(:)
645 end function
646#endif
647
648#if SK4_ENABLED
649 module function getComplementRandomCusCom_D1_SK4(setA, setB, iseq) result(complement)
650#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
651 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_SK4
652#endif
653 use pm_kind, only: SKG => SK4
654 character(*,SKG) , intent(in), contiguous :: setA(:)
655 character(*,SKG) , intent(in), contiguous :: setB(:)
656 procedure(logical(LK)) :: iseq
657 character(LEN_STR,SKG) , allocatable :: complement(:)
658 end function
659#endif
660
661#if SK3_ENABLED
662 module function getComplementRandomCusCom_D1_SK3(setA, setB, iseq) result(complement)
663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
664 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_SK3
665#endif
666 use pm_kind, only: SKG => SK3
667 character(*,SKG) , intent(in), contiguous :: setA(:)
668 character(*,SKG) , intent(in), contiguous :: setB(:)
669 procedure(logical(LK)) :: iseq
670 character(LEN_STR,SKG) , allocatable :: complement(:)
671 end function
672#endif
673
674#if SK2_ENABLED
675 module function getComplementRandomCusCom_D1_SK2(setA, setB, iseq) result(complement)
676#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
677 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_SK2
678#endif
679 use pm_kind, only: SKG => SK2
680 character(*,SKG) , intent(in), contiguous :: setA(:)
681 character(*,SKG) , intent(in), contiguous :: setB(:)
682 procedure(logical(LK)) :: iseq
683 character(LEN_STR,SKG) , allocatable :: complement(:)
684 end function
685#endif
686
687#if SK1_ENABLED
688 module function getComplementRandomCusCom_D1_SK1(setA, setB, iseq) result(complement)
689#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
690 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_SK1
691#endif
692 use pm_kind, only: SKG => SK1
693 character(*,SKG) , intent(in), contiguous :: setA(:)
694 character(*,SKG) , intent(in), contiguous :: setB(:)
695 procedure(logical(LK)) :: iseq
696 character(LEN_STR,SKG) , allocatable :: complement(:)
697 end function
698#endif
699
700 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
701
702#if IK5_ENABLED
703 module function getComplementRandomCusCom_D1_IK5(setA, setB, iseq) result(complement)
704#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
705 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_IK5
706#endif
707 use pm_kind, only: IKG => IK5
708 integer(IKG) , intent(in), contiguous :: setA(:)
709 integer(IKG) , intent(in), contiguous :: setB(:)
710 procedure(logical(LK)) :: iseq
711 integer(IKG) , allocatable :: complement(:)
712 end function
713#endif
714
715#if IK4_ENABLED
716 module function getComplementRandomCusCom_D1_IK4(setA, setB, iseq) result(complement)
717#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
718 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_IK4
719#endif
720 use pm_kind, only: IKG => IK4
721 integer(IKG) , intent(in), contiguous :: setA(:)
722 integer(IKG) , intent(in), contiguous :: setB(:)
723 procedure(logical(LK)) :: iseq
724 integer(IKG) , allocatable :: complement(:)
725 end function
726#endif
727
728#if IK3_ENABLED
729 module function getComplementRandomCusCom_D1_IK3(setA, setB, iseq) result(complement)
730#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
731 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_IK3
732#endif
733 use pm_kind, only: IKG => IK3
734 integer(IKG) , intent(in), contiguous :: setA(:)
735 integer(IKG) , intent(in), contiguous :: setB(:)
736 procedure(logical(LK)) :: iseq
737 integer(IKG) , allocatable :: complement(:)
738 end function
739#endif
740
741#if IK2_ENABLED
742 module function getComplementRandomCusCom_D1_IK2(setA, setB, iseq) result(complement)
743#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
744 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_IK2
745#endif
746 use pm_kind, only: IKG => IK2
747 integer(IKG) , intent(in), contiguous :: setA(:)
748 integer(IKG) , intent(in), contiguous :: setB(:)
749 procedure(logical(LK)) :: iseq
750 integer(IKG) , allocatable :: complement(:)
751 end function
752#endif
753
754#if IK1_ENABLED
755 module function getComplementRandomCusCom_D1_IK1(setA, setB, iseq) result(complement)
756#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
757 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_IK1
758#endif
759 use pm_kind, only: IKG => IK1
760 integer(IKG) , intent(in), contiguous :: setA(:)
761 integer(IKG) , intent(in), contiguous :: setB(:)
762 procedure(logical(LK)) :: iseq
763 integer(IKG) , allocatable :: complement(:)
764 end function
765#endif
766
767 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
768
769#if LK5_ENABLED
770 module function getComplementRandomCusCom_D1_LK5(setA, setB, iseq) result(complement)
771#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
772 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_LK5
773#endif
774 use pm_kind, only: LKG => LK5
775 logical(LKG) , intent(in), contiguous :: setA(:)
776 logical(LKG) , intent(in), contiguous :: setB(:)
777 procedure(logical(LK)) :: iseq
778 logical(LKG) , allocatable :: complement(:)
779 end function
780#endif
781
782#if LK4_ENABLED
783 module function getComplementRandomCusCom_D1_LK4(setA, setB, iseq) result(complement)
784#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
785 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_LK4
786#endif
787 use pm_kind, only: LKG => LK4
788 logical(LKG) , intent(in), contiguous :: setA(:)
789 logical(LKG) , intent(in), contiguous :: setB(:)
790 procedure(logical(LK)) :: iseq
791 logical(LKG) , allocatable :: complement(:)
792 end function
793#endif
794
795#if LK3_ENABLED
796 module function getComplementRandomCusCom_D1_LK3(setA, setB, iseq) result(complement)
797#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
798 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_LK3
799#endif
800 use pm_kind, only: LKG => LK3
801 logical(LKG) , intent(in), contiguous :: setA(:)
802 logical(LKG) , intent(in), contiguous :: setB(:)
803 procedure(logical(LK)) :: iseq
804 logical(LKG) , allocatable :: complement(:)
805 end function
806#endif
807
808#if LK2_ENABLED
809 module function getComplementRandomCusCom_D1_LK2(setA, setB, iseq) result(complement)
810#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
811 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_LK2
812#endif
813 use pm_kind, only: LKG => LK2
814 logical(LKG) , intent(in), contiguous :: setA(:)
815 logical(LKG) , intent(in), contiguous :: setB(:)
816 procedure(logical(LK)) :: iseq
817 logical(LKG) , allocatable :: complement(:)
818 end function
819#endif
820
821#if LK1_ENABLED
822 module function getComplementRandomCusCom_D1_LK1(setA, setB, iseq) result(complement)
823#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
824 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_LK1
825#endif
826 use pm_kind, only: LKG => LK1
827 logical(LKG) , intent(in), contiguous :: setA(:)
828 logical(LKG) , intent(in), contiguous :: setB(:)
829 procedure(logical(LK)) :: iseq
830 logical(LKG) , allocatable :: complement(:)
831 end function
832#endif
833
834 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
835
836#if CK5_ENABLED
837 module function getComplementRandomCusCom_D1_CK5(setA, setB, iseq) result(complement)
838#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
839 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_CK5
840#endif
841 use pm_kind, only: CKG => CK5
842 complex(CKG) , intent(in), contiguous :: setA(:)
843 complex(CKG) , intent(in), contiguous :: setB(:)
844 procedure(logical(LK)) :: iseq
845 complex(CKG) , allocatable :: complement(:)
846 end function
847#endif
848
849#if CK4_ENABLED
850 module function getComplementRandomCusCom_D1_CK4(setA, setB, iseq) result(complement)
851#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
852 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_CK4
853#endif
854 use pm_kind, only: CKG => CK4
855 complex(CKG) , intent(in), contiguous :: setA(:)
856 complex(CKG) , intent(in), contiguous :: setB(:)
857 procedure(logical(LK)) :: iseq
858 complex(CKG) , allocatable :: complement(:)
859 end function
860#endif
861
862#if CK3_ENABLED
863 module function getComplementRandomCusCom_D1_CK3(setA, setB, iseq) result(complement)
864#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
865 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_CK3
866#endif
867 use pm_kind, only: CKG => CK3
868 complex(CKG) , intent(in), contiguous :: setA(:)
869 complex(CKG) , intent(in), contiguous :: setB(:)
870 procedure(logical(LK)) :: iseq
871 complex(CKG) , allocatable :: complement(:)
872 end function
873#endif
874
875#if CK2_ENABLED
876 module function getComplementRandomCusCom_D1_CK2(setA, setB, iseq) result(complement)
877#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
878 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_CK2
879#endif
880 use pm_kind, only: CKG => CK2
881 complex(CKG) , intent(in), contiguous :: setA(:)
882 complex(CKG) , intent(in), contiguous :: setB(:)
883 procedure(logical(LK)) :: iseq
884 complex(CKG) , allocatable :: complement(:)
885 end function
886#endif
887
888#if CK1_ENABLED
889 module function getComplementRandomCusCom_D1_CK1(setA, setB, iseq) result(complement)
890#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
891 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_CK1
892#endif
893 use pm_kind, only: CKG => CK1
894 complex(CKG) , intent(in), contiguous :: setA(:)
895 complex(CKG) , intent(in), contiguous :: setB(:)
896 procedure(logical(LK)) :: iseq
897 complex(CKG) , allocatable :: complement(:)
898 end function
899#endif
900
901 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
902
903#if RK5_ENABLED
904 module function getComplementRandomCusCom_D1_RK5(setA, setB, iseq) result(complement)
905#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
906 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_RK5
907#endif
908 use pm_kind, only: RKG => RK5
909 real(RKG) , intent(in), contiguous :: setA(:)
910 real(RKG) , intent(in), contiguous :: setB(:)
911 procedure(logical(LK)) :: iseq
912 real(RKG) , allocatable :: complement(:)
913 end function
914#endif
915
916#if RK4_ENABLED
917 module function getComplementRandomCusCom_D1_RK4(setA, setB, iseq) result(complement)
918#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
919 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_RK4
920#endif
921 use pm_kind, only: RKG => RK4
922 real(RKG) , intent(in), contiguous :: setA(:)
923 real(RKG) , intent(in), contiguous :: setB(:)
924 procedure(logical(LK)) :: iseq
925 real(RKG) , allocatable :: complement(:)
926 end function
927#endif
928
929#if RK3_ENABLED
930 module function getComplementRandomCusCom_D1_RK3(setA, setB, iseq) result(complement)
931#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
932 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_RK3
933#endif
934 use pm_kind, only: RKG => RK3
935 real(RKG) , intent(in), contiguous :: setA(:)
936 real(RKG) , intent(in), contiguous :: setB(:)
937 procedure(logical(LK)) :: iseq
938 real(RKG) , allocatable :: complement(:)
939 end function
940#endif
941
942#if RK2_ENABLED
943 module function getComplementRandomCusCom_D1_RK2(setA, setB, iseq) result(complement)
944#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
945 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_RK2
946#endif
947 use pm_kind, only: RKG => RK2
948 real(RKG) , intent(in), contiguous :: setA(:)
949 real(RKG) , intent(in), contiguous :: setB(:)
950 procedure(logical(LK)) :: iseq
951 real(RKG) , allocatable :: complement(:)
952 end function
953#endif
954
955#if RK1_ENABLED
956 module function getComplementRandomCusCom_D1_RK1(setA, setB, iseq) result(complement)
957#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
958 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementRandomCusCom_D1_RK1
959#endif
960 use pm_kind, only: RKG => RK1
961 real(RKG) , intent(in), contiguous :: setA(:)
962 real(RKG) , intent(in), contiguous :: setB(:)
963 procedure(logical(LK)) :: iseq
964 real(RKG) , allocatable :: complement(:)
965 end function
966#endif
967
968 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
969
970 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
971 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
972 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
973 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
974 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
975 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
976
977 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
978
979#if SK5_ENABLED
980 PURE module function getComplementSortedDefCom_D0_SK5(setA, setB, sorted, unique) result(complement)
981#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
982 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D0_SK5
983#endif
984 use pm_kind, only: SKG => SK5
985 character(*,SKG) , intent(in) :: setA
986 character(*,SKG) , intent(in) :: setB
987 logical(LK) , intent(in) :: sorted, unique
988 character(:,SKG) , allocatable :: complement
989 end function
990#endif
991
992#if SK4_ENABLED
993 PURE module function getComplementSortedDefCom_D0_SK4(setA, setB, sorted, unique) result(complement)
994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
995 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D0_SK4
996#endif
997 use pm_kind, only: SKG => SK4
998 character(*,SKG) , intent(in) :: setA
999 character(*,SKG) , intent(in) :: setB
1000 logical(LK) , intent(in) :: sorted, unique
1001 character(:,SKG) , allocatable :: complement
1002 end function
1003#endif
1004
1005#if SK3_ENABLED
1006 PURE module function getComplementSortedDefCom_D0_SK3(setA, setB, sorted, unique) result(complement)
1007#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1008 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D0_SK3
1009#endif
1010 use pm_kind, only: SKG => SK3
1011 character(*,SKG) , intent(in) :: setA
1012 character(*,SKG) , intent(in) :: setB
1013 logical(LK) , intent(in) :: sorted, unique
1014 character(:,SKG) , allocatable :: complement
1015 end function
1016#endif
1017
1018#if SK2_ENABLED
1019 PURE module function getComplementSortedDefCom_D0_SK2(setA, setB, sorted, unique) result(complement)
1020#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1021 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D0_SK2
1022#endif
1023 use pm_kind, only: SKG => SK2
1024 character(*,SKG) , intent(in) :: setA
1025 character(*,SKG) , intent(in) :: setB
1026 logical(LK) , intent(in) :: sorted, unique
1027 character(:,SKG) , allocatable :: complement
1028 end function
1029#endif
1030
1031#if SK1_ENABLED
1032 PURE module function getComplementSortedDefCom_D0_SK1(setA, setB, sorted, unique) result(complement)
1033#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1034 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D0_SK1
1035#endif
1036 use pm_kind, only: SKG => SK1
1037 character(*,SKG) , intent(in) :: setA
1038 character(*,SKG) , intent(in) :: setB
1039 logical(LK) , intent(in) :: sorted, unique
1040 character(:,SKG) , allocatable :: complement
1041 end function
1042#endif
1043
1044 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1045
1046#if SK5_ENABLED
1047 PURE module function getComplementSortedDefCom_D1_SK5(setA, setB, sorted, unique) result(complement)
1048#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1049 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_SK5
1050#endif
1051 use pm_kind, only: SKG => SK5
1052 character(*,SKG) , intent(in), contiguous :: setA(:)
1053 character(*,SKG) , intent(in), contiguous :: setB(:)
1054 logical(LK) , intent(in) :: sorted, unique
1055 character(LEN_STR,SKG) , allocatable :: complement(:)
1056 end function
1057#endif
1058
1059#if SK4_ENABLED
1060 PURE module function getComplementSortedDefCom_D1_SK4(setA, setB, sorted, unique) result(complement)
1061#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1062 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_SK4
1063#endif
1064 use pm_kind, only: SKG => SK4
1065 character(*,SKG) , intent(in), contiguous :: setA(:)
1066 character(*,SKG) , intent(in), contiguous :: setB(:)
1067 logical(LK) , intent(in) :: sorted, unique
1068 character(LEN_STR,SKG) , allocatable :: complement(:)
1069 end function
1070#endif
1071
1072#if SK3_ENABLED
1073 PURE module function getComplementSortedDefCom_D1_SK3(setA, setB, sorted, unique) result(complement)
1074#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1075 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_SK3
1076#endif
1077 use pm_kind, only: SKG => SK3
1078 character(*,SKG) , intent(in), contiguous :: setA(:)
1079 character(*,SKG) , intent(in), contiguous :: setB(:)
1080 logical(LK) , intent(in) :: sorted, unique
1081 character(LEN_STR,SKG) , allocatable :: complement(:)
1082 end function
1083#endif
1084
1085#if SK2_ENABLED
1086 PURE module function getComplementSortedDefCom_D1_SK2(setA, setB, sorted, unique) result(complement)
1087#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1088 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_SK2
1089#endif
1090 use pm_kind, only: SKG => SK2
1091 character(*,SKG) , intent(in), contiguous :: setA(:)
1092 character(*,SKG) , intent(in), contiguous :: setB(:)
1093 logical(LK) , intent(in) :: sorted, unique
1094 character(LEN_STR,SKG) , allocatable :: complement(:)
1095 end function
1096#endif
1097
1098#if SK1_ENABLED
1099 PURE module function getComplementSortedDefCom_D1_SK1(setA, setB, sorted, unique) result(complement)
1100#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1101 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_SK1
1102#endif
1103 use pm_kind, only: SKG => SK1
1104 character(*,SKG) , intent(in), contiguous :: setA(:)
1105 character(*,SKG) , intent(in), contiguous :: setB(:)
1106 logical(LK) , intent(in) :: sorted, unique
1107 character(LEN_STR,SKG) , allocatable :: complement(:)
1108 end function
1109#endif
1110
1111 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1112
1113#if IK5_ENABLED
1114 PURE module function getComplementSortedDefCom_D1_IK5(setA, setB, sorted, unique) result(complement)
1115#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1116 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_IK5
1117#endif
1118 use pm_kind, only: IKG => IK5
1119 integer(IKG) , intent(in), contiguous :: setA(:)
1120 integer(IKG) , intent(in), contiguous :: setB(:)
1121 logical(LK) , intent(in) :: sorted, unique
1122 integer(IKG) , allocatable :: complement(:)
1123 end function
1124#endif
1125
1126#if IK4_ENABLED
1127 PURE module function getComplementSortedDefCom_D1_IK4(setA, setB, sorted, unique) result(complement)
1128#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1129 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_IK4
1130#endif
1131 use pm_kind, only: IKG => IK4
1132 integer(IKG) , intent(in), contiguous :: setA(:)
1133 integer(IKG) , intent(in), contiguous :: setB(:)
1134 logical(LK) , intent(in) :: sorted, unique
1135 integer(IKG) , allocatable :: complement(:)
1136 end function
1137#endif
1138
1139#if IK3_ENABLED
1140 PURE module function getComplementSortedDefCom_D1_IK3(setA, setB, sorted, unique) result(complement)
1141#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1142 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_IK3
1143#endif
1144 use pm_kind, only: IKG => IK3
1145 integer(IKG) , intent(in), contiguous :: setA(:)
1146 integer(IKG) , intent(in), contiguous :: setB(:)
1147 logical(LK) , intent(in) :: sorted
1148 logical(LK) , intent(in) :: unique
1149 integer(IKG) , allocatable :: complement(:)
1150 end function
1151#endif
1152
1153#if IK2_ENABLED
1154 PURE module function getComplementSortedDefCom_D1_IK2(setA, setB, sorted, unique) result(complement)
1155#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1156 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_IK2
1157#endif
1158 use pm_kind, only: IKG => IK2
1159 integer(IKG) , intent(in), contiguous :: setA(:)
1160 integer(IKG) , intent(in), contiguous :: setB(:)
1161 logical(LK) , intent(in) :: sorted
1162 logical(LK) , intent(in) :: unique
1163 integer(IKG) , allocatable :: complement(:)
1164 end function
1165#endif
1166
1167#if IK1_ENABLED
1168 PURE module function getComplementSortedDefCom_D1_IK1(setA, setB, sorted, unique) result(complement)
1169#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1170 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_IK1
1171#endif
1172 use pm_kind, only: IKG => IK1
1173 integer(IKG) , intent(in), contiguous :: setA(:)
1174 integer(IKG) , intent(in), contiguous :: setB(:)
1175 logical(LK) , intent(in) :: sorted
1176 logical(LK) , intent(in) :: unique
1177 integer(IKG) , allocatable :: complement(:)
1178 end function
1179#endif
1180
1181 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1182
1183#if LK5_ENABLED
1184 PURE module function getComplementSortedDefCom_D1_LK5(setA, setB, sorted, unique) result(complement)
1185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1186 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_LK5
1187#endif
1188 use pm_kind, only: LKG => LK5
1189 logical(LKG) , intent(in), contiguous :: setA(:)
1190 logical(LKG) , intent(in), contiguous :: setB(:)
1191 logical(LK) , intent(in) :: sorted, unique
1192 logical(LKG) , allocatable :: complement(:)
1193 end function
1194#endif
1195
1196#if LK4_ENABLED
1197 PURE module function getComplementSortedDefCom_D1_LK4(setA, setB, sorted, unique) result(complement)
1198#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1199 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_LK4
1200#endif
1201 use pm_kind, only: LKG => LK4
1202 logical(LKG) , intent(in), contiguous :: setA(:)
1203 logical(LKG) , intent(in), contiguous :: setB(:)
1204 logical(LK) , intent(in) :: sorted, unique
1205 logical(LKG) , allocatable :: complement(:)
1206 end function
1207#endif
1208
1209#if LK3_ENABLED
1210 PURE module function getComplementSortedDefCom_D1_LK3(setA, setB, sorted, unique) result(complement)
1211#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1212 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_LK3
1213#endif
1214 use pm_kind, only: LKG => LK3
1215 logical(LKG) , intent(in), contiguous :: setA(:)
1216 logical(LKG) , intent(in), contiguous :: setB(:)
1217 logical(LK) , intent(in) :: sorted
1218 logical(LK) , intent(in) :: unique
1219 logical(LKG) , allocatable :: complement(:)
1220 end function
1221#endif
1222
1223#if LK2_ENABLED
1224 PURE module function getComplementSortedDefCom_D1_LK2(setA, setB, sorted, unique) result(complement)
1225#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1226 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_LK2
1227#endif
1228 use pm_kind, only: LKG => LK2
1229 logical(LKG) , intent(in), contiguous :: setA(:)
1230 logical(LKG) , intent(in), contiguous :: setB(:)
1231 logical(LK) , intent(in) :: sorted
1232 logical(LK) , intent(in) :: unique
1233 logical(LKG) , allocatable :: complement(:)
1234 end function
1235#endif
1236
1237#if LK1_ENABLED
1238 PURE module function getComplementSortedDefCom_D1_LK1(setA, setB, sorted, unique) result(complement)
1239#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1240 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_LK1
1241#endif
1242 use pm_kind, only: LKG => LK1
1243 logical(LKG) , intent(in), contiguous :: setA(:)
1244 logical(LKG) , intent(in), contiguous :: setB(:)
1245 logical(LK) , intent(in) :: sorted
1246 logical(LK) , intent(in) :: unique
1247 logical(LKG) , allocatable :: complement(:)
1248 end function
1249#endif
1250
1251 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1252
1253#if CK5_ENABLED
1254 PURE module function getComplementSortedDefCom_D1_CK5(setA, setB, sorted, unique) result(complement)
1255#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1256 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_CK5
1257#endif
1258 use pm_kind, only: CKG => CK5
1259 complex(CKG) , intent(in), contiguous :: setA(:)
1260 complex(CKG) , intent(in), contiguous :: setB(:)
1261 logical(LK) , intent(in) :: sorted
1262 logical(LK) , intent(in) :: unique
1263 complex(CKG) , allocatable :: complement(:)
1264 end function
1265#endif
1266
1267#if CK4_ENABLED
1268 PURE module function getComplementSortedDefCom_D1_CK4(setA, setB, sorted, unique) result(complement)
1269#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1270 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_CK4
1271#endif
1272 use pm_kind, only: CKG => CK4
1273 complex(CKG) , intent(in), contiguous :: setA(:)
1274 complex(CKG) , intent(in), contiguous :: setB(:)
1275 logical(LK) , intent(in) :: sorted
1276 logical(LK) , intent(in) :: unique
1277 complex(CKG) , allocatable :: complement(:)
1278 end function
1279#endif
1280
1281#if CK3_ENABLED
1282 PURE module function getComplementSortedDefCom_D1_CK3(setA, setB, sorted, unique) result(complement)
1283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1284 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_CK3
1285#endif
1286 use pm_kind, only: CKG => CK3
1287 complex(CKG) , intent(in), contiguous :: setA(:)
1288 complex(CKG) , intent(in), contiguous :: setB(:)
1289 logical(LK) , intent(in) :: sorted
1290 logical(LK) , intent(in) :: unique
1291 complex(CKG) , allocatable :: complement(:)
1292 end function
1293#endif
1294
1295#if CK2_ENABLED
1296 PURE module function getComplementSortedDefCom_D1_CK2(setA, setB, sorted, unique) result(complement)
1297#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1298 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_CK2
1299#endif
1300 use pm_kind, only: CKG => CK2
1301 complex(CKG) , intent(in), contiguous :: setA(:)
1302 complex(CKG) , intent(in), contiguous :: setB(:)
1303 logical(LK) , intent(in) :: sorted
1304 logical(LK) , intent(in) :: unique
1305 complex(CKG) , allocatable :: complement(:)
1306 end function
1307#endif
1308
1309#if CK1_ENABLED
1310 PURE module function getComplementSortedDefCom_D1_CK1(setA, setB, sorted, unique) result(complement)
1311#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1312 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_CK1
1313#endif
1314 use pm_kind, only: CKG => CK1
1315 complex(CKG) , intent(in), contiguous :: setA(:)
1316 complex(CKG) , intent(in), contiguous :: setB(:)
1317 logical(LK) , intent(in) :: sorted
1318 logical(LK) , intent(in) :: unique
1319 complex(CKG) , allocatable :: complement(:)
1320 end function
1321#endif
1322
1323 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1324
1325#if RK5_ENABLED
1326 PURE module function getComplementSortedDefCom_D1_RK5(setA, setB, sorted, unique) result(complement)
1327#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1328 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_RK5
1329#endif
1330 use pm_kind, only: RKG => RK5
1331 real(RKG) , intent(in), contiguous :: setA(:)
1332 real(RKG) , intent(in), contiguous :: setB(:)
1333 logical(LK) , intent(in) :: sorted
1334 logical(LK) , intent(in) :: unique
1335 real(RKG) , allocatable :: complement(:)
1336 end function
1337#endif
1338
1339#if RK4_ENABLED
1340 PURE module function getComplementSortedDefCom_D1_RK4(setA, setB, sorted, unique) result(complement)
1341#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1342 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_RK4
1343#endif
1344 use pm_kind, only: RKG => RK4
1345 real(RKG) , intent(in), contiguous :: setA(:)
1346 real(RKG) , intent(in), contiguous :: setB(:)
1347 logical(LK) , intent(in) :: sorted
1348 logical(LK) , intent(in) :: unique
1349 real(RKG) , allocatable :: complement(:)
1350 end function
1351#endif
1352
1353#if RK3_ENABLED
1354 PURE module function getComplementSortedDefCom_D1_RK3(setA, setB, sorted, unique) result(complement)
1355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1356 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_RK3
1357#endif
1358 use pm_kind, only: RKG => RK3
1359 real(RKG) , intent(in), contiguous :: setA(:)
1360 real(RKG) , intent(in), contiguous :: setB(:)
1361 logical(LK) , intent(in) :: sorted
1362 logical(LK) , intent(in) :: unique
1363 real(RKG) , allocatable :: complement(:)
1364 end function
1365#endif
1366
1367#if RK2_ENABLED
1368 PURE module function getComplementSortedDefCom_D1_RK2(setA, setB, sorted, unique) result(complement)
1369#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1370 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_RK2
1371#endif
1372 use pm_kind, only: RKG => RK2
1373 real(RKG) , intent(in), contiguous :: setA(:)
1374 real(RKG) , intent(in), contiguous :: setB(:)
1375 logical(LK) , intent(in) :: sorted
1376 logical(LK) , intent(in) :: unique
1377 real(RKG) , allocatable :: complement(:)
1378 end function
1379#endif
1380
1381#if RK1_ENABLED
1382 PURE module function getComplementSortedDefCom_D1_RK1(setA, setB, sorted, unique) result(complement)
1383#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1384 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedDefCom_D1_RK1
1385#endif
1386 use pm_kind, only: RKG => RK1
1387 real(RKG) , intent(in), contiguous :: setA(:)
1388 real(RKG) , intent(in), contiguous :: setB(:)
1389 logical(LK) , intent(in) :: sorted
1390 logical(LK) , intent(in) :: unique
1391 real(RKG) , allocatable :: complement(:)
1392 end function
1393#endif
1394
1395 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1396
1397 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1398 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1399 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1400
1401 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1402
1403#if SK5_ENABLED
1404 module function getComplementSortedCusCom_D0_SK5(setA, setB, sorted, unique, iseq) result(complement)
1405#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1406 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D0_SK5
1407#endif
1408 use pm_kind, only: SKG => SK5
1409 character(*,SKG) , intent(in) :: setA
1410 character(*,SKG) , intent(in) :: setB
1411 logical(LK) , intent(in) :: sorted, unique
1412 procedure(logical(LK)) :: iseq
1413 character(:,SKG) , allocatable :: complement
1414 end function
1415#endif
1416
1417#if SK4_ENABLED
1418 module function getComplementSortedCusCom_D0_SK4(setA, setB, sorted, unique, iseq) result(complement)
1419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1420 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D0_SK4
1421#endif
1422 use pm_kind, only: SKG => SK4
1423 character(*,SKG) , intent(in) :: setA
1424 character(*,SKG) , intent(in) :: setB
1425 logical(LK) , intent(in) :: sorted, unique
1426 procedure(logical(LK)) :: iseq
1427 character(:,SKG) , allocatable :: complement
1428 end function
1429#endif
1430
1431#if SK3_ENABLED
1432 module function getComplementSortedCusCom_D0_SK3(setA, setB, sorted, unique, iseq) result(complement)
1433#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1434 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D0_SK3
1435#endif
1436 use pm_kind, only: SKG => SK3
1437 character(*,SKG) , intent(in) :: setA
1438 character(*,SKG) , intent(in) :: setB
1439 logical(LK) , intent(in) :: sorted, unique
1440 procedure(logical(LK)) :: iseq
1441 character(:,SKG) , allocatable :: complement
1442 end function
1443#endif
1444
1445#if SK2_ENABLED
1446 module function getComplementSortedCusCom_D0_SK2(setA, setB, sorted, unique, iseq) result(complement)
1447#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1448 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D0_SK2
1449#endif
1450 use pm_kind, only: SKG => SK2
1451 character(*,SKG) , intent(in) :: setA
1452 character(*,SKG) , intent(in) :: setB
1453 logical(LK) , intent(in) :: sorted, unique
1454 procedure(logical(LK)) :: iseq
1455 character(:,SKG) , allocatable :: complement
1456 end function
1457#endif
1458
1459#if SK1_ENABLED
1460 module function getComplementSortedCusCom_D0_SK1(setA, setB, sorted, unique, iseq) result(complement)
1461#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1462 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D0_SK1
1463#endif
1464 use pm_kind, only: SKG => SK1
1465 character(*,SKG) , intent(in) :: setA
1466 character(*,SKG) , intent(in) :: setB
1467 logical(LK) , intent(in) :: sorted
1468 logical(LK) , intent(in) :: unique
1469 procedure(logical(LK)) :: iseq
1470 character(:,SKG) , allocatable :: complement
1471 end function
1472#endif
1473
1474 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1475
1476#if SK5_ENABLED
1477 module function getComplementSortedCusCom_D1_SK5(setA, setB, sorted, unique, iseq) result(complement)
1478#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1479 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_SK5
1480#endif
1481 use pm_kind, only: SKG => SK5
1482 character(*,SKG) , intent(in), contiguous :: setA(:)
1483 character(*,SKG) , intent(in), contiguous :: setB(:)
1484 logical(LK) , intent(in) :: sorted
1485 logical(LK) , intent(in) :: unique
1486 procedure(logical(LK)) :: iseq
1487 character(LEN_STR,SKG) , allocatable :: complement(:)
1488 end function
1489#endif
1490
1491#if SK4_ENABLED
1492 module function getComplementSortedCusCom_D1_SK4(setA, setB, sorted, unique, iseq) result(complement)
1493#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1494 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_SK4
1495#endif
1496 use pm_kind, only: SKG => SK4
1497 character(*,SKG) , intent(in), contiguous :: setA(:)
1498 character(*,SKG) , intent(in), contiguous :: setB(:)
1499 logical(LK) , intent(in) :: sorted
1500 logical(LK) , intent(in) :: unique
1501 procedure(logical(LK)) :: iseq
1502 character(LEN_STR,SKG) , allocatable :: complement(:)
1503 end function
1504#endif
1505
1506#if SK3_ENABLED
1507 module function getComplementSortedCusCom_D1_SK3(setA, setB, sorted, unique, iseq) result(complement)
1508#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1509 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_SK3
1510#endif
1511 use pm_kind, only: SKG => SK3
1512 character(*,SKG) , intent(in), contiguous :: setA(:)
1513 character(*,SKG) , intent(in), contiguous :: setB(:)
1514 logical(LK) , intent(in) :: sorted
1515 logical(LK) , intent(in) :: unique
1516 procedure(logical(LK)) :: iseq
1517 character(LEN_STR,SKG) , allocatable :: complement(:)
1518 end function
1519#endif
1520
1521#if SK2_ENABLED
1522 module function getComplementSortedCusCom_D1_SK2(setA, setB, sorted, unique, iseq) result(complement)
1523#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1524 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_SK2
1525#endif
1526 use pm_kind, only: SKG => SK2
1527 character(*,SKG) , intent(in), contiguous :: setA(:)
1528 character(*,SKG) , intent(in), contiguous :: setB(:)
1529 logical(LK) , intent(in) :: sorted
1530 logical(LK) , intent(in) :: unique
1531 procedure(logical(LK)) :: iseq
1532 character(LEN_STR,SKG) , allocatable :: complement(:)
1533 end function
1534#endif
1535
1536#if SK1_ENABLED
1537 module function getComplementSortedCusCom_D1_SK1(setA, setB, sorted, unique, iseq) result(complement)
1538#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1539 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_SK1
1540#endif
1541 use pm_kind, only: SKG => SK1
1542 character(*,SKG) , intent(in), contiguous :: setA(:)
1543 character(*,SKG) , intent(in), contiguous :: setB(:)
1544 logical(LK) , intent(in) :: sorted
1545 logical(LK) , intent(in) :: unique
1546 procedure(logical(LK)) :: iseq
1547 character(LEN_STR,SKG) , allocatable :: complement(:)
1548 end function
1549#endif
1550
1551 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1552
1553#if IK5_ENABLED
1554 module function getComplementSortedCusCom_D1_IK5(setA, setB, sorted, unique, iseq) result(complement)
1555#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1556 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_IK5
1557#endif
1558 use pm_kind, only: IKG => IK5
1559 integer(IKG) , intent(in), contiguous :: setA(:)
1560 integer(IKG) , intent(in), contiguous :: setB(:)
1561 logical(LK) , intent(in) :: sorted
1562 logical(LK) , intent(in) :: unique
1563 procedure(logical(LK)) :: iseq
1564 integer(IKG) , allocatable :: complement(:)
1565 end function
1566#endif
1567
1568#if IK4_ENABLED
1569 module function getComplementSortedCusCom_D1_IK4(setA, setB, sorted, unique, iseq) result(complement)
1570#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1571 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_IK4
1572#endif
1573 use pm_kind, only: IKG => IK4
1574 integer(IKG) , intent(in), contiguous :: setA(:)
1575 integer(IKG) , intent(in), contiguous :: setB(:)
1576 logical(LK) , intent(in) :: sorted
1577 logical(LK) , intent(in) :: unique
1578 procedure(logical(LK)) :: iseq
1579 integer(IKG) , allocatable :: complement(:)
1580 end function
1581#endif
1582
1583#if IK3_ENABLED
1584 module function getComplementSortedCusCom_D1_IK3(setA, setB, sorted, unique, iseq) result(complement)
1585#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1586 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_IK3
1587#endif
1588 use pm_kind, only: IKG => IK3
1589 integer(IKG) , intent(in), contiguous :: setA(:)
1590 integer(IKG) , intent(in), contiguous :: setB(:)
1591 logical(LK) , intent(in) :: sorted
1592 logical(LK) , intent(in) :: unique
1593 procedure(logical(LK)) :: iseq
1594 integer(IKG) , allocatable :: complement(:)
1595 end function
1596#endif
1597
1598#if IK2_ENABLED
1599 module function getComplementSortedCusCom_D1_IK2(setA, setB, sorted, unique, iseq) result(complement)
1600#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1601 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_IK2
1602#endif
1603 use pm_kind, only: IKG => IK2
1604 integer(IKG) , intent(in), contiguous :: setA(:)
1605 integer(IKG) , intent(in), contiguous :: setB(:)
1606 logical(LK) , intent(in) :: sorted
1607 logical(LK) , intent(in) :: unique
1608 procedure(logical(LK)) :: iseq
1609 integer(IKG) , allocatable :: complement(:)
1610 end function
1611#endif
1612
1613#if IK1_ENABLED
1614 module function getComplementSortedCusCom_D1_IK1(setA, setB, sorted, unique, iseq) result(complement)
1615#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1616 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_IK1
1617#endif
1618 use pm_kind, only: IKG => IK1
1619 integer(IKG) , intent(in), contiguous :: setA(:)
1620 integer(IKG) , intent(in), contiguous :: setB(:)
1621 logical(LK) , intent(in) :: sorted
1622 logical(LK) , intent(in) :: unique
1623 procedure(logical(LK)) :: iseq
1624 integer(IKG) , allocatable :: complement(:)
1625 end function
1626#endif
1627
1628 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1629
1630#if LK5_ENABLED
1631 module function getComplementSortedCusCom_D1_LK5(setA, setB, sorted, unique, iseq) result(complement)
1632#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1633 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_LK5
1634#endif
1635 use pm_kind, only: LKG => LK5
1636 logical(LKG) , intent(in), contiguous :: setA(:)
1637 logical(LKG) , intent(in), contiguous :: setB(:)
1638 logical(LK) , intent(in) :: sorted
1639 logical(LK) , intent(in) :: unique
1640 procedure(logical(LK)) :: iseq
1641 logical(LKG) , allocatable :: complement(:)
1642 end function
1643#endif
1644
1645#if LK4_ENABLED
1646 module function getComplementSortedCusCom_D1_LK4(setA, setB, sorted, unique, iseq) result(complement)
1647#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1648 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_LK4
1649#endif
1650 use pm_kind, only: LKG => LK4
1651 logical(LKG) , intent(in), contiguous :: setA(:)
1652 logical(LKG) , intent(in), contiguous :: setB(:)
1653 logical(LK) , intent(in) :: sorted
1654 logical(LK) , intent(in) :: unique
1655 procedure(logical(LK)) :: iseq
1656 logical(LKG) , allocatable :: complement(:)
1657 end function
1658#endif
1659
1660#if LK3_ENABLED
1661 module function getComplementSortedCusCom_D1_LK3(setA, setB, sorted, unique, iseq) result(complement)
1662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1663 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_LK3
1664#endif
1665 use pm_kind, only: LKG => LK3
1666 logical(LKG) , intent(in), contiguous :: setA(:)
1667 logical(LKG) , intent(in), contiguous :: setB(:)
1668 logical(LK) , intent(in) :: sorted
1669 logical(LK) , intent(in) :: unique
1670 procedure(logical(LK)) :: iseq
1671 logical(LKG) , allocatable :: complement(:)
1672 end function
1673#endif
1674
1675#if LK2_ENABLED
1676 module function getComplementSortedCusCom_D1_LK2(setA, setB, sorted, unique, iseq) result(complement)
1677#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1678 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_LK2
1679#endif
1680 use pm_kind, only: LKG => LK2
1681 logical(LKG) , intent(in), contiguous :: setA(:)
1682 logical(LKG) , intent(in), contiguous :: setB(:)
1683 logical(LK) , intent(in) :: sorted
1684 logical(LK) , intent(in) :: unique
1685 procedure(logical(LK)) :: iseq
1686 logical(LKG) , allocatable :: complement(:)
1687 end function
1688#endif
1689
1690#if LK1_ENABLED
1691 module function getComplementSortedCusCom_D1_LK1(setA, setB, sorted, unique, iseq) result(complement)
1692#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1693 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_LK1
1694#endif
1695 use pm_kind, only: LKG => LK1
1696 logical(LKG) , intent(in), contiguous :: setA(:)
1697 logical(LKG) , intent(in), contiguous :: setB(:)
1698 logical(LK) , intent(in) :: sorted
1699 logical(LK) , intent(in) :: unique
1700 procedure(logical(LK)) :: iseq
1701 logical(LKG) , allocatable :: complement(:)
1702 end function
1703#endif
1704
1705 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1706
1707#if CK5_ENABLED
1708 module function getComplementSortedCusCom_D1_CK5(setA, setB, sorted, unique, iseq) result(complement)
1709#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1710 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_CK5
1711#endif
1712 use pm_kind, only: CKG => CK5
1713 complex(CKG) , intent(in), contiguous :: setA(:)
1714 complex(CKG) , intent(in), contiguous :: setB(:)
1715 logical(LK) , intent(in) :: sorted
1716 logical(LK) , intent(in) :: unique
1717 procedure(logical(LK)) :: iseq
1718 complex(CKG) , allocatable :: complement(:)
1719 end function
1720#endif
1721
1722#if CK4_ENABLED
1723 module function getComplementSortedCusCom_D1_CK4(setA, setB, sorted, unique, iseq) result(complement)
1724#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1725 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_CK4
1726#endif
1727 use pm_kind, only: CKG => CK4
1728 complex(CKG) , intent(in), contiguous :: setA(:)
1729 complex(CKG) , intent(in), contiguous :: setB(:)
1730 logical(LK) , intent(in) :: sorted
1731 logical(LK) , intent(in) :: unique
1732 procedure(logical(LK)) :: iseq
1733 complex(CKG) , allocatable :: complement(:)
1734 end function
1735#endif
1736
1737#if CK3_ENABLED
1738 module function getComplementSortedCusCom_D1_CK3(setA, setB, sorted, unique, iseq) result(complement)
1739#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1740 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_CK3
1741#endif
1742 use pm_kind, only: CKG => CK3
1743 complex(CKG) , intent(in), contiguous :: setA(:)
1744 complex(CKG) , intent(in), contiguous :: setB(:)
1745 logical(LK) , intent(in) :: sorted
1746 logical(LK) , intent(in) :: unique
1747 procedure(logical(LK)) :: iseq
1748 complex(CKG) , allocatable :: complement(:)
1749 end function
1750#endif
1751
1752#if CK2_ENABLED
1753 module function getComplementSortedCusCom_D1_CK2(setA, setB, sorted, unique, iseq) result(complement)
1754#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1755 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_CK2
1756#endif
1757 use pm_kind, only: CKG => CK2
1758 complex(CKG) , intent(in), contiguous :: setA(:)
1759 complex(CKG) , intent(in), contiguous :: setB(:)
1760 logical(LK) , intent(in) :: sorted
1761 logical(LK) , intent(in) :: unique
1762 procedure(logical(LK)) :: iseq
1763 complex(CKG) , allocatable :: complement(:)
1764 end function
1765#endif
1766
1767#if CK1_ENABLED
1768 module function getComplementSortedCusCom_D1_CK1(setA, setB, sorted, unique, iseq) result(complement)
1769#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1770 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_CK1
1771#endif
1772 use pm_kind, only: CKG => CK1
1773 complex(CKG) , intent(in), contiguous :: setA(:)
1774 complex(CKG) , intent(in), contiguous :: setB(:)
1775 logical(LK) , intent(in) :: sorted
1776 logical(LK) , intent(in) :: unique
1777 procedure(logical(LK)) :: iseq
1778 complex(CKG) , allocatable :: complement(:)
1779 end function
1780#endif
1781
1782 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1783
1784#if RK5_ENABLED
1785 module function getComplementSortedCusCom_D1_RK5(setA, setB, sorted, unique, iseq) result(complement)
1786#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1787 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_RK5
1788#endif
1789 use pm_kind, only: RKG => RK5
1790 real(RKG) , intent(in), contiguous :: setA(:)
1791 real(RKG) , intent(in), contiguous :: setB(:)
1792 logical(LK) , intent(in) :: sorted
1793 logical(LK) , intent(in) :: unique
1794 procedure(logical(LK)) :: iseq
1795 real(RKG) , allocatable :: complement(:)
1796 end function
1797#endif
1798
1799#if RK4_ENABLED
1800 module function getComplementSortedCusCom_D1_RK4(setA, setB, sorted, unique, iseq) result(complement)
1801#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1802 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_RK4
1803#endif
1804 use pm_kind, only: RKG => RK4
1805 real(RKG) , intent(in), contiguous :: setA(:)
1806 real(RKG) , intent(in), contiguous :: setB(:)
1807 logical(LK) , intent(in) :: sorted
1808 logical(LK) , intent(in) :: unique
1809 procedure(logical(LK)) :: iseq
1810 real(RKG) , allocatable :: complement(:)
1811 end function
1812#endif
1813
1814#if RK3_ENABLED
1815 module function getComplementSortedCusCom_D1_RK3(setA, setB, sorted, unique, iseq) result(complement)
1816#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1817 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_RK3
1818#endif
1819 use pm_kind, only: RKG => RK3
1820 real(RKG) , intent(in), contiguous :: setA(:)
1821 real(RKG) , intent(in), contiguous :: setB(:)
1822 logical(LK) , intent(in) :: sorted
1823 logical(LK) , intent(in) :: unique
1824 procedure(logical(LK)) :: iseq
1825 real(RKG) , allocatable :: complement(:)
1826 end function
1827#endif
1828
1829#if RK2_ENABLED
1830 module function getComplementSortedCusCom_D1_RK2(setA, setB, sorted, unique, iseq) result(complement)
1831#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1832 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_RK2
1833#endif
1834 use pm_kind, only: RKG => RK2
1835 real(RKG) , intent(in), contiguous :: setA(:)
1836 real(RKG) , intent(in), contiguous :: setB(:)
1837 logical(LK) , intent(in) :: sorted
1838 logical(LK) , intent(in) :: unique
1839 procedure(logical(LK)) :: iseq
1840 real(RKG) , allocatable :: complement(:)
1841 end function
1842#endif
1843
1844#if RK1_ENABLED
1845 module function getComplementSortedCusCom_D1_RK1(setA, setB, sorted, unique, iseq) result(complement)
1846#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1847 !DEC$ ATTRIBUTES DLLEXPORT :: getComplementSortedCusCom_D1_RK1
1848#endif
1849 use pm_kind, only: RKG => RK1
1850 real(RKG) , intent(in), contiguous :: setA(:)
1851 real(RKG) , intent(in), contiguous :: setB(:)
1852 logical(LK) , intent(in) :: sorted
1853 logical(LK) , intent(in) :: unique
1854 procedure(logical(LK)) :: iseq
1855 real(RKG) , allocatable :: complement(:)
1856 end function
1857#endif
1858
1859 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1860
1861 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1862 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1863 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1864
1865 end interface
1866
1867!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1868
1943
1944 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1945 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1946 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1947
1948 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1949
1950#if IK5_ENABLED
1951 PURE module function getCompRangeRandom_D1_IK5(setA, start, stop, step) result(complement)
1952#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1953 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeRandom_D1_IK5
1954#endif
1955 use pm_kind, only: IKG => IK5
1956 integer(IKG) , intent(in), contiguous :: setA(:)
1957 integer(IKG) , intent(in) :: start, stop, step
1958 integer(IKG) , allocatable :: complement(:)
1959 end function
1960#endif
1961
1962#if IK4_ENABLED
1963 PURE module function getCompRangeRandom_D1_IK4(setA, start, stop, step) result(complement)
1964#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1965 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeRandom_D1_IK4
1966#endif
1967 use pm_kind, only: IKG => IK4
1968 integer(IKG) , intent(in), contiguous :: setA(:)
1969 integer(IKG) , intent(in) :: start, stop, step
1970 integer(IKG) , allocatable :: complement(:)
1971 end function
1972#endif
1973
1974#if IK3_ENABLED
1975 PURE module function getCompRangeRandom_D1_IK3(setA, start, stop, step) result(complement)
1976#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1977 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeRandom_D1_IK3
1978#endif
1979 use pm_kind, only: IKG => IK3
1980 integer(IKG) , intent(in), contiguous :: setA(:)
1981 integer(IKG) , intent(in) :: start, stop, step
1982 integer(IKG) , allocatable :: complement(:)
1983 end function
1984#endif
1985
1986#if IK2_ENABLED
1987 PURE module function getCompRangeRandom_D1_IK2(setA, start, stop, step) result(complement)
1988#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1989 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeRandom_D1_IK2
1990#endif
1991 use pm_kind, only: IKG => IK2
1992 integer(IKG) , intent(in), contiguous :: setA(:)
1993 integer(IKG) , intent(in) :: start, stop, step
1994 integer(IKG) , allocatable :: complement(:)
1995 end function
1996#endif
1997
1998#if IK1_ENABLED
1999 PURE module function getCompRangeRandom_D1_IK1(setA, start, stop, step) result(complement)
2000#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2001 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeRandom_D1_IK1
2002#endif
2003 use pm_kind, only: IKG => IK1
2004 integer(IKG) , intent(in), contiguous :: setA(:)
2005 integer(IKG) , intent(in) :: start, stop, step
2006 integer(IKG) , allocatable :: complement(:)
2007 end function
2008#endif
2009
2010 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2011
2012 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2013 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2014 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2015
2016 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017
2018#if IK5_ENABLED
2019 PURE module function getCompRangeSorted_D1_IK5(setA, start, stop, step, sorted, unique) result(complement)
2020#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2021 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeSorted_D1_IK5
2022#endif
2023 use pm_kind, only: IKG => IK5
2024 integer(IKG) , intent(in), contiguous :: setA(:)
2025 integer(IKG) , intent(in) :: start, stop, step
2026 logical(LK) , intent(in) :: sorted
2027 logical(LK) , intent(in) :: unique
2028 integer(IKG) , allocatable :: complement(:)
2029 end function
2030#endif
2031
2032#if IK4_ENABLED
2033 PURE module function getCompRangeSorted_D1_IK4(setA, start, stop, step, sorted, unique) result(complement)
2034#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2035 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeSorted_D1_IK4
2036#endif
2037 use pm_kind, only: IKG => IK4
2038 integer(IKG) , intent(in), contiguous :: setA(:)
2039 integer(IKG) , intent(in) :: start, stop, step
2040 logical(LK) , intent(in) :: sorted
2041 logical(LK) , intent(in) :: unique
2042 integer(IKG) , allocatable :: complement(:)
2043 end function
2044#endif
2045
2046#if IK3_ENABLED
2047 PURE module function getCompRangeSorted_D1_IK3(setA, start, stop, step, sorted, unique) result(complement)
2048#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2049 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeSorted_D1_IK3
2050#endif
2051 use pm_kind, only: IKG => IK3
2052 integer(IKG) , intent(in), contiguous :: setA(:)
2053 integer(IKG) , intent(in) :: start, stop, step
2054 logical(LK) , intent(in) :: sorted
2055 logical(LK) , intent(in) :: unique
2056 integer(IKG) , allocatable :: complement(:)
2057 end function
2058#endif
2059
2060#if IK2_ENABLED
2061 PURE module function getCompRangeSorted_D1_IK2(setA, start, stop, step, sorted, unique) result(complement)
2062#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2063 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeSorted_D1_IK2
2064#endif
2065 use pm_kind, only: IKG => IK2
2066 integer(IKG) , intent(in), contiguous :: setA(:)
2067 integer(IKG) , intent(in) :: start, stop, step
2068 logical(LK) , intent(in) :: sorted
2069 logical(LK) , intent(in) :: unique
2070 integer(IKG) , allocatable :: complement(:)
2071 end function
2072#endif
2073
2074#if IK1_ENABLED
2075 PURE module function getCompRangeSorted_D1_IK1(setA, start, stop, step, sorted, unique) result(complement)
2076#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2077 !DEC$ ATTRIBUTES DLLEXPORT :: getCompRangeSorted_D1_IK1
2078#endif
2079 use pm_kind, only: IKG => IK1
2080 integer(IKG) , intent(in), contiguous :: setA(:)
2081 integer(IKG) , intent(in) :: start, stop, step
2082 logical(LK) , intent(in) :: sorted
2083 logical(LK) , intent(in) :: unique
2084 integer(IKG) , allocatable :: complement(:)
2085 end function
2086#endif
2087
2088 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2089
2090 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2091 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2092 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2093
2094 end interface
2095
2096end module pm_arrayComplement
Generate and return the complement of the input set setA with respect to an array of elements of the ...
Generate and return an array of elements of setB that are not in setA.
This module contains procedures and generic interfaces for computing the absolute or relative complem...
character(*, SK), parameter MODULE_NAME
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