ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_sampleCCF.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
137
138!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
139
141
142 use pm_kind, only: SK, IK, LK
143 use pm_container, only: css_type
144 use pm_array, only: nothing, nothing_type
150 use pm_matrixSubset, only: upp_type, upp
151 use pm_matrixSubset, only: low_type, low
152 use pm_fftpack, only: getFactorFFT
153
154 implicit none
155
156 character(*, SK), parameter :: MODULE_NAME = "@pm_sampleCCF"
157
158!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
159
261
262 ! D1
263
264 interface getACF
265
266 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
267
268#if CK5_ENABLED
269 module function getACF_D1_CK5(f, lag, norm) result(acf)
270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
271 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_CK5
272#endif
273 use pm_kind, only: CKG => CK5
274 class(*) , intent(in) , optional :: norm
275 integer(IK) , intent(in) , contiguous, optional :: lag(:)
276 complex(CKG) , intent(in) , contiguous :: f(:)
277 complex(CKG) , allocatable :: acf(:)
278 end function
279#endif
280
281#if CK4_ENABLED
282 module function getACF_D1_CK4(f, lag, norm) result(acf)
283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
284 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_CK4
285#endif
286 use pm_kind, only: CKG => CK4
287 class(*) , intent(in) , optional :: norm
288 integer(IK) , intent(in) , contiguous, optional :: lag(:)
289 complex(CKG) , intent(in) , contiguous :: f(:)
290 complex(CKG) , allocatable :: acf(:)
291 end function
292#endif
293
294#if CK3_ENABLED
295 module function getACF_D1_CK3(f, lag, norm) result(acf)
296#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
297 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_CK3
298#endif
299 use pm_kind, only: CKG => CK3
300 class(*) , intent(in) , optional :: norm
301 integer(IK) , intent(in) , contiguous, optional :: lag(:)
302 complex(CKG) , intent(in) , contiguous :: f(:)
303 complex(CKG) , allocatable :: acf(:)
304 end function
305#endif
306
307#if CK2_ENABLED
308 module function getACF_D1_CK2(f, lag, norm) result(acf)
309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
310 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_CK2
311#endif
312 use pm_kind, only: CKG => CK2
313 class(*) , intent(in) , optional :: norm
314 integer(IK) , intent(in) , contiguous, optional :: lag(:)
315 complex(CKG) , intent(in) , contiguous :: f(:)
316 complex(CKG) , allocatable :: acf(:)
317 end function
318#endif
319
320#if CK1_ENABLED
321 module function getACF_D1_CK1(f, lag, norm) result(acf)
322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
323 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_CK1
324#endif
325 use pm_kind, only: CKG => CK1
326 class(*) , intent(in) , optional :: norm
327 integer(IK) , intent(in) , contiguous, optional :: lag(:)
328 complex(CKG) , intent(in) , contiguous :: f(:)
329 complex(CKG) , allocatable :: acf(:)
330 end function
331#endif
332
333 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
334
335#if RK5_ENABLED
336 module function getACF_D1_RK5(f, lag, norm) result(acf)
337#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
338 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_RK5
339#endif
340 use pm_kind, only: RKG => RK5
341 class(*) , intent(in) , optional :: norm
342 integer(IK) , intent(in) , contiguous, optional :: lag(:)
343 real(RKG) , intent(in) , contiguous :: f(:)
344 real(RKG) , allocatable :: acf(:)
345 end function
346#endif
347
348#if RK4_ENABLED
349 module function getACF_D1_RK4(f, lag, norm) result(acf)
350#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
351 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_RK4
352#endif
353 use pm_kind, only: RKG => RK4
354 class(*) , intent(in) , optional :: norm
355 integer(IK) , intent(in) , contiguous, optional :: lag(:)
356 real(RKG) , intent(in) , contiguous :: f(:)
357 real(RKG) , allocatable :: acf(:)
358 end function
359#endif
360
361#if RK3_ENABLED
362 module function getACF_D1_RK3(f, lag, norm) result(acf)
363#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
364 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_RK3
365#endif
366 use pm_kind, only: RKG => RK3
367 class(*) , intent(in) , optional :: norm
368 integer(IK) , intent(in) , contiguous, optional :: lag(:)
369 real(RKG) , intent(in) , contiguous :: f(:)
370 real(RKG) , allocatable :: acf(:)
371 end function
372#endif
373
374#if RK2_ENABLED
375 module function getACF_D1_RK2(f, lag, norm) result(acf)
376#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
377 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_RK2
378#endif
379 use pm_kind, only: RKG => RK2
380 class(*) , intent(in) , optional :: norm
381 integer(IK) , intent(in) , contiguous, optional :: lag(:)
382 real(RKG) , intent(in) , contiguous :: f(:)
383 real(RKG) , allocatable :: acf(:)
384 end function
385#endif
386
387#if RK1_ENABLED
388 module function getACF_D1_RK1(f, lag, norm) result(acf)
389#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
390 !DEC$ ATTRIBUTES DLLEXPORT :: getACF_D1_RK1
391#endif
392 use pm_kind, only: RKG => RK1
393 class(*) , intent(in) , optional :: norm
394 integer(IK) , intent(in) , contiguous, optional :: lag(:)
395 real(RKG) , intent(in) , contiguous :: f(:)
396 real(RKG) , allocatable :: acf(:)
397 end function
398#endif
399
400 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
401
402 end interface getACF
403
404!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
405
522
523 ! FP - D1
524
525 interface setACF
526
527 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
528
529#if CK5_ENABLED
530 PURE module subroutine setACF_FP_D1_CK5(factor, coef, f, work, inf)
531#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
532 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_CK5
533#endif
534 use pm_kind, only: CKG => CK5
535 logical(LK) , intent(out) :: inf
536 complex(CKG) , intent(out) , contiguous :: work(:)
537 complex(CKG) , intent(inout) , contiguous :: f(:)
538 complex(CKG) , intent(in) , contiguous :: coef(:)
539 integer(IK) , intent(in) , contiguous :: factor(:)
540 end subroutine
541#endif
542
543#if CK4_ENABLED
544 PURE module subroutine setACF_FP_D1_CK4(factor, coef, f, work, inf)
545#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
546 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_CK4
547#endif
548 use pm_kind, only: CKG => CK4
549 logical(LK) , intent(out) :: inf
550 complex(CKG) , intent(out) , contiguous :: work(:)
551 complex(CKG) , intent(inout) , contiguous :: f(:)
552 complex(CKG) , intent(in) , contiguous :: coef(:)
553 integer(IK) , intent(in) , contiguous :: factor(:)
554 end subroutine
555#endif
556
557#if CK3_ENABLED
558 PURE module subroutine setACF_FP_D1_CK3(factor, coef, f, work, inf)
559#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
560 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_CK3
561#endif
562 use pm_kind, only: CKG => CK3
563 logical(LK) , intent(out) :: inf
564 complex(CKG) , intent(out) , contiguous :: work(:)
565 complex(CKG) , intent(inout) , contiguous :: f(:)
566 complex(CKG) , intent(in) , contiguous :: coef(:)
567 integer(IK) , intent(in) , contiguous :: factor(:)
568 end subroutine
569#endif
570
571#if CK2_ENABLED
572 PURE module subroutine setACF_FP_D1_CK2(factor, coef, f, work, inf)
573#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
574 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_CK2
575#endif
576 use pm_kind, only: CKG => CK2
577 logical(LK) , intent(out) :: inf
578 complex(CKG) , intent(out) , contiguous :: work(:)
579 complex(CKG) , intent(inout) , contiguous :: f(:)
580 complex(CKG) , intent(in) , contiguous :: coef(:)
581 integer(IK) , intent(in) , contiguous :: factor(:)
582 end subroutine
583#endif
584
585#if CK1_ENABLED
586 PURE module subroutine setACF_FP_D1_CK1(factor, coef, f, work, inf)
587#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
588 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_CK1
589#endif
590 use pm_kind, only: CKG => CK1
591 logical(LK) , intent(out) :: inf
592 complex(CKG) , intent(out) , contiguous :: work(:)
593 complex(CKG) , intent(inout) , contiguous :: f(:)
594 complex(CKG) , intent(in) , contiguous :: coef(:)
595 integer(IK) , intent(in) , contiguous :: factor(:)
596 end subroutine
597#endif
598
599 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
600
601#if RK5_ENABLED
602 PURE module subroutine setACF_FP_D1_RK5(factor, coef, f, work, inf)
603#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
604 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_RK5
605#endif
606 use pm_kind, only: RKG => RK5
607 logical(LK) , intent(out) :: inf
608 real(RKG) , intent(out) , contiguous :: work(:)
609 real(RKG) , intent(inout) , contiguous :: f(:)
610 real(RKG) , intent(in) , contiguous :: coef(:)
611 integer(IK) , intent(in) , contiguous :: factor(:)
612 end subroutine
613#endif
614
615#if RK4_ENABLED
616 PURE module subroutine setACF_FP_D1_RK4(factor, coef, f, work, inf)
617#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
618 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_RK4
619#endif
620 use pm_kind, only: RKG => RK4
621 logical(LK) , intent(out) :: inf
622 real(RKG) , intent(out) , contiguous :: work(:)
623 real(RKG) , intent(inout) , contiguous :: f(:)
624 real(RKG) , intent(in) , contiguous :: coef(:)
625 integer(IK) , intent(in) , contiguous :: factor(:)
626 end subroutine
627#endif
628
629#if RK3_ENABLED
630 PURE module subroutine setACF_FP_D1_RK3(factor, coef, f, work, inf)
631#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
632 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_RK3
633#endif
634 use pm_kind, only: RKG => RK3
635 logical(LK) , intent(out) :: inf
636 real(RKG) , intent(out) , contiguous :: work(:)
637 real(RKG) , intent(inout) , contiguous :: f(:)
638 real(RKG) , intent(in) , contiguous :: coef(:)
639 integer(IK) , intent(in) , contiguous :: factor(:)
640 end subroutine
641#endif
642
643#if RK2_ENABLED
644 PURE module subroutine setACF_FP_D1_RK2(factor, coef, f, work, inf)
645#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
646 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_RK2
647#endif
648 use pm_kind, only: RKG => RK2
649 logical(LK) , intent(out) :: inf
650 real(RKG) , intent(out) , contiguous :: work(:)
651 real(RKG) , intent(inout) , contiguous :: f(:)
652 real(RKG) , intent(in) , contiguous :: coef(:)
653 integer(IK) , intent(in) , contiguous :: factor(:)
654 end subroutine
655#endif
656
657#if RK1_ENABLED
658 PURE module subroutine setACF_FP_D1_RK1(factor, coef, f, work, inf)
659#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
660 !DEC$ ATTRIBUTES DLLEXPORT :: setACF_FP_D1_RK1
661#endif
662 use pm_kind, only: RKG => RK1
663 logical(LK) , intent(out) :: inf
664 real(RKG) , intent(out) , contiguous :: work(:)
665 real(RKG) , intent(inout) , contiguous :: f(:)
666 real(RKG) , intent(in) , contiguous :: coef(:)
667 integer(IK) , intent(in) , contiguous :: factor(:)
668 end subroutine
669#endif
670
671 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
672
673 end interface setACF
674
675!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
676
781
782 ! FG
783
784 interface getCCF
785
786 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
787
788#if CK5_ENABLED
789 module function getCCF_FG_CK5(f, g, lag, norm) result(ccf)
790#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
791 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_CK5
792#endif
793 use pm_kind, only: CKG => CK5
794 class(*) , intent(in) , optional :: norm
795 integer(IK) , intent(in) , contiguous, optional :: lag(:)
796 complex(CKG) , intent(in) , contiguous :: f(:), g(:)
797 complex(CKG) , allocatable :: ccf(:)
798 end function
799#endif
800
801#if CK4_ENABLED
802 module function getCCF_FG_CK4(f, g, lag, norm) result(ccf)
803#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
804 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_CK4
805#endif
806 use pm_kind, only: CKG => CK4
807 class(*) , intent(in) , optional :: norm
808 integer(IK) , intent(in) , contiguous, optional :: lag(:)
809 complex(CKG) , intent(in) , contiguous :: f(:), g(:)
810 complex(CKG) , allocatable :: ccf(:)
811 end function
812#endif
813
814#if CK3_ENABLED
815 module function getCCF_FG_CK3(f, g, lag, norm) result(ccf)
816#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
817 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_CK3
818#endif
819 use pm_kind, only: CKG => CK3
820 class(*) , intent(in) , optional :: norm
821 integer(IK) , intent(in) , contiguous, optional :: lag(:)
822 complex(CKG) , intent(in) , contiguous :: f(:), g(:)
823 complex(CKG) , allocatable :: ccf(:)
824 end function
825#endif
826
827#if CK2_ENABLED
828 module function getCCF_FG_CK2(f, g, lag, norm) result(ccf)
829#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
830 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_CK2
831#endif
832 use pm_kind, only: CKG => CK2
833 class(*) , intent(in) , optional :: norm
834 integer(IK) , intent(in) , contiguous, optional :: lag(:)
835 complex(CKG) , intent(in) , contiguous :: f(:), g(:)
836 complex(CKG) , allocatable :: ccf(:)
837 end function
838#endif
839
840#if CK1_ENABLED
841 module function getCCF_FG_CK1(f, g, lag, norm) result(ccf)
842#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
843 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_CK1
844#endif
845 use pm_kind, only: CKG => CK1
846 class(*) , intent(in) , optional :: norm
847 integer(IK) , intent(in) , contiguous, optional :: lag(:)
848 complex(CKG) , intent(in) , contiguous :: f(:), g(:)
849 complex(CKG) , allocatable :: ccf(:)
850 end function
851#endif
852
853 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
854
855#if RK5_ENABLED
856 module function getCCF_FG_RK5(f, g, lag, norm) result(ccf)
857#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
858 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_RK5
859#endif
860 use pm_kind, only: RKG => RK5
861 class(*) , intent(in) , optional :: norm
862 integer(IK) , intent(in) , contiguous, optional :: lag(:)
863 real(RKG) , intent(in) , contiguous :: f(:), g(:)
864 real(RKG) , allocatable :: ccf(:)
865 end function
866#endif
867
868#if RK4_ENABLED
869 module function getCCF_FG_RK4(f, g, lag, norm) result(ccf)
870#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
871 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_RK4
872#endif
873 use pm_kind, only: RKG => RK4
874 class(*) , intent(in) , optional :: norm
875 integer(IK) , intent(in) , contiguous, optional :: lag(:)
876 real(RKG) , intent(in) , contiguous :: f(:), g(:)
877 real(RKG) , allocatable :: ccf(:)
878 end function
879#endif
880
881#if RK3_ENABLED
882 module function getCCF_FG_RK3(f, g, lag, norm) result(ccf)
883#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
884 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_RK3
885#endif
886 use pm_kind, only: RKG => RK3
887 class(*) , intent(in) , optional :: norm
888 integer(IK) , intent(in) , contiguous, optional :: lag(:)
889 real(RKG) , intent(in) , contiguous :: f(:), g(:)
890 real(RKG) , allocatable :: ccf(:)
891 end function
892#endif
893
894#if RK2_ENABLED
895 module function getCCF_FG_RK2(f, g, lag, norm) result(ccf)
896#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
897 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_RK2
898#endif
899 use pm_kind, only: RKG => RK2
900 class(*) , intent(in) , optional :: norm
901 integer(IK) , intent(in) , contiguous, optional :: lag(:)
902 real(RKG) , intent(in) , contiguous :: f(:), g(:)
903 real(RKG) , allocatable :: ccf(:)
904 end function
905#endif
906
907#if RK1_ENABLED
908 module function getCCF_FG_RK1(f, g, lag, norm) result(ccf)
909#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
910 !DEC$ ATTRIBUTES DLLEXPORT :: getCCF_FG_RK1
911#endif
912 use pm_kind, only: RKG => RK1
913 class(*) , intent(in) , optional :: norm
914 integer(IK) , intent(in) , contiguous, optional :: lag(:)
915 real(RKG) , intent(in) , contiguous :: f(:), g(:)
916 real(RKG) , allocatable :: ccf(:)
917 end function
918#endif
919
920 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
921
922 end interface getCCF
923
924!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
925
1048
1049 ! FP - FG
1050
1051 interface setCCF
1052
1053 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1054
1055#if CK5_ENABLED
1056 PURE module subroutine setCCF_FP_FG_CK5(factor, coef, f, g, work, inf)
1057#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1058 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_CK5
1059#endif
1060 use pm_kind, only: CKG => CK5
1061 logical(LK) , intent(out) :: inf
1062 complex(CKG) , intent(out) , contiguous :: work(:)
1063 complex(CKG) , intent(inout) , contiguous :: f(:), g(:)
1064 complex(CKG) , intent(in) , contiguous :: coef(:)
1065 integer(IK) , intent(in) , contiguous :: factor(:)
1066 end subroutine
1067#endif
1068
1069#if CK4_ENABLED
1070 PURE module subroutine setCCF_FP_FG_CK4(factor, coef, f, g, work, inf)
1071#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1072 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_CK4
1073#endif
1074 use pm_kind, only: CKG => CK4
1075 logical(LK) , intent(out) :: inf
1076 complex(CKG) , intent(out) , contiguous :: work(:)
1077 complex(CKG) , intent(inout) , contiguous :: f(:), g(:)
1078 complex(CKG) , intent(in) , contiguous :: coef(:)
1079 integer(IK) , intent(in) , contiguous :: factor(:)
1080 end subroutine
1081#endif
1082
1083#if CK3_ENABLED
1084 PURE module subroutine setCCF_FP_FG_CK3(factor, coef, f, g, work, inf)
1085#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1086 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_CK3
1087#endif
1088 use pm_kind, only: CKG => CK3
1089 logical(LK) , intent(out) :: inf
1090 complex(CKG) , intent(out) , contiguous :: work(:)
1091 complex(CKG) , intent(inout) , contiguous :: f(:), g(:)
1092 complex(CKG) , intent(in) , contiguous :: coef(:)
1093 integer(IK) , intent(in) , contiguous :: factor(:)
1094 end subroutine
1095#endif
1096
1097#if CK2_ENABLED
1098 PURE module subroutine setCCF_FP_FG_CK2(factor, coef, f, g, work, inf)
1099#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1100 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_CK2
1101#endif
1102 use pm_kind, only: CKG => CK2
1103 logical(LK) , intent(out) :: inf
1104 complex(CKG) , intent(out) , contiguous :: work(:)
1105 complex(CKG) , intent(inout) , contiguous :: f(:), g(:)
1106 complex(CKG) , intent(in) , contiguous :: coef(:)
1107 integer(IK) , intent(in) , contiguous :: factor(:)
1108 end subroutine
1109#endif
1110
1111#if CK1_ENABLED
1112 PURE module subroutine setCCF_FP_FG_CK1(factor, coef, f, g, work, inf)
1113#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1114 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_CK1
1115#endif
1116 use pm_kind, only: CKG => CK1
1117 logical(LK) , intent(out) :: inf
1118 complex(CKG) , intent(out) , contiguous :: work(:)
1119 complex(CKG) , intent(inout) , contiguous :: f(:), g(:)
1120 complex(CKG) , intent(in) , contiguous :: coef(:)
1121 integer(IK) , intent(in) , contiguous :: factor(:)
1122 end subroutine
1123#endif
1124
1125 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1126
1127#if RK5_ENABLED
1128 PURE module subroutine setCCF_FP_FG_RK5(factor, coef, f, g, work, inf)
1129#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1130 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_RK5
1131#endif
1132 use pm_kind, only: RKG => RK5
1133 logical(LK) , intent(out) :: inf
1134 real(RKG) , intent(out) , contiguous :: work(:)
1135 real(RKG) , intent(inout) , contiguous :: f(:), g(:)
1136 real(RKG) , intent(in) , contiguous :: coef(:)
1137 integer(IK) , intent(in) , contiguous :: factor(:)
1138 end subroutine
1139#endif
1140
1141#if RK4_ENABLED
1142 PURE module subroutine setCCF_FP_FG_RK4(factor, coef, f, g, work, inf)
1143#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1144 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_RK4
1145#endif
1146 use pm_kind, only: RKG => RK4
1147 logical(LK) , intent(out) :: inf
1148 real(RKG) , intent(out) , contiguous :: work(:)
1149 real(RKG) , intent(inout) , contiguous :: f(:), g(:)
1150 real(RKG) , intent(in) , contiguous :: coef(:)
1151 integer(IK) , intent(in) , contiguous :: factor(:)
1152 end subroutine
1153#endif
1154
1155#if RK3_ENABLED
1156 PURE module subroutine setCCF_FP_FG_RK3(factor, coef, f, g, work, inf)
1157#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1158 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_RK3
1159#endif
1160 use pm_kind, only: RKG => RK3
1161 logical(LK) , intent(out) :: inf
1162 real(RKG) , intent(out) , contiguous :: work(:)
1163 real(RKG) , intent(inout) , contiguous :: f(:), g(:)
1164 real(RKG) , intent(in) , contiguous :: coef(:)
1165 integer(IK) , intent(in) , contiguous :: factor(:)
1166 end subroutine
1167#endif
1168
1169#if RK2_ENABLED
1170 PURE module subroutine setCCF_FP_FG_RK2(factor, coef, f, g, work, inf)
1171#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1172 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_RK2
1173#endif
1174 use pm_kind, only: RKG => RK2
1175 logical(LK) , intent(out) :: inf
1176 real(RKG) , intent(out) , contiguous :: work(:)
1177 real(RKG) , intent(inout) , contiguous :: f(:), g(:)
1178 real(RKG) , intent(in) , contiguous :: coef(:)
1179 integer(IK) , intent(in) , contiguous :: factor(:)
1180 end subroutine
1181#endif
1182
1183#if RK1_ENABLED
1184 PURE module subroutine setCCF_FP_FG_RK1(factor, coef, f, g, work, inf)
1185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1186 !DEC$ ATTRIBUTES DLLEXPORT :: setCCF_FP_FG_RK1
1187#endif
1188 use pm_kind, only: RKG => RK1
1189 logical(LK) , intent(out) :: inf
1190 real(RKG) , intent(out) , contiguous :: work(:)
1191 real(RKG) , intent(inout) , contiguous :: f(:), g(:)
1192 real(RKG) , intent(in) , contiguous :: coef(:)
1193 integer(IK) , intent(in) , contiguous :: factor(:)
1194 end subroutine
1195#endif
1196
1197 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1198
1199 end interface setCCF
1200
1201!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1202
1203end module pm_sampleCCF ! LCOV_EXCL_LINE
Generate and return the factorization vector factor of the specified input sequence length and the co...
Definition: pm_fftpack.F90:292
Generate and return the auto-correlation function (ACF) of the discrete signal lagging itself for a...
Generate and return the cross-correlation function (CCF) of the discrete signal lagging the signal ...
Return the auto-correlation function (ACF) of the discrete signal lagging itself for a range of lag...
Return the cross-correlation function (CCF) of the discrete signal lagging the signal the discrete ...
This module contains abstract and concrete derived types that are required for compile-time resolutio...
Definition: pm_array.F90:44
character(*, SK), parameter MODULE_NAME
Definition: pm_array.F90:50
type(nothing_type), parameter nothing
This is a scalar parameter object of type nothing_type that is exclusively used to request no action ...
Definition: pm_array.F90:167
This module contains the derived types for generating allocatable containers of scalar,...
This module contains procedures and generic interfaces for computing the Discrete Fourier Transform o...
Definition: pm_fftpack.F90:205
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
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 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
integer, parameter RK1
Definition: pm_kind.F90:522
This module contains abstract and concrete derived types that are required for compile-time resolutio...
type(lowDia_type), parameter lowDia
This is a scalar parameter object of type lowDia_type that is exclusively used to request lower-diago...
type(low_type), parameter low
This is a scalar parameter object of type low_type that is exclusively used to request lower-triangul...
type(upp_type), parameter upp
This is a scalar parameter object of type upp_type that is exclusively used to request upper-triangul...
type(uppDia_type), parameter uppDia
This is a scalar parameter object of type uppDia_type that is exclusively used to request upper-diago...
This module contains classes and procedures for computing properties related to the cross correlation...
This module contains classes and procedures for normalizing univariate or multivariate samples by arb...
type(zscore_type), parameter zscore
This module contains classes and procedures for scaling (i.e., multiplying) univariate or multivariat...
type(stdscale_type), parameter stdscale
This module contains classes and procedures for shifting univariate or multivariate samples by arbitr...
type(meanshift_type), parameter meanshift
This is a concrete derived type whose instances are exclusively used to request no action on a given ...
Definition: pm_array.F90:132
This is the css_type type for generating instances of container of scalar of string objects.
This is a concrete derived type whose instances are exclusively used to request lower-diagonal triang...
This is a concrete derived type whose instances are exclusively used to request lower-triangular stor...
This is a concrete derived type whose instances are exclusively used to request upper-diagonal triang...
This is a concrete derived type whose instances are exclusively used to request upper-triangular stor...
This is the derived type whose instances are meant to signify a sample shifting by an amount equal to...
This is the derived type whose instances are meant to signify a sample scaling by an amount equal to ...
This is the derived type whose instances are meant to signify a sample shifting by an amount equal to...