ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_complexMinMax.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
33
34!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35
37 ! Note: pointer rank remapping does not work for non-contiguous `array`.
38#if 1
39#define __CONTIGUOUS
40#else
41#define __CONTIGUOUS, contiguous
42#endif
43
44
46
47 use pm_kind, only: SK, IK
48 implicit none
49
50 character(*,SK), parameter :: MODULE_NAME = "@pm_complexMinMax"
51
52!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53
103 interface min
104
105 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
106
107#if CK5_ENABLED
108 pure elemental module function min_D0_CK5(a1, a2) result(val)
109#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
110 !DEC$ ATTRIBUTES DLLEXPORT :: min_D0_CK5
111#endif
112 use pm_kind, only: CKG => CK5
113 complex(CKG), intent(in) :: a1, a2
114 complex(CKG) :: val
115 end function
116#endif
117
118#if CK4_ENABLED
119 pure elemental module function min_D0_CK4(a1, a2) result(val)
120#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
121 !DEC$ ATTRIBUTES DLLEXPORT :: min_D0_CK4
122#endif
123 use pm_kind, only: CKG => CK4
124 complex(CKG), intent(in) :: a1, a2
125 complex(CKG) :: val
126 end function
127#endif
128
129#if CK3_ENABLED
130 pure elemental module function min_D0_CK3(a1, a2) result(val)
131#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
132 !DEC$ ATTRIBUTES DLLEXPORT :: min_D0_CK3
133#endif
134 use pm_kind, only: CKG => CK3
135 complex(CKG), intent(in) :: a1, a2
136 complex(CKG) :: val
137 end function
138#endif
139
140#if CK2_ENABLED
141 pure elemental module function min_D0_CK2(a1, a2) result(val)
142#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
143 !DEC$ ATTRIBUTES DLLEXPORT :: min_D0_CK2
144#endif
145 use pm_kind, only: CKG => CK2
146 complex(CKG), intent(in) :: a1, a2
147 complex(CKG) :: val
148 end function
149#endif
150
151#if CK1_ENABLED
152 pure elemental module function min_D0_CK1(a1, a2) result(val)
153#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
154 !DEC$ ATTRIBUTES DLLEXPORT :: min_D0_CK1
155#endif
156 use pm_kind, only: CKG => CK1
157 complex(CKG), intent(in) :: a1, a2
158 complex(CKG) :: val
159 end function
160#endif
161
162 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
163
164 end interface
165
166!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
167
217 interface max
218
219 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
220
221#if CK5_ENABLED
222 pure elemental module function max_D0_CK5(a1, a2) result(val)
223#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
224 !DEC$ ATTRIBUTES DLLEXPORT :: max_D0_CK5
225#endif
226 use pm_kind, only: CKG => CK5
227 complex(CKG), intent(in) :: a1, a2
228 complex(CKG) :: val
229 end function
230#endif
231
232#if CK4_ENABLED
233 pure elemental module function max_D0_CK4(a1, a2) result(val)
234#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
235 !DEC$ ATTRIBUTES DLLEXPORT :: max_D0_CK4
236#endif
237 use pm_kind, only: CKG => CK4
238 complex(CKG), intent(in) :: a1, a2
239 complex(CKG) :: val
240 end function
241#endif
242
243#if CK3_ENABLED
244 pure elemental module function max_D0_CK3(a1, a2) result(val)
245#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
246 !DEC$ ATTRIBUTES DLLEXPORT :: max_D0_CK3
247#endif
248 use pm_kind, only: CKG => CK3
249 complex(CKG), intent(in) :: a1, a2
250 complex(CKG) :: val
251 end function
252#endif
253
254#if CK2_ENABLED
255 pure elemental module function max_D0_CK2(a1, a2) result(val)
256#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
257 !DEC$ ATTRIBUTES DLLEXPORT :: max_D0_CK2
258#endif
259 use pm_kind, only: CKG => CK2
260 complex(CKG), intent(in) :: a1, a2
261 complex(CKG) :: val
262 end function
263#endif
264
265#if CK1_ENABLED
266 pure elemental module function max_D0_CK1(a1, a2) result(val)
267#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
268 !DEC$ ATTRIBUTES DLLEXPORT :: max_D0_CK1
269#endif
270 use pm_kind, only: CKG => CK1
271 complex(CKG), intent(in) :: a1, a2
272 complex(CKG) :: val
273 end function
274#endif
275
276 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
277
278 end interface
279
280!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
281
340
341 interface minval
342
343 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
344
345#if CK5_ENABLED
346 pure module function minvalALL_D1_CK5(array) result(val)
347#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
348 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D1_CK5
349#endif
350 use pm_kind, only: CKG => CK5
351 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
352 complex(CKG) :: val
353 end function
354#endif
355
356#if CK4_ENABLED
357 pure module function minvalALL_D1_CK4(array) result(val)
358#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
359 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D1_CK4
360#endif
361 use pm_kind, only: CKG => CK4
362 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
363 complex(CKG) :: val
364 end function
365#endif
366
367#if CK3_ENABLED
368 pure module function minvalALL_D1_CK3(array) result(val)
369#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
370 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D1_CK3
371#endif
372 use pm_kind, only: CKG => CK3
373 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
374 complex(CKG) :: val
375 end function
376#endif
377
378#if CK2_ENABLED
379 pure module function minvalALL_D1_CK2(array) result(val)
380#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
381 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D1_CK2
382#endif
383 use pm_kind, only: CKG => CK2
384 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
385 complex(CKG) :: val
386 end function
387#endif
388
389#if CK1_ENABLED
390 pure module function minvalALL_D1_CK1(array) result(val)
391#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
392 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D1_CK1
393#endif
394 use pm_kind, only: CKG => CK1
395 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
396 complex(CKG) :: val
397 end function
398#endif
399
400 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
401
402#if CK5_ENABLED
403 module function minvalALL_D2_CK5(array) result(val)
404#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
405 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D2_CK5
406#endif
407 use pm_kind, only: CKG => CK5
408 complex(CKG), intent(in) , contiguous, target :: array(:,:)
409 complex(CKG) :: val
410 end function
411#endif
412
413#if CK4_ENABLED
414 module function minvalALL_D2_CK4(array) result(val)
415#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
416 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D2_CK4
417#endif
418 use pm_kind, only: CKG => CK4
419 complex(CKG), intent(in) , contiguous, target :: array(:,:)
420 complex(CKG) :: val
421 end function
422#endif
423
424#if CK3_ENABLED
425 module function minvalALL_D2_CK3(array) result(val)
426#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
427 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D2_CK3
428#endif
429 use pm_kind, only: CKG => CK3
430 complex(CKG), intent(in) , contiguous, target :: array(:,:)
431 complex(CKG) :: val
432 end function
433#endif
434
435#if CK2_ENABLED
436 module function minvalALL_D2_CK2(array) result(val)
437#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
438 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D2_CK2
439#endif
440 use pm_kind, only: CKG => CK2
441 complex(CKG), intent(in) , contiguous, target :: array(:,:)
442 complex(CKG) :: val
443 end function
444#endif
445
446#if CK1_ENABLED
447 module function minvalALL_D2_CK1(array) result(val)
448#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
449 !DEC$ ATTRIBUTES DLLEXPORT :: minvalALL_D2_CK1
450#endif
451 use pm_kind, only: CKG => CK1
452 complex(CKG), intent(in) , contiguous, target :: array(:,:)
453 complex(CKG) :: val
454 end function
455#endif
456
457 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
458
459#if CK5_ENABLED
460 PURE module function minvalDIM_D1_CK5(array, dim) result(val)
461#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
462 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D1_CK5
463#endif
464 use pm_kind, only: CKG => CK5
465 integer(IK) , intent(in) :: dim
466 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
467 complex(CKG) :: val
468 end function
469#endif
470
471#if CK4_ENABLED
472 PURE module function minvalDIM_D1_CK4(array, dim) result(val)
473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
474 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D1_CK4
475#endif
476 use pm_kind, only: CKG => CK4
477 integer(IK) , intent(in) :: dim
478 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
479 complex(CKG) :: val
480 end function
481#endif
482
483#if CK3_ENABLED
484 PURE module function minvalDIM_D1_CK3(array, dim) result(val)
485#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
486 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D1_CK3
487#endif
488 use pm_kind, only: CKG => CK3
489 integer(IK) , intent(in) :: dim
490 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
491 complex(CKG) :: val
492 end function
493#endif
494
495#if CK2_ENABLED
496 PURE module function minvalDIM_D1_CK2(array, dim) result(val)
497#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
498 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D1_CK2
499#endif
500 use pm_kind, only: CKG => CK2
501 integer(IK) , intent(in) :: dim
502 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
503 complex(CKG) :: val
504 end function
505#endif
506
507#if CK1_ENABLED
508 PURE module function minvalDIM_D1_CK1(array, dim) result(val)
509#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
510 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D1_CK1
511#endif
512 use pm_kind, only: CKG => CK1
513 integer(IK) , intent(in) :: dim
514 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
515 complex(CKG) :: val
516 end function
517#endif
518
519 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
520
521#if CK5_ENABLED
522 PURE module function minvalDIM_D2_CK5(array, dim) result(val)
523#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
524 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D2_CK5
525#endif
526 use pm_kind, only: CKG => CK5
527 integer(IK) , intent(in) :: dim
528 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
529 complex(CKG) :: val(size(array, 3 - dim, IK))
530 end function
531#endif
532
533#if CK4_ENABLED
534 PURE module function minvalDIM_D2_CK4(array, dim) result(val)
535#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
536 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D2_CK4
537#endif
538 use pm_kind, only: CKG => CK4
539 integer(IK) , intent(in) :: dim
540 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
541 complex(CKG) :: val(size(array, 3 - dim, IK))
542 end function
543#endif
544
545#if CK3_ENABLED
546 PURE module function minvalDIM_D2_CK3(array, dim) result(val)
547#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
548 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D2_CK3
549#endif
550 use pm_kind, only: CKG => CK3
551 integer(IK) , intent(in) :: dim
552 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
553 complex(CKG) :: val(size(array, 3 - dim, IK))
554 end function
555#endif
556
557#if CK2_ENABLED
558 PURE module function minvalDIM_D2_CK2(array, dim) result(val)
559#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
560 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D2_CK2
561#endif
562 use pm_kind, only: CKG => CK2
563 integer(IK) , intent(in) :: dim
564 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
565 complex(CKG) :: val(size(array, 3 - dim, IK))
566 end function
567#endif
568
569#if CK1_ENABLED
570 PURE module function minvalDIM_D2_CK1(array, dim) result(val)
571#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
572 !DEC$ ATTRIBUTES DLLEXPORT :: minvalDIM_D2_CK1
573#endif
574 use pm_kind, only: CKG => CK1
575 integer(IK) , intent(in) :: dim
576 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
577 complex(CKG) :: val(size(array, 3 - dim, IK))
578 end function
579#endif
580
581 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
582
583 end interface
584
585!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
586
645
646 interface maxval
647
648 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
649
650#if CK5_ENABLED
651 pure module function maxvalALL_D1_CK5(array) result(val)
652#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
653 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D1_CK5
654#endif
655 use pm_kind, only: CKG => CK5
656 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
657 complex(CKG) :: val
658 end function
659#endif
660
661#if CK4_ENABLED
662 pure module function maxvalALL_D1_CK4(array) result(val)
663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
664 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D1_CK4
665#endif
666 use pm_kind, only: CKG => CK4
667 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
668 complex(CKG) :: val
669 end function
670#endif
671
672#if CK3_ENABLED
673 pure module function maxvalALL_D1_CK3(array) result(val)
674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
675 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D1_CK3
676#endif
677 use pm_kind, only: CKG => CK3
678 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
679 complex(CKG) :: val
680 end function
681#endif
682
683#if CK2_ENABLED
684 pure module function maxvalALL_D1_CK2(array) result(val)
685#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
686 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D1_CK2
687#endif
688 use pm_kind, only: CKG => CK2
689 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
690 complex(CKG) :: val
691 end function
692#endif
693
694#if CK1_ENABLED
695 pure module function maxvalALL_D1_CK1(array) result(val)
696#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
697 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D1_CK1
698#endif
699 use pm_kind, only: CKG => CK1
700 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
701 complex(CKG) :: val
702 end function
703#endif
704
705 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
706
707#if CK5_ENABLED
708 module function maxvalALL_D2_CK5(array) result(val)
709#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
710 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D2_CK5
711#endif
712 use pm_kind, only: CKG => CK5
713 complex(CKG), intent(in) , contiguous, target :: array(:,:)
714 complex(CKG) :: val
715 end function
716#endif
717
718#if CK4_ENABLED
719 module function maxvalALL_D2_CK4(array) result(val)
720#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
721 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D2_CK4
722#endif
723 use pm_kind, only: CKG => CK4
724 complex(CKG), intent(in) , contiguous, target :: array(:,:)
725 complex(CKG) :: val
726 end function
727#endif
728
729#if CK3_ENABLED
730 module function maxvalALL_D2_CK3(array) result(val)
731#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
732 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D2_CK3
733#endif
734 use pm_kind, only: CKG => CK3
735 complex(CKG), intent(in) , contiguous, target :: array(:,:)
736 complex(CKG) :: val
737 end function
738#endif
739
740#if CK2_ENABLED
741 module function maxvalALL_D2_CK2(array) result(val)
742#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
743 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D2_CK2
744#endif
745 use pm_kind, only: CKG => CK2
746 complex(CKG), intent(in) , contiguous, target :: array(:,:)
747 complex(CKG) :: val
748 end function
749#endif
750
751#if CK1_ENABLED
752 module function maxvalALL_D2_CK1(array) result(val)
753#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
754 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalALL_D2_CK1
755#endif
756 use pm_kind, only: CKG => CK1
757 complex(CKG), intent(in) , contiguous, target :: array(:,:)
758 complex(CKG) :: val
759 end function
760#endif
761
762 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
763
764#if CK5_ENABLED
765 PURE module function maxvalDIM_D1_CK5(array, dim) result(val)
766#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
767 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D1_CK5
768#endif
769 use pm_kind, only: CKG => CK5
770 integer(IK) , intent(in) :: dim
771 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
772 complex(CKG) :: val
773 end function
774#endif
775
776#if CK4_ENABLED
777 PURE module function maxvalDIM_D1_CK4(array, dim) result(val)
778#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
779 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D1_CK4
780#endif
781 use pm_kind, only: CKG => CK4
782 integer(IK) , intent(in) :: dim
783 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
784 complex(CKG) :: val
785 end function
786#endif
787
788#if CK3_ENABLED
789 PURE module function maxvalDIM_D1_CK3(array, dim) result(val)
790#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
791 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D1_CK3
792#endif
793 use pm_kind, only: CKG => CK3
794 integer(IK) , intent(in) :: dim
795 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
796 complex(CKG) :: val
797 end function
798#endif
799
800#if CK2_ENABLED
801 PURE module function maxvalDIM_D1_CK2(array, dim) result(val)
802#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
803 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D1_CK2
804#endif
805 use pm_kind, only: CKG => CK2
806 integer(IK) , intent(in) :: dim
807 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
808 complex(CKG) :: val
809 end function
810#endif
811
812#if CK1_ENABLED
813 PURE module function maxvalDIM_D1_CK1(array, dim) result(val)
814#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
815 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D1_CK1
816#endif
817 use pm_kind, only: CKG => CK1
818 integer(IK) , intent(in) :: dim
819 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
820 complex(CKG) :: val
821 end function
822#endif
823
824 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
825
826#if CK5_ENABLED
827 PURE module function maxvalDIM_D2_CK5(array, dim) result(val)
828#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
829 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D2_CK5
830#endif
831 use pm_kind, only: CKG => CK5
832 integer(IK) , intent(in) :: dim
833 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
834 complex(CKG) :: val(size(array, 3 - dim, IK))
835 end function
836#endif
837
838#if CK4_ENABLED
839 PURE module function maxvalDIM_D2_CK4(array, dim) result(val)
840#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
841 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D2_CK4
842#endif
843 use pm_kind, only: CKG => CK4
844 integer(IK) , intent(in) :: dim
845 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
846 complex(CKG) :: val(size(array, 3 - dim, IK))
847 end function
848#endif
849
850#if CK3_ENABLED
851 PURE module function maxvalDIM_D2_CK3(array, dim) result(val)
852#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
853 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D2_CK3
854#endif
855 use pm_kind, only: CKG => CK3
856 integer(IK) , intent(in) :: dim
857 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
858 complex(CKG) :: val(size(array, 3 - dim, IK))
859 end function
860#endif
861
862#if CK2_ENABLED
863 PURE module function maxvalDIM_D2_CK2(array, dim) result(val)
864#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
865 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D2_CK2
866#endif
867 use pm_kind, only: CKG => CK2
868 integer(IK) , intent(in) :: dim
869 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
870 complex(CKG) :: val(size(array, 3 - dim, IK))
871 end function
872#endif
873
874#if CK1_ENABLED
875 PURE module function maxvalDIM_D2_CK1(array, dim) result(val)
876#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
877 !DEC$ ATTRIBUTES DLLEXPORT :: maxvalDIM_D2_CK1
878#endif
879 use pm_kind, only: CKG => CK1
880 integer(IK) , intent(in) :: dim
881 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
882 complex(CKG) :: val(size(array, 3 - dim, IK))
883 end function
884#endif
885
886 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
887
888 end interface
889
890!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
891
963
964 interface minloc
965
966 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
967
968#if CK5_ENABLED
969 pure module function minlocALL_D1_CK5(array) result(loc)
970#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
971 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D1_CK5
972#endif
973 use pm_kind, only: CKG => CK5
974 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
975 integer(IK) :: loc(2)
976 end function
977#endif
978
979#if CK4_ENABLED
980 pure module function minlocALL_D1_CK4(array) result(loc)
981#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
982 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D1_CK4
983#endif
984 use pm_kind, only: CKG => CK4
985 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
986 integer(IK) :: loc(2)
987 end function
988#endif
989
990#if CK3_ENABLED
991 pure module function minlocALL_D1_CK3(array) result(loc)
992#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
993 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D1_CK3
994#endif
995 use pm_kind, only: CKG => CK3
996 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
997 integer(IK) :: loc(2)
998 end function
999#endif
1000
1001#if CK2_ENABLED
1002 pure module function minlocALL_D1_CK2(array) result(loc)
1003#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1004 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D1_CK2
1005#endif
1006 use pm_kind, only: CKG => CK2
1007 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1008 integer(IK) :: loc(2)
1009 end function
1010#endif
1011
1012#if CK1_ENABLED
1013 pure module function minlocALL_D1_CK1(array) result(loc)
1014#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1015 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D1_CK1
1016#endif
1017 use pm_kind, only: CKG => CK1
1018 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1019 integer(IK) :: loc(2)
1020 end function
1021#endif
1022
1023 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1024
1025#if CK5_ENABLED
1026 module function minlocALL_D2_CK5(array) result(loc)
1027#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1028 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D2_CK5
1029#endif
1030 use pm_kind, only: CKG => CK5
1031 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1032 integer(IK) :: loc(2)
1033 end function
1034#endif
1035
1036#if CK4_ENABLED
1037 module function minlocALL_D2_CK4(array) result(loc)
1038#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1039 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D2_CK4
1040#endif
1041 use pm_kind, only: CKG => CK4
1042 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1043 integer(IK) :: loc(2)
1044 end function
1045#endif
1046
1047#if CK3_ENABLED
1048 module function minlocALL_D2_CK3(array) result(loc)
1049#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1050 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D2_CK3
1051#endif
1052 use pm_kind, only: CKG => CK3
1053 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1054 integer(IK) :: loc(2)
1055 end function
1056#endif
1057
1058#if CK2_ENABLED
1059 module function minlocALL_D2_CK2(array) result(loc)
1060#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1061 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D2_CK2
1062#endif
1063 use pm_kind, only: CKG => CK2
1064 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1065 integer(IK) :: loc(2)
1066 end function
1067#endif
1068
1069#if CK1_ENABLED
1070 module function minlocALL_D2_CK1(array) result(loc)
1071#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1072 !DEC$ ATTRIBUTES DLLEXPORT :: minlocALL_D2_CK1
1073#endif
1074 use pm_kind, only: CKG => CK1
1075 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1076 integer(IK) :: loc(2)
1077 end function
1078#endif
1079
1080 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1081
1082#if CK5_ENABLED
1083 PURE module function minlocDIM_D1_CK5(array, dim) result(loc)
1084#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1085 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D1_CK5
1086#endif
1087 use pm_kind, only: CKG => CK5
1088 integer(IK) , intent(in) :: dim
1089 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1090 integer(IK) :: loc(2)
1091 end function
1092#endif
1093
1094#if CK4_ENABLED
1095 PURE module function minlocDIM_D1_CK4(array, dim) result(loc)
1096#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1097 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D1_CK4
1098#endif
1099 use pm_kind, only: CKG => CK4
1100 integer(IK) , intent(in) :: dim
1101 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1102 integer(IK) :: loc(2)
1103 end function
1104#endif
1105
1106#if CK3_ENABLED
1107 PURE module function minlocDIM_D1_CK3(array, dim) result(loc)
1108#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1109 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D1_CK3
1110#endif
1111 use pm_kind, only: CKG => CK3
1112 integer(IK) , intent(in) :: dim
1113 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1114 integer(IK) :: loc(2)
1115 end function
1116#endif
1117
1118#if CK2_ENABLED
1119 PURE module function minlocDIM_D1_CK2(array, dim) result(loc)
1120#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1121 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D1_CK2
1122#endif
1123 use pm_kind, only: CKG => CK2
1124 integer(IK) , intent(in) :: dim
1125 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1126 integer(IK) :: loc(2)
1127 end function
1128#endif
1129
1130#if CK1_ENABLED
1131 PURE module function minlocDIM_D1_CK1(array, dim) result(loc)
1132#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1133 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D1_CK1
1134#endif
1135 use pm_kind, only: CKG => CK1
1136 integer(IK) , intent(in) :: dim
1137 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1138 integer(IK) :: loc(2)
1139 end function
1140#endif
1141
1142 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1143
1144#if CK5_ENABLED
1145 PURE module function minlocDIM_D2_CK5(array, dim) result(loc)
1146#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1147 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D2_CK5
1148#endif
1149 use pm_kind, only: CKG => CK5
1150 integer(IK) , intent(in) :: dim
1151 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1152 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1153 end function
1154#endif
1155
1156#if CK4_ENABLED
1157 PURE module function minlocDIM_D2_CK4(array, dim) result(loc)
1158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1159 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D2_CK4
1160#endif
1161 use pm_kind, only: CKG => CK4
1162 integer(IK) , intent(in) :: dim
1163 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1164 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1165 end function
1166#endif
1167
1168#if CK3_ENABLED
1169 PURE module function minlocDIM_D2_CK3(array, dim) result(loc)
1170#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1171 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D2_CK3
1172#endif
1173 use pm_kind, only: CKG => CK3
1174 integer(IK) , intent(in) :: dim
1175 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1176 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1177 end function
1178#endif
1179
1180#if CK2_ENABLED
1181 PURE module function minlocDIM_D2_CK2(array, dim) result(loc)
1182#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1183 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D2_CK2
1184#endif
1185 use pm_kind, only: CKG => CK2
1186 integer(IK) , intent(in) :: dim
1187 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1188 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1189 end function
1190#endif
1191
1192#if CK1_ENABLED
1193 PURE module function minlocDIM_D2_CK1(array, dim) result(loc)
1194#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1195 !DEC$ ATTRIBUTES DLLEXPORT :: minlocDIM_D2_CK1
1196#endif
1197 use pm_kind, only: CKG => CK1
1198 integer(IK) , intent(in) :: dim
1199 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1200 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1201 end function
1202#endif
1203
1204 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1205
1206 end interface
1207
1208!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1209
1281
1282 interface maxloc
1283
1284 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1285
1286#if CK5_ENABLED
1287 pure module function maxlocALL_D1_CK5(array) result(loc)
1288#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1289 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D1_CK5
1290#endif
1291 use pm_kind, only: CKG => CK5
1292 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1293 integer(IK) :: loc(2)
1294 end function
1295#endif
1296
1297#if CK4_ENABLED
1298 pure module function maxlocALL_D1_CK4(array) result(loc)
1299#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1300 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D1_CK4
1301#endif
1302 use pm_kind, only: CKG => CK4
1303 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1304 integer(IK) :: loc(2)
1305 end function
1306#endif
1307
1308#if CK3_ENABLED
1309 pure module function maxlocALL_D1_CK3(array) result(loc)
1310#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1311 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D1_CK3
1312#endif
1313 use pm_kind, only: CKG => CK3
1314 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1315 integer(IK) :: loc(2)
1316 end function
1317#endif
1318
1319#if CK2_ENABLED
1320 pure module function maxlocALL_D1_CK2(array) result(loc)
1321#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1322 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D1_CK2
1323#endif
1324 use pm_kind, only: CKG => CK2
1325 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1326 integer(IK) :: loc(2)
1327 end function
1328#endif
1329
1330#if CK1_ENABLED
1331 pure module function maxlocALL_D1_CK1(array) result(loc)
1332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1333 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D1_CK1
1334#endif
1335 use pm_kind, only: CKG => CK1
1336 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1337 integer(IK) :: loc(2)
1338 end function
1339#endif
1340
1341 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1342
1343#if CK5_ENABLED
1344 module function maxlocALL_D2_CK5(array) result(loc)
1345#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1346 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D2_CK5
1347#endif
1348 use pm_kind, only: CKG => CK5
1349 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1350 integer(IK) :: loc(2)
1351 end function
1352#endif
1353
1354#if CK4_ENABLED
1355 module function maxlocALL_D2_CK4(array) result(loc)
1356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1357 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D2_CK4
1358#endif
1359 use pm_kind, only: CKG => CK4
1360 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1361 integer(IK) :: loc(2)
1362 end function
1363#endif
1364
1365#if CK3_ENABLED
1366 module function maxlocALL_D2_CK3(array) result(loc)
1367#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1368 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D2_CK3
1369#endif
1370 use pm_kind, only: CKG => CK3
1371 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1372 integer(IK) :: loc(2)
1373 end function
1374#endif
1375
1376#if CK2_ENABLED
1377 module function maxlocALL_D2_CK2(array) result(loc)
1378#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1379 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D2_CK2
1380#endif
1381 use pm_kind, only: CKG => CK2
1382 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1383 integer(IK) :: loc(2)
1384 end function
1385#endif
1386
1387#if CK1_ENABLED
1388 module function maxlocALL_D2_CK1(array) result(loc)
1389#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1390 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocALL_D2_CK1
1391#endif
1392 use pm_kind, only: CKG => CK1
1393 complex(CKG), intent(in) , contiguous, target :: array(:,:)
1394 integer(IK) :: loc(2)
1395 end function
1396#endif
1397
1398 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1399
1400#if CK5_ENABLED
1401 PURE module function maxlocDIM_D1_CK5(array, dim) result(loc)
1402#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1403 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D1_CK5
1404#endif
1405 use pm_kind, only: CKG => CK5
1406 integer(IK) , intent(in) :: dim
1407 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1408 integer(IK) :: loc(2)
1409 end function
1410#endif
1411
1412#if CK4_ENABLED
1413 PURE module function maxlocDIM_D1_CK4(array, dim) result(loc)
1414#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1415 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D1_CK4
1416#endif
1417 use pm_kind, only: CKG => CK4
1418 integer(IK) , intent(in) :: dim
1419 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1420 integer(IK) :: loc(2)
1421 end function
1422#endif
1423
1424#if CK3_ENABLED
1425 PURE module function maxlocDIM_D1_CK3(array, dim) result(loc)
1426#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1427 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D1_CK3
1428#endif
1429 use pm_kind, only: CKG => CK3
1430 integer(IK) , intent(in) :: dim
1431 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1432 integer(IK) :: loc(2)
1433 end function
1434#endif
1435
1436#if CK2_ENABLED
1437 PURE module function maxlocDIM_D1_CK2(array, dim) result(loc)
1438#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1439 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D1_CK2
1440#endif
1441 use pm_kind, only: CKG => CK2
1442 integer(IK) , intent(in) :: dim
1443 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1444 integer(IK) :: loc(2)
1445 end function
1446#endif
1447
1448#if CK1_ENABLED
1449 PURE module function maxlocDIM_D1_CK1(array, dim) result(loc)
1450#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1451 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D1_CK1
1452#endif
1453 use pm_kind, only: CKG => CK1
1454 integer(IK) , intent(in) :: dim
1455 complex(CKG), intent(in) __CONTIGUOUS :: array(:)
1456 integer(IK) :: loc(2)
1457 end function
1458#endif
1459
1460 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1461
1462#if CK5_ENABLED
1463 PURE module function maxlocDIM_D2_CK5(array, dim) result(loc)
1464#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1465 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D2_CK5
1466#endif
1467 use pm_kind, only: CKG => CK5
1468 integer(IK) , intent(in) :: dim
1469 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1470 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1471 end function
1472#endif
1473
1474#if CK4_ENABLED
1475 PURE module function maxlocDIM_D2_CK4(array, dim) result(loc)
1476#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1477 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D2_CK4
1478#endif
1479 use pm_kind, only: CKG => CK4
1480 integer(IK) , intent(in) :: dim
1481 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1482 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1483 end function
1484#endif
1485
1486#if CK3_ENABLED
1487 PURE module function maxlocDIM_D2_CK3(array, dim) result(loc)
1488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1489 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D2_CK3
1490#endif
1491 use pm_kind, only: CKG => CK3
1492 integer(IK) , intent(in) :: dim
1493 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1494 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1495 end function
1496#endif
1497
1498#if CK2_ENABLED
1499 PURE module function maxlocDIM_D2_CK2(array, dim) result(loc)
1500#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1501 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D2_CK2
1502#endif
1503 use pm_kind, only: CKG => CK2
1504 integer(IK) , intent(in) :: dim
1505 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1506 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1507 end function
1508#endif
1509
1510#if CK1_ENABLED
1511 PURE module function maxlocDIM_D2_CK1(array, dim) result(loc)
1512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1513 !DEC$ ATTRIBUTES DLLEXPORT :: maxlocDIM_D2_CK1
1514#endif
1515 use pm_kind, only: CKG => CK1
1516 integer(IK) , intent(in) :: dim
1517 complex(CKG), intent(in) __CONTIGUOUS :: array(:,:)
1518 integer(IK) :: loc(2, size(array, 3 - dim, IK))
1519 end function
1520#endif
1521
1522 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1523
1524 end interface
1525
1526!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1527
1528end module pm_complexMinMax ! LCOV_EXCL_LINE
Generate and return the component-wise maximum value of (both real and imaginary parts of) the input ...
Generate and return the component-wise location of the maximum value of (both real and imaginary part...
Generate and return the component-wise maximum value of (both real and imaginary parts of) the input ...
Generate and return the component-wise minimum value of (both real and imaginary parts of) the input ...
Generate and return the component-wise location of the minimum value of (both real and imaginary part...
Generate and return the component-wise minimum value of (both real and imaginary parts of) the input ...
This module contains procedures and generic interfaces for computing element-wise minimum/maximum val...
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 CK1
Definition: pm_kind.F90:464
integer, parameter CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter CK2
Definition: pm_kind.F90:453
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 SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539