ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_fftnr.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
181
182!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183
185
186 use pm_kind, only: SK, IK, LK, RKB
187
188 implicit none
189
190 character(*, SK), parameter :: MODULE_NAME = "@pm_fftnr"
191
192!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
193
250 interface getFFTF
251
252 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
253
254#if CK5_ENABLED
255 impure module function getFFTF_CK5(data) result(fft)
256#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
257 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_CK5
258#endif
259 use pm_kind, only: CKG => CK5
260 complex(CKG), intent(in) , contiguous :: data(:)
261 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
262 end function
263#endif
264
265#if CK4_ENABLED
266 impure module function getFFTF_CK4(data) result(fft)
267#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
268 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_CK4
269#endif
270 use pm_kind, only: CKG => CK4
271 complex(CKG), intent(in) , contiguous :: data(:)
272 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
273 end function
274#endif
275
276#if CK3_ENABLED
277 impure module function getFFTF_CK3(data) result(fft)
278#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
279 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_CK3
280#endif
281 use pm_kind, only: CKG => CK3
282 complex(CKG), intent(in) , contiguous :: data(:)
283 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
284 end function
285#endif
286
287#if CK2_ENABLED
288 impure module function getFFTF_CK2(data) result(fft)
289#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
290 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_CK2
291#endif
292 use pm_kind, only: CKG => CK2
293 complex(CKG), intent(in) , contiguous :: data(:)
294 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
295 end function
296#endif
297
298#if CK1_ENABLED
299 impure module function getFFTF_CK1(data) result(fft)
300#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
301 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_CK1
302#endif
303 use pm_kind, only: CKG => CK1
304 complex(CKG), intent(in) , contiguous :: data(:)
305 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
306 end function
307#endif
308
309 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
310
311#if RK5_ENABLED
312 impure module function getFFTF_RK5(data) result(fft)
313#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
314 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_RK5
315#endif
316 use pm_kind, only: RKG => RK5
317 real(RKG) , intent(in) , contiguous :: data(:)
318 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
319 end function
320#endif
321
322#if RK4_ENABLED
323 impure module function getFFTF_RK4(data) result(fft)
324#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
325 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_RK4
326#endif
327 use pm_kind, only: RKG => RK4
328 real(RKG) , intent(in) , contiguous :: data(:)
329 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
330 end function
331#endif
332
333#if RK3_ENABLED
334 impure module function getFFTF_RK3(data) result(fft)
335#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
336 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_RK3
337#endif
338 use pm_kind, only: RKG => RK3
339 real(RKG) , intent(in) , contiguous :: data(:)
340 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
341 end function
342#endif
343
344#if RK2_ENABLED
345 impure module function getFFTF_RK2(data) result(fft)
346#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
347 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_RK2
348#endif
349 use pm_kind, only: RKG => RK2
350 real(RKG) , intent(in) , contiguous :: data(:)
351 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
352 end function
353#endif
354
355#if RK1_ENABLED
356 impure module function getFFTF_RK1(data) result(fft)
357#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
358 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTF_RK1
359#endif
360 use pm_kind, only: RKG => RK1
361 real(RKG) , intent(in) , contiguous :: data(:)
362 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
363 end function
364#endif
365
366 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
367
368 end interface
369
370!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
371
428 interface getFFTI
429
430 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
431
432#if CK5_ENABLED
433 impure module function getFFTI_CK5(data) result(fft)
434#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
435 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_CK5
436#endif
437 use pm_kind, only: CKG => CK5
438 complex(CKG), intent(in) , contiguous :: data(:)
439 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
440 end function
441#endif
442
443#if CK4_ENABLED
444 impure module function getFFTI_CK4(data) result(fft)
445#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
446 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_CK4
447#endif
448 use pm_kind, only: CKG => CK4
449 complex(CKG), intent(in) , contiguous :: data(:)
450 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
451 end function
452#endif
453
454#if CK3_ENABLED
455 impure module function getFFTI_CK3(data) result(fft)
456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
457 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_CK3
458#endif
459 use pm_kind, only: CKG => CK3
460 complex(CKG), intent(in) , contiguous :: data(:)
461 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
462 end function
463#endif
464
465#if CK2_ENABLED
466 impure module function getFFTI_CK2(data) result(fft)
467#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
468 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_CK2
469#endif
470 use pm_kind, only: CKG => CK2
471 complex(CKG), intent(in) , contiguous :: data(:)
472 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
473 end function
474#endif
475
476#if CK1_ENABLED
477 impure module function getFFTI_CK1(data) result(fft)
478#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
479 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_CK1
480#endif
481 use pm_kind, only: CKG => CK1
482 complex(CKG), intent(in) , contiguous :: data(:)
483 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
484 end function
485#endif
486
487 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
488
489#if RK5_ENABLED
490 impure module function getFFTI_RK5(data) result(fft)
491#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
492 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_RK5
493#endif
494 use pm_kind, only: RKG => RK5
495 real(RKG) , intent(in) , contiguous :: data(:)
496 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
497 end function
498#endif
499
500#if RK4_ENABLED
501 impure module function getFFTI_RK4(data) result(fft)
502#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
503 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_RK4
504#endif
505 use pm_kind, only: RKG => RK4
506 real(RKG) , intent(in) , contiguous :: data(:)
507 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
508 end function
509#endif
510
511#if RK3_ENABLED
512 impure module function getFFTI_RK3(data) result(fft)
513#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
514 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_RK3
515#endif
516 use pm_kind, only: RKG => RK3
517 real(RKG) , intent(in) , contiguous :: data(:)
518 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
519 end function
520#endif
521
522#if RK2_ENABLED
523 impure module function getFFTI_RK2(data) result(fft)
524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
525 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_RK2
526#endif
527 use pm_kind, only: RKG => RK2
528 real(RKG) , intent(in) , contiguous :: data(:)
529 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
530 end function
531#endif
532
533#if RK1_ENABLED
534 impure module function getFFTI_RK1(data) result(fft)
535#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
536 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTI_RK1
537#endif
538 use pm_kind, only: RKG => RK1
539 real(RKG) , intent(in) , contiguous :: data(:)
540 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
541 end function
542#endif
543
544 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
545
546 end interface
547
548!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
549
611 interface getFFTR
612
613 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
614
615#if CK5_ENABLED
616 impure module function getFFTR_CK5(data) result(fft)
617#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
618 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_CK5
619#endif
620 use pm_kind, only: CKG => CK5
621 complex(CKG), intent(in) , contiguous :: data(:)
622 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
623 end function
624#endif
625
626#if CK4_ENABLED
627 impure module function getFFTR_CK4(data) result(fft)
628#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
629 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_CK4
630#endif
631 use pm_kind, only: CKG => CK4
632 complex(CKG), intent(in) , contiguous :: data(:)
633 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
634 end function
635#endif
636
637#if CK3_ENABLED
638 impure module function getFFTR_CK3(data) result(fft)
639#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
640 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_CK3
641#endif
642 use pm_kind, only: CKG => CK3
643 complex(CKG), intent(in) , contiguous :: data(:)
644 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
645 end function
646#endif
647
648#if CK2_ENABLED
649 impure module function getFFTR_CK2(data) result(fft)
650#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
651 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_CK2
652#endif
653 use pm_kind, only: CKG => CK2
654 complex(CKG), intent(in) , contiguous :: data(:)
655 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
656 end function
657#endif
658
659#if CK1_ENABLED
660 impure module function getFFTR_CK1(data) result(fft)
661#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
662 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_CK1
663#endif
664 use pm_kind, only: CKG => CK1
665 complex(CKG), intent(in) , contiguous :: data(:)
666 complex(CKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
667 end function
668#endif
669
670 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
671
672#if RK5_ENABLED
673 impure module function getFFTR_RK5(data) result(fft)
674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
675 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_RK5
676#endif
677 use pm_kind, only: RKG => RK5
678 real(RKG) , intent(in) , contiguous :: data(:)
679 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
680 end function
681#endif
682
683#if RK4_ENABLED
684 impure module function getFFTR_RK4(data) result(fft)
685#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
686 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_RK4
687#endif
688 use pm_kind, only: RKG => RK4
689 real(RKG) , intent(in) , contiguous :: data(:)
690 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
691 end function
692#endif
693
694#if RK3_ENABLED
695 impure module function getFFTR_RK3(data) result(fft)
696#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
697 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_RK3
698#endif
699 use pm_kind, only: RKG => RK3
700 real(RKG) , intent(in) , contiguous :: data(:)
701 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
702 end function
703#endif
704
705#if RK2_ENABLED
706 impure module function getFFTR_RK2(data) result(fft)
707#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
708 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_RK2
709#endif
710 use pm_kind, only: RKG => RK2
711 real(RKG) , intent(in) , contiguous :: data(:)
712 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
713 end function
714#endif
715
716#if RK1_ENABLED
717 impure module function getFFTR_RK1(data) result(fft)
718#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
719 !DEC$ ATTRIBUTES DLLEXPORT :: getFFTR_RK1
720#endif
721 use pm_kind, only: RKG => RK1
722 real(RKG) , intent(in) , contiguous :: data(:)
723 real(RKG) :: fft(2**ceiling(log(real(size(data, 1, IK), RKB)) / log(2._RKB)))
724 end function
725#endif
726
727 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
728
729 end interface
730
731!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
732
783 interface setFFTF
784
785 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
786
787#if CK5_ENABLED
788 PURE module subroutine setFFTF_CK5(data)
789#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
790 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_CK5
791#endif
792 use pm_kind, only: CKG => CK5
793 complex(CKG), intent(inout) , contiguous :: data(:)
794 end subroutine
795#endif
796
797#if CK4_ENABLED
798 PURE module subroutine setFFTF_CK4(data)
799#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
800 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_CK4
801#endif
802 use pm_kind, only: CKG => CK4
803 complex(CKG), intent(inout) , contiguous :: data(:)
804 end subroutine
805#endif
806
807#if CK3_ENABLED
808 PURE module subroutine setFFTF_CK3(data)
809#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
810 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_CK3
811#endif
812 use pm_kind, only: CKG => CK3
813 complex(CKG), intent(inout) , contiguous :: data(:)
814 end subroutine
815#endif
816
817#if CK2_ENABLED
818 PURE module subroutine setFFTF_CK2(data)
819#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
820 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_CK2
821#endif
822 use pm_kind, only: CKG => CK2
823 complex(CKG), intent(inout) , contiguous :: data(:)
824 end subroutine
825#endif
826
827#if CK1_ENABLED
828 PURE module subroutine setFFTF_CK1(data)
829#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
830 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_CK1
831#endif
832 use pm_kind, only: CKG => CK1
833 complex(CKG), intent(inout) , contiguous :: data(:)
834 end subroutine
835#endif
836
837 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
838
839#if RK5_ENABLED
840 PURE module subroutine setFFTF_RK5(data)
841#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
842 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_RK5
843#endif
844 use pm_kind, only: RKG => RK5
845 real(RKG) , intent(inout) , contiguous :: data(:)
846 end subroutine
847#endif
848
849#if RK4_ENABLED
850 PURE module subroutine setFFTF_RK4(data)
851#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
852 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_RK4
853#endif
854 use pm_kind, only: RKG => RK4
855 real(RKG) , intent(inout) , contiguous :: data(:)
856 end subroutine
857#endif
858
859#if RK3_ENABLED
860 PURE module subroutine setFFTF_RK3(data)
861#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
862 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_RK3
863#endif
864 use pm_kind, only: RKG => RK3
865 real(RKG) , intent(inout) , contiguous :: data(:)
866 end subroutine
867#endif
868
869#if RK2_ENABLED
870 PURE module subroutine setFFTF_RK2(data)
871#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
872 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_RK2
873#endif
874 use pm_kind, only: RKG => RK2
875 real(RKG) , intent(inout) , contiguous :: data(:)
876 end subroutine
877#endif
878
879#if RK1_ENABLED
880 PURE module subroutine setFFTF_RK1(data)
881#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
882 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTF_RK1
883#endif
884 use pm_kind, only: RKG => RK1
885 real(RKG) , intent(inout) , contiguous :: data(:)
886 end subroutine
887#endif
888
889 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
890
891 end interface
892
893!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
894
945 interface setFFTI
946
947 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
948
949#if CK5_ENABLED
950 PURE module subroutine setFFTI_CK5(data)
951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
952 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_CK5
953#endif
954 use pm_kind, only: CKG => CK5
955 complex(CKG), intent(inout) , contiguous :: data(:)
956 end subroutine
957#endif
958
959#if CK4_ENABLED
960 PURE module subroutine setFFTI_CK4(data)
961#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
962 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_CK4
963#endif
964 use pm_kind, only: CKG => CK4
965 complex(CKG), intent(inout) , contiguous :: data(:)
966 end subroutine
967#endif
968
969#if CK3_ENABLED
970 PURE module subroutine setFFTI_CK3(data)
971#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
972 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_CK3
973#endif
974 use pm_kind, only: CKG => CK3
975 complex(CKG), intent(inout) , contiguous :: data(:)
976 end subroutine
977#endif
978
979#if CK2_ENABLED
980 PURE module subroutine setFFTI_CK2(data)
981#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
982 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_CK2
983#endif
984 use pm_kind, only: CKG => CK2
985 complex(CKG), intent(inout) , contiguous :: data(:)
986 end subroutine
987#endif
988
989#if CK1_ENABLED
990 PURE module subroutine setFFTI_CK1(data)
991#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
992 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_CK1
993#endif
994 use pm_kind, only: CKG => CK1
995 complex(CKG), intent(inout) , contiguous :: data(:)
996 end subroutine
997#endif
998
999 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1000
1001#if RK5_ENABLED
1002 PURE module subroutine setFFTI_RK5(data)
1003#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1004 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_RK5
1005#endif
1006 use pm_kind, only: RKG => RK5
1007 real(RKG) , intent(inout) , contiguous :: data(:)
1008 end subroutine
1009#endif
1010
1011#if RK4_ENABLED
1012 PURE module subroutine setFFTI_RK4(data)
1013#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1014 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_RK4
1015#endif
1016 use pm_kind, only: RKG => RK4
1017 real(RKG) , intent(inout) , contiguous :: data(:)
1018 end subroutine
1019#endif
1020
1021#if RK3_ENABLED
1022 PURE module subroutine setFFTI_RK3(data)
1023#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1024 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_RK3
1025#endif
1026 use pm_kind, only: RKG => RK3
1027 real(RKG) , intent(inout) , contiguous :: data(:)
1028 end subroutine
1029#endif
1030
1031#if RK2_ENABLED
1032 PURE module subroutine setFFTI_RK2(data)
1033#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1034 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_RK2
1035#endif
1036 use pm_kind, only: RKG => RK2
1037 real(RKG) , intent(inout) , contiguous :: data(:)
1038 end subroutine
1039#endif
1040
1041#if RK1_ENABLED
1042 PURE module subroutine setFFTI_RK1(data)
1043#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1044 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTI_RK1
1045#endif
1046 use pm_kind, only: RKG => RK1
1047 real(RKG) , intent(inout) , contiguous :: data(:)
1048 end subroutine
1049#endif
1050
1051 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1052
1053 end interface
1054
1055!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1056
1107 interface setFFTR
1108
1109 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1110
1111#if CK5_ENABLED
1112 PURE module subroutine setFFTR_CK5(data)
1113#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1114 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_CK5
1115#endif
1116 use pm_kind, only: CKG => CK5
1117 complex(CKG), intent(inout) , contiguous :: data(:)
1118 end subroutine
1119#endif
1120
1121#if CK4_ENABLED
1122 PURE module subroutine setFFTR_CK4(data)
1123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1124 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_CK4
1125#endif
1126 use pm_kind, only: CKG => CK4
1127 complex(CKG), intent(inout) , contiguous :: data(:)
1128 end subroutine
1129#endif
1130
1131#if CK3_ENABLED
1132 PURE module subroutine setFFTR_CK3(data)
1133#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1134 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_CK3
1135#endif
1136 use pm_kind, only: CKG => CK3
1137 complex(CKG), intent(inout) , contiguous :: data(:)
1138 end subroutine
1139#endif
1140
1141#if CK2_ENABLED
1142 PURE module subroutine setFFTR_CK2(data)
1143#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1144 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_CK2
1145#endif
1146 use pm_kind, only: CKG => CK2
1147 complex(CKG), intent(inout) , contiguous :: data(:)
1148 end subroutine
1149#endif
1150
1151#if CK1_ENABLED
1152 PURE module subroutine setFFTR_CK1(data)
1153#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1154 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_CK1
1155#endif
1156 use pm_kind, only: CKG => CK1
1157 complex(CKG), intent(inout) , contiguous :: data(:)
1158 end subroutine
1159#endif
1160
1161 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1162
1163#if RK5_ENABLED
1164 PURE module subroutine setFFTR_RK5(data)
1165#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1166 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_RK5
1167#endif
1168 use pm_kind, only: RKG => RK5
1169 real(RKG) , intent(inout) , contiguous :: data(:)
1170 end subroutine
1171#endif
1172
1173#if RK4_ENABLED
1174 PURE module subroutine setFFTR_RK4(data)
1175#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1176 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_RK4
1177#endif
1178 use pm_kind, only: RKG => RK4
1179 real(RKG) , intent(inout) , contiguous :: data(:)
1180 end subroutine
1181#endif
1182
1183#if RK3_ENABLED
1184 PURE module subroutine setFFTR_RK3(data)
1185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1186 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_RK3
1187#endif
1188 use pm_kind, only: RKG => RK3
1189 real(RKG) , intent(inout) , contiguous :: data(:)
1190 end subroutine
1191#endif
1192
1193#if RK2_ENABLED
1194 PURE module subroutine setFFTR_RK2(data)
1195#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1196 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_RK2
1197#endif
1198 use pm_kind, only: RKG => RK2
1199 real(RKG) , intent(inout) , contiguous :: data(:)
1200 end subroutine
1201#endif
1202
1203#if RK1_ENABLED
1204 PURE module subroutine setFFTR_RK1(data)
1205#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1206 !DEC$ ATTRIBUTES DLLEXPORT :: setFFTR_RK1
1207#endif
1208 use pm_kind, only: RKG => RK1
1209 real(RKG) , intent(inout) , contiguous :: data(:)
1210 end subroutine
1211#endif
1212
1213 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1214
1215 end interface
1216
1217!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1218
1219end module pm_fftnr
Generate and return the Forward Fourier Transform (a.k.a. Fourier Analysis) of a periodic sequence of...
Definition: pm_fftnr.F90:250
Generate and return the Inverse (normalized by 2 / size(data)) Fourier Transform of a periodic sequen...
Definition: pm_fftnr.F90:428
Generate and return the Reverse (unnormalized) Fourier Transform of a periodic sequence of type compl...
Definition: pm_fftnr.F90:611
Return the Forward Fourier Transform of a periodic sequence of type complex or real of arbitrary kind...
Definition: pm_fftnr.F90:783
Return the Inverse (normalized by 2 / size(data)) Fourier Transform of a periodic sequence of type co...
Definition: pm_fftnr.F90:945
Return the Reverse (unnormalized) Fourier Transform of a periodic sequence of type complex or real of...
Definition: pm_fftnr.F90:1107
This module contains procedures and generic interfaces for computing the Discrete Fourier Transform o...
Definition: pm_fftnr.F90:184
character(*, SK), parameter MODULE_NAME
Definition: pm_fftnr.F90:190
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 RKB
The scalar integer constant of intrinsic default kind, representing the Best-precision real kind supp...
Definition: pm_kind.F90:1371
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