ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_mathSum.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
69
70!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
71
73
74 use pm_kind, only: SK, IK
77
78 implicit none
79
80 character(*, SK), parameter :: MODULE_NAME = "@pm_mathSum"
81
82!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83
84 type, abstract :: sum_type
85 end type
86
87!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
88
118 type, extends(sum_type) :: fablocked_type
119 end type
120
121!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122
144#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
145 !DIR$ ATTRIBUTES DLLEXPORT :: fablocked
146#endif
147
148!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
149
181 type, extends(sum_type) :: nablocked_type
182 end type
183
184!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
185
207#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
208 !DIR$ ATTRIBUTES DLLEXPORT :: nablocked
209#endif
210
211!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
212
241 type, extends(sum_type) :: kahanbabu_type
242 end type
243
244!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
245
267#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
268 !DIR$ ATTRIBUTES DLLEXPORT :: kahanbabu
269#endif
270
271!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
272
364
365 ! Default
366
367 interface getSum
368
369 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
370
371#if CK5_ENABLED
372 PURE module function getSumDef_CK5(x) result(sumres)
373#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
374 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_CK5
375#endif
376 use pm_kind, only: TKG => CK5
377 complex(TKG) , intent(in) , contiguous :: x(:)
378 complex(TKG) :: sumres
379 end function
380#endif
381
382#if CK4_ENABLED
383 PURE module function getSumDef_CK4(x) result(sumres)
384#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
385 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_CK4
386#endif
387 use pm_kind, only: TKG => CK4
388 complex(TKG) , intent(in) , contiguous :: x(:)
389 complex(TKG) :: sumres
390 end function
391#endif
392
393#if CK3_ENABLED
394 PURE module function getSumDef_CK3(x) result(sumres)
395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
396 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_CK3
397#endif
398 use pm_kind, only: TKG => CK3
399 complex(TKG) , intent(in) , contiguous :: x(:)
400 complex(TKG) :: sumres
401 end function
402#endif
403
404#if CK2_ENABLED
405 PURE module function getSumDef_CK2(x) result(sumres)
406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
407 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_CK2
408#endif
409 use pm_kind, only: TKG => CK2
410 complex(TKG) , intent(in) , contiguous :: x(:)
411 complex(TKG) :: sumres
412 end function
413#endif
414
415#if CK1_ENABLED
416 PURE module function getSumDef_CK1(x) result(sumres)
417#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
418 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_CK1
419#endif
420 use pm_kind, only: TKG => CK1
421 complex(TKG) , intent(in) , contiguous :: x(:)
422 complex(TKG) :: sumres
423 end function
424#endif
425
426 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
427
428#if RK5_ENABLED
429 PURE module function getSumDef_RK5(x) result(sumres)
430#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
431 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_RK5
432#endif
433 use pm_kind, only: TKG => RK5
434 real(TKG) , intent(in) , contiguous :: x(:)
435 real(TKG) :: sumres
436 end function
437#endif
438
439#if RK4_ENABLED
440 PURE module function getSumDef_RK4(x) result(sumres)
441#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
442 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_RK4
443#endif
444 use pm_kind, only: TKG => RK4
445 real(TKG) , intent(in) , contiguous :: x(:)
446 real(TKG) :: sumres
447 end function
448#endif
449
450#if RK3_ENABLED
451 PURE module function getSumDef_RK3(x) result(sumres)
452#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
453 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_RK3
454#endif
455 use pm_kind, only: TKG => RK3
456 real(TKG) , intent(in) , contiguous :: x(:)
457 real(TKG) :: sumres
458 end function
459#endif
460
461#if RK2_ENABLED
462 PURE module function getSumDef_RK2(x) result(sumres)
463#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
464 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_RK2
465#endif
466 use pm_kind, only: TKG => RK2
467 real(TKG) , intent(in) , contiguous :: x(:)
468 real(TKG) :: sumres
469 end function
470#endif
471
472#if RK1_ENABLED
473 PURE module function getSumDef_RK1(x) result(sumres)
474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
475 !DEC$ ATTRIBUTES DLLEXPORT :: getSumDef_RK1
476#endif
477 use pm_kind, only: TKG => RK1
478 real(TKG) , intent(in) , contiguous :: x(:)
479 real(TKG) :: sumres
480 end function
481#endif
482
483 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
484
485 end interface
486
487 ! Iteration
488
489 interface getSum
490
491 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
492
493#if CK5_ENABLED
494 PURE module function getSumIte_CK5(x, method) result(sumres)
495#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
496 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_CK5
497#endif
498 use pm_kind, only: TKG => CK5
499 complex(TKG) , intent(in) , contiguous :: x(:)
500 complex(TKG) :: sumres
501 type(iteration_type), intent(in) :: method
502 end function
503#endif
504
505#if CK4_ENABLED
506 PURE module function getSumIte_CK4(x, method) result(sumres)
507#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
508 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_CK4
509#endif
510 use pm_kind, only: TKG => CK4
511 complex(TKG) , intent(in) , contiguous :: x(:)
512 complex(TKG) :: sumres
513 type(iteration_type), intent(in) :: method
514 end function
515#endif
516
517#if CK3_ENABLED
518 PURE module function getSumIte_CK3(x, method) result(sumres)
519#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
520 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_CK3
521#endif
522 use pm_kind, only: TKG => CK3
523 complex(TKG) , intent(in) , contiguous :: x(:)
524 complex(TKG) :: sumres
525 type(iteration_type), intent(in) :: method
526 end function
527#endif
528
529#if CK2_ENABLED
530 PURE module function getSumIte_CK2(x, method) result(sumres)
531#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
532 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_CK2
533#endif
534 use pm_kind, only: TKG => CK2
535 complex(TKG) , intent(in) , contiguous :: x(:)
536 complex(TKG) :: sumres
537 type(iteration_type), intent(in) :: method
538 end function
539#endif
540
541#if CK1_ENABLED
542 PURE module function getSumIte_CK1(x, method) result(sumres)
543#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
544 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_CK1
545#endif
546 use pm_kind, only: TKG => CK1
547 complex(TKG) , intent(in) , contiguous :: x(:)
548 complex(TKG) :: sumres
549 type(iteration_type), intent(in) :: method
550 end function
551#endif
552
553 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
554
555#if RK5_ENABLED
556 PURE module function getSumIte_RK5(x, method) result(sumres)
557#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
558 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_RK5
559#endif
560 use pm_kind, only: TKG => RK5
561 real(TKG) , intent(in) , contiguous :: x(:)
562 real(TKG) :: sumres
563 type(iteration_type), intent(in) :: method
564 end function
565#endif
566
567#if RK4_ENABLED
568 PURE module function getSumIte_RK4(x, method) result(sumres)
569#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
570 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_RK4
571#endif
572 use pm_kind, only: TKG => RK4
573 real(TKG) , intent(in) , contiguous :: x(:)
574 real(TKG) :: sumres
575 type(iteration_type), intent(in) :: method
576 end function
577#endif
578
579#if RK3_ENABLED
580 PURE module function getSumIte_RK3(x, method) result(sumres)
581#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
582 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_RK3
583#endif
584 use pm_kind, only: TKG => RK3
585 real(TKG) , intent(in) , contiguous :: x(:)
586 real(TKG) :: sumres
587 type(iteration_type), intent(in) :: method
588 end function
589#endif
590
591#if RK2_ENABLED
592 PURE module function getSumIte_RK2(x, method) result(sumres)
593#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
594 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_RK2
595#endif
596 use pm_kind, only: TKG => RK2
597 real(TKG) , intent(in) , contiguous :: x(:)
598 real(TKG) :: sumres
599 type(iteration_type), intent(in) :: method
600 end function
601#endif
602
603#if RK1_ENABLED
604 PURE module function getSumIte_RK1(x, method) result(sumres)
605#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
606 !DEC$ ATTRIBUTES DLLEXPORT :: getSumIte_RK1
607#endif
608 use pm_kind, only: TKG => RK1
609 real(TKG) , intent(in) , contiguous :: x(:)
610 real(TKG) :: sumres
611 type(iteration_type), intent(in) :: method
612 end function
613#endif
614
615 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
616
617 end interface
618
619 ! Recursion
620
621 interface getSum
622
623 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
624
625#if CK5_ENABLED
626 PURE recursive module function getSumRec_CK5(x, method) result(sumres)
627#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
628 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_CK5
629#endif
630 use pm_kind, only: TKG => CK5
631 complex(TKG) , intent(in) , contiguous :: x(:)
632 complex(TKG) :: sumres
633 type(recursion_type), intent(in) :: method
634 end function
635#endif
636
637#if CK4_ENABLED
638 PURE recursive module function getSumRec_CK4(x, method) result(sumres)
639#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
640 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_CK4
641#endif
642 use pm_kind, only: TKG => CK4
643 complex(TKG) , intent(in) , contiguous :: x(:)
644 complex(TKG) :: sumres
645 type(recursion_type), intent(in) :: method
646 end function
647#endif
648
649#if CK3_ENABLED
650 PURE recursive module function getSumRec_CK3(x, method) result(sumres)
651#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
652 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_CK3
653#endif
654 use pm_kind, only: TKG => CK3
655 complex(TKG) , intent(in) , contiguous :: x(:)
656 complex(TKG) :: sumres
657 type(recursion_type), intent(in) :: method
658 end function
659#endif
660
661#if CK2_ENABLED
662 PURE recursive module function getSumRec_CK2(x, method) result(sumres)
663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
664 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_CK2
665#endif
666 use pm_kind, only: TKG => CK2
667 complex(TKG) , intent(in) , contiguous :: x(:)
668 complex(TKG) :: sumres
669 type(recursion_type), intent(in) :: method
670 end function
671#endif
672
673#if CK1_ENABLED
674 PURE recursive module function getSumRec_CK1(x, method) result(sumres)
675#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
676 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_CK1
677#endif
678 use pm_kind, only: TKG => CK1
679 complex(TKG) , intent(in) , contiguous :: x(:)
680 complex(TKG) :: sumres
681 type(recursion_type), intent(in) :: method
682 end function
683#endif
684
685 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
686
687#if RK5_ENABLED
688 PURE recursive module function getSumRec_RK5(x, method) result(sumres)
689#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
690 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_RK5
691#endif
692 use pm_kind, only: TKG => RK5
693 real(TKG) , intent(in) , contiguous :: x(:)
694 real(TKG) :: sumres
695 type(recursion_type), intent(in) :: method
696 end function
697#endif
698
699#if RK4_ENABLED
700 PURE recursive module function getSumRec_RK4(x, method) result(sumres)
701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
702 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_RK4
703#endif
704 use pm_kind, only: TKG => RK4
705 real(TKG) , intent(in) , contiguous :: x(:)
706 real(TKG) :: sumres
707 type(recursion_type), intent(in) :: method
708 end function
709#endif
710
711#if RK3_ENABLED
712 PURE recursive module function getSumRec_RK3(x, method) result(sumres)
713#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
714 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_RK3
715#endif
716 use pm_kind, only: TKG => RK3
717 real(TKG) , intent(in) , contiguous :: x(:)
718 real(TKG) :: sumres
719 type(recursion_type), intent(in) :: method
720 end function
721#endif
722
723#if RK2_ENABLED
724 PURE recursive module function getSumRec_RK2(x, method) result(sumres)
725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
726 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_RK2
727#endif
728 use pm_kind, only: TKG => RK2
729 real(TKG) , intent(in) , contiguous :: x(:)
730 real(TKG) :: sumres
731 type(recursion_type), intent(in) :: method
732 end function
733#endif
734
735#if RK1_ENABLED
736 PURE recursive module function getSumRec_RK1(x, method) result(sumres)
737#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
738 !DEC$ ATTRIBUTES DLLEXPORT :: getSumRec_RK1
739#endif
740 use pm_kind, only: TKG => RK1
741 real(TKG) , intent(in) , contiguous :: x(:)
742 real(TKG) :: sumres
743 type(recursion_type), intent(in) :: method
744 end function
745#endif
746
747 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
748
749 end interface
750
751 ! fablocked
752
753 interface getSum
754
755 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
756
757#if CK5_ENABLED
758 PURE module function getSumFAB_CK5(x, method) result(sumres)
759#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
760 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_CK5
761#endif
762 use pm_kind, only: TKG => CK5
763 complex(TKG) , intent(in) , contiguous :: x(:)
764 complex(TKG) :: sumres
765 type(fablocked_type), intent(in) :: method
766 end function
767#endif
768
769#if CK4_ENABLED
770 PURE module function getSumFAB_CK4(x, method) result(sumres)
771#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
772 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_CK4
773#endif
774 use pm_kind, only: TKG => CK4
775 complex(TKG) , intent(in) , contiguous :: x(:)
776 complex(TKG) :: sumres
777 type(fablocked_type), intent(in) :: method
778 end function
779#endif
780
781#if CK3_ENABLED
782 PURE module function getSumFAB_CK3(x, method) result(sumres)
783#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
784 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_CK3
785#endif
786 use pm_kind, only: TKG => CK3
787 complex(TKG) , intent(in) , contiguous :: x(:)
788 complex(TKG) :: sumres
789 type(fablocked_type), intent(in) :: method
790 end function
791#endif
792
793#if CK2_ENABLED
794 PURE module function getSumFAB_CK2(x, method) result(sumres)
795#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
796 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_CK2
797#endif
798 use pm_kind, only: TKG => CK2
799 complex(TKG) , intent(in) , contiguous :: x(:)
800 complex(TKG) :: sumres
801 type(fablocked_type), intent(in) :: method
802 end function
803#endif
804
805#if CK1_ENABLED
806 PURE module function getSumFAB_CK1(x, method) result(sumres)
807#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
808 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_CK1
809#endif
810 use pm_kind, only: TKG => CK1
811 complex(TKG) , intent(in) , contiguous :: x(:)
812 complex(TKG) :: sumres
813 type(fablocked_type), intent(in) :: method
814 end function
815#endif
816
817 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
818
819#if RK5_ENABLED
820 PURE module function getSumFAB_RK5(x, method) result(sumres)
821#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
822 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_RK5
823#endif
824 use pm_kind, only: TKG => RK5
825 real(TKG) , intent(in) , contiguous :: x(:)
826 real(TKG) :: sumres
827 type(fablocked_type), intent(in) :: method
828 end function
829#endif
830
831#if RK4_ENABLED
832 PURE module function getSumFAB_RK4(x, method) result(sumres)
833#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
834 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_RK4
835#endif
836 use pm_kind, only: TKG => RK4
837 real(TKG) , intent(in) , contiguous :: x(:)
838 real(TKG) :: sumres
839 type(fablocked_type), intent(in) :: method
840 end function
841#endif
842
843#if RK3_ENABLED
844 PURE module function getSumFAB_RK3(x, method) result(sumres)
845#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
846 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_RK3
847#endif
848 use pm_kind, only: TKG => RK3
849 real(TKG) , intent(in) , contiguous :: x(:)
850 real(TKG) :: sumres
851 type(fablocked_type), intent(in) :: method
852 end function
853#endif
854
855#if RK2_ENABLED
856 PURE module function getSumFAB_RK2(x, method) result(sumres)
857#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
858 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_RK2
859#endif
860 use pm_kind, only: TKG => RK2
861 real(TKG) , intent(in) , contiguous :: x(:)
862 real(TKG) :: sumres
863 type(fablocked_type), intent(in) :: method
864 end function
865#endif
866
867#if RK1_ENABLED
868 PURE module function getSumFAB_RK1(x, method) result(sumres)
869#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
870 !DEC$ ATTRIBUTES DLLEXPORT :: getSumFAB_RK1
871#endif
872 use pm_kind, only: TKG => RK1
873 real(TKG) , intent(in) , contiguous :: x(:)
874 real(TKG) :: sumres
875 type(fablocked_type), intent(in) :: method
876 end function
877#endif
878
879 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
880
881 end interface
882
883 ! nablocked
884
885 interface getSum
886
887 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
888
889#if CK5_ENABLED
890 PURE module function getSumNAB_CK5(x, method) result(sumres)
891#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
892 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_CK5
893#endif
894 use pm_kind, only: TKG => CK5
895 complex(TKG) , intent(in) , contiguous :: x(:)
896 complex(TKG) :: sumres
897 type(nablocked_type), intent(in) :: method
898 end function
899#endif
900
901#if CK4_ENABLED
902 PURE module function getSumNAB_CK4(x, method) result(sumres)
903#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
904 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_CK4
905#endif
906 use pm_kind, only: TKG => CK4
907 complex(TKG) , intent(in) , contiguous :: x(:)
908 complex(TKG) :: sumres
909 type(nablocked_type), intent(in) :: method
910 end function
911#endif
912
913#if CK3_ENABLED
914 PURE module function getSumNAB_CK3(x, method) result(sumres)
915#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
916 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_CK3
917#endif
918 use pm_kind, only: TKG => CK3
919 complex(TKG) , intent(in) , contiguous :: x(:)
920 complex(TKG) :: sumres
921 type(nablocked_type), intent(in) :: method
922 end function
923#endif
924
925#if CK2_ENABLED
926 PURE module function getSumNAB_CK2(x, method) result(sumres)
927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
928 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_CK2
929#endif
930 use pm_kind, only: TKG => CK2
931 complex(TKG) , intent(in) , contiguous :: x(:)
932 complex(TKG) :: sumres
933 type(nablocked_type), intent(in) :: method
934 end function
935#endif
936
937#if CK1_ENABLED
938 PURE module function getSumNAB_CK1(x, method) result(sumres)
939#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
940 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_CK1
941#endif
942 use pm_kind, only: TKG => CK1
943 complex(TKG) , intent(in) , contiguous :: x(:)
944 complex(TKG) :: sumres
945 type(nablocked_type), intent(in) :: method
946 end function
947#endif
948
949 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
950
951#if RK5_ENABLED
952 PURE module function getSumNAB_RK5(x, method) result(sumres)
953#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
954 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_RK5
955#endif
956 use pm_kind, only: TKG => RK5
957 real(TKG) , intent(in) , contiguous :: x(:)
958 real(TKG) :: sumres
959 type(nablocked_type), intent(in) :: method
960 end function
961#endif
962
963#if RK4_ENABLED
964 PURE module function getSumNAB_RK4(x, method) result(sumres)
965#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
966 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_RK4
967#endif
968 use pm_kind, only: TKG => RK4
969 real(TKG) , intent(in) , contiguous :: x(:)
970 real(TKG) :: sumres
971 type(nablocked_type), intent(in) :: method
972 end function
973#endif
974
975#if RK3_ENABLED
976 PURE module function getSumNAB_RK3(x, method) result(sumres)
977#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
978 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_RK3
979#endif
980 use pm_kind, only: TKG => RK3
981 real(TKG) , intent(in) , contiguous :: x(:)
982 real(TKG) :: sumres
983 type(nablocked_type), intent(in) :: method
984 end function
985#endif
986
987#if RK2_ENABLED
988 PURE module function getSumNAB_RK2(x, method) result(sumres)
989#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
990 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_RK2
991#endif
992 use pm_kind, only: TKG => RK2
993 real(TKG) , intent(in) , contiguous :: x(:)
994 real(TKG) :: sumres
995 type(nablocked_type), intent(in) :: method
996 end function
997#endif
998
999#if RK1_ENABLED
1000 PURE module function getSumNAB_RK1(x, method) result(sumres)
1001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1002 !DEC$ ATTRIBUTES DLLEXPORT :: getSumNAB_RK1
1003#endif
1004 use pm_kind, only: TKG => RK1
1005 real(TKG) , intent(in) , contiguous :: x(:)
1006 real(TKG) :: sumres
1007 type(nablocked_type), intent(in) :: method
1008 end function
1009#endif
1010
1011 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1012
1013 end interface
1014
1015 ! kahanbabu
1016
1017 interface getSum
1018
1019 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1020
1021#if CK5_ENABLED
1022 PURE module function getSumKAB_CK5(x, method) result(sumres)
1023#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1024 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_CK5
1025#endif
1026 use pm_kind, only: TKG => CK5
1027 complex(TKG) , intent(in) , contiguous :: x(:)
1028 complex(TKG) :: sumres
1029 type(kahanbabu_type), intent(in) :: method
1030 end function
1031#endif
1032
1033#if CK4_ENABLED
1034 PURE module function getSumKAB_CK4(x, method) result(sumres)
1035#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1036 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_CK4
1037#endif
1038 use pm_kind, only: TKG => CK4
1039 complex(TKG) , intent(in) , contiguous :: x(:)
1040 complex(TKG) :: sumres
1041 type(kahanbabu_type), intent(in) :: method
1042 end function
1043#endif
1044
1045#if CK3_ENABLED
1046 PURE module function getSumKAB_CK3(x, method) result(sumres)
1047#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1048 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_CK3
1049#endif
1050 use pm_kind, only: TKG => CK3
1051 complex(TKG) , intent(in) , contiguous :: x(:)
1052 complex(TKG) :: sumres
1053 type(kahanbabu_type), intent(in) :: method
1054 end function
1055#endif
1056
1057#if CK2_ENABLED
1058 PURE module function getSumKAB_CK2(x, method) result(sumres)
1059#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1060 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_CK2
1061#endif
1062 use pm_kind, only: TKG => CK2
1063 complex(TKG) , intent(in) , contiguous :: x(:)
1064 complex(TKG) :: sumres
1065 type(kahanbabu_type), intent(in) :: method
1066 end function
1067#endif
1068
1069#if CK1_ENABLED
1070 PURE module function getSumKAB_CK1(x, method) result(sumres)
1071#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1072 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_CK1
1073#endif
1074 use pm_kind, only: TKG => CK1
1075 complex(TKG) , intent(in) , contiguous :: x(:)
1076 complex(TKG) :: sumres
1077 type(kahanbabu_type), intent(in) :: method
1078 end function
1079#endif
1080
1081 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1082
1083#if RK5_ENABLED
1084 PURE module function getSumKAB_RK5(x, method) result(sumres)
1085#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1086 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_RK5
1087#endif
1088 use pm_kind, only: TKG => RK5
1089 real(TKG) , intent(in) , contiguous :: x(:)
1090 real(TKG) :: sumres
1091 type(kahanbabu_type), intent(in) :: method
1092 end function
1093#endif
1094
1095#if RK4_ENABLED
1096 PURE module function getSumKAB_RK4(x, method) result(sumres)
1097#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1098 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_RK4
1099#endif
1100 use pm_kind, only: TKG => RK4
1101 real(TKG) , intent(in) , contiguous :: x(:)
1102 real(TKG) :: sumres
1103 type(kahanbabu_type), intent(in) :: method
1104 end function
1105#endif
1106
1107#if RK3_ENABLED
1108 PURE module function getSumKAB_RK3(x, method) result(sumres)
1109#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1110 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_RK3
1111#endif
1112 use pm_kind, only: TKG => RK3
1113 real(TKG) , intent(in) , contiguous :: x(:)
1114 real(TKG) :: sumres
1115 type(kahanbabu_type), intent(in) :: method
1116 end function
1117#endif
1118
1119#if RK2_ENABLED
1120 PURE module function getSumKAB_RK2(x, method) result(sumres)
1121#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1122 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_RK2
1123#endif
1124 use pm_kind, only: TKG => RK2
1125 real(TKG) , intent(in) , contiguous :: x(:)
1126 real(TKG) :: sumres
1127 type(kahanbabu_type), intent(in) :: method
1128 end function
1129#endif
1130
1131#if RK1_ENABLED
1132 PURE module function getSumKAB_RK1(x, method) result(sumres)
1133#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1134 !DEC$ ATTRIBUTES DLLEXPORT :: getSumKAB_RK1
1135#endif
1136 use pm_kind, only: TKG => RK1
1137 real(TKG) , intent(in) , contiguous :: x(:)
1138 real(TKG) :: sumres
1139 type(kahanbabu_type), intent(in) :: method
1140 end function
1141#endif
1142
1143 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1144
1145 end interface
1146
1147!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1148
1244
1245 ! Default
1246
1247 interface getDot
1248
1249 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1250
1251#if CK5_ENABLED
1252 PURE module function getDotDef_CK5(x, y) result(dotres)
1253#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1254 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_CK5
1255#endif
1256 use pm_kind, only: TKG => CK5
1257 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1258 complex(TKG) :: dotres
1259 end function
1260#endif
1261
1262#if CK4_ENABLED
1263 PURE module function getDotDef_CK4(x, y) result(dotres)
1264#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1265 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_CK4
1266#endif
1267 use pm_kind, only: TKG => CK4
1268 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1269 complex(TKG) :: dotres
1270 end function
1271#endif
1272
1273#if CK3_ENABLED
1274 PURE module function getDotDef_CK3(x, y) result(dotres)
1275#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1276 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_CK3
1277#endif
1278 use pm_kind, only: TKG => CK3
1279 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1280 complex(TKG) :: dotres
1281 end function
1282#endif
1283
1284#if CK2_ENABLED
1285 PURE module function getDotDef_CK2(x, y) result(dotres)
1286#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1287 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_CK2
1288#endif
1289 use pm_kind, only: TKG => CK2
1290 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1291 complex(TKG) :: dotres
1292 end function
1293#endif
1294
1295#if CK1_ENABLED
1296 PURE module function getDotDef_CK1(x, y) result(dotres)
1297#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1298 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_CK1
1299#endif
1300 use pm_kind, only: TKG => CK1
1301 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1302 complex(TKG) :: dotres
1303 end function
1304#endif
1305
1306 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1307
1308#if RK5_ENABLED
1309 PURE module function getDotDef_RK5(x, y) result(dotres)
1310#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1311 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_RK5
1312#endif
1313 use pm_kind, only: TKG => RK5
1314 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1315 real(TKG) :: dotres
1316 end function
1317#endif
1318
1319#if RK4_ENABLED
1320 PURE module function getDotDef_RK4(x, y) result(dotres)
1321#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1322 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_RK4
1323#endif
1324 use pm_kind, only: TKG => RK4
1325 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1326 real(TKG) :: dotres
1327 end function
1328#endif
1329
1330#if RK3_ENABLED
1331 PURE module function getDotDef_RK3(x, y) result(dotres)
1332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1333 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_RK3
1334#endif
1335 use pm_kind, only: TKG => RK3
1336 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1337 real(TKG) :: dotres
1338 end function
1339#endif
1340
1341#if RK2_ENABLED
1342 PURE module function getDotDef_RK2(x, y) result(dotres)
1343#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1344 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_RK2
1345#endif
1346 use pm_kind, only: TKG => RK2
1347 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1348 real(TKG) :: dotres
1349 end function
1350#endif
1351
1352#if RK1_ENABLED
1353 PURE module function getDotDef_RK1(x, y) result(dotres)
1354#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1355 !DEC$ ATTRIBUTES DLLEXPORT :: getDotDef_RK1
1356#endif
1357 use pm_kind, only: TKG => RK1
1358 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1359 real(TKG) :: dotres
1360 end function
1361#endif
1362
1363 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1364
1365 end interface
1366
1367 ! Iteration
1368
1369 interface getDot
1370
1371 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1372
1373#if CK5_ENABLED
1374 PURE module function getDotIte_CK5(x, y, method) result(dotres)
1375#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1376 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_CK5
1377#endif
1378 use pm_kind, only: TKG => CK5
1379 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1380 complex(TKG) :: dotres
1381 type(iteration_type), intent(in) :: method
1382 end function
1383#endif
1384
1385#if CK4_ENABLED
1386 PURE module function getDotIte_CK4(x, y, method) result(dotres)
1387#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1388 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_CK4
1389#endif
1390 use pm_kind, only: TKG => CK4
1391 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1392 complex(TKG) :: dotres
1393 type(iteration_type), intent(in) :: method
1394 end function
1395#endif
1396
1397#if CK3_ENABLED
1398 PURE module function getDotIte_CK3(x, y, method) result(dotres)
1399#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1400 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_CK3
1401#endif
1402 use pm_kind, only: TKG => CK3
1403 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1404 complex(TKG) :: dotres
1405 type(iteration_type), intent(in) :: method
1406 end function
1407#endif
1408
1409#if CK2_ENABLED
1410 PURE module function getDotIte_CK2(x, y, method) result(dotres)
1411#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1412 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_CK2
1413#endif
1414 use pm_kind, only: TKG => CK2
1415 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1416 complex(TKG) :: dotres
1417 type(iteration_type), intent(in) :: method
1418 end function
1419#endif
1420
1421#if CK1_ENABLED
1422 PURE module function getDotIte_CK1(x, y, method) result(dotres)
1423#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1424 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_CK1
1425#endif
1426 use pm_kind, only: TKG => CK1
1427 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1428 complex(TKG) :: dotres
1429 type(iteration_type), intent(in) :: method
1430 end function
1431#endif
1432
1433 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1434
1435#if RK5_ENABLED
1436 PURE module function getDotIte_RK5(x, y, method) result(dotres)
1437#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1438 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_RK5
1439#endif
1440 use pm_kind, only: TKG => RK5
1441 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1442 real(TKG) :: dotres
1443 type(iteration_type), intent(in) :: method
1444 end function
1445#endif
1446
1447#if RK4_ENABLED
1448 PURE module function getDotIte_RK4(x, y, method) result(dotres)
1449#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1450 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_RK4
1451#endif
1452 use pm_kind, only: TKG => RK4
1453 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1454 real(TKG) :: dotres
1455 type(iteration_type), intent(in) :: method
1456 end function
1457#endif
1458
1459#if RK3_ENABLED
1460 PURE module function getDotIte_RK3(x, y, method) result(dotres)
1461#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1462 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_RK3
1463#endif
1464 use pm_kind, only: TKG => RK3
1465 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1466 real(TKG) :: dotres
1467 type(iteration_type), intent(in) :: method
1468 end function
1469#endif
1470
1471#if RK2_ENABLED
1472 PURE module function getDotIte_RK2(x, y, method) result(dotres)
1473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1474 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_RK2
1475#endif
1476 use pm_kind, only: TKG => RK2
1477 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1478 real(TKG) :: dotres
1479 type(iteration_type), intent(in) :: method
1480 end function
1481#endif
1482
1483#if RK1_ENABLED
1484 PURE module function getDotIte_RK1(x, y, method) result(dotres)
1485#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1486 !DEC$ ATTRIBUTES DLLEXPORT :: getDotIte_RK1
1487#endif
1488 use pm_kind, only: TKG => RK1
1489 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1490 real(TKG) :: dotres
1491 type(iteration_type), intent(in) :: method
1492 end function
1493#endif
1494
1495 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1496
1497 end interface
1498
1499 ! Recursion
1500
1501 interface getDot
1502
1503 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1504
1505#if CK5_ENABLED
1506 PURE recursive module function getDotRec_CK5(x, y, method) result(dotres)
1507#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1508 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_CK5
1509#endif
1510 use pm_kind, only: TKG => CK5
1511 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1512 complex(TKG) :: dotres
1513 type(recursion_type), intent(in) :: method
1514 end function
1515#endif
1516
1517#if CK4_ENABLED
1518 PURE recursive module function getDotRec_CK4(x, y, method) result(dotres)
1519#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1520 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_CK4
1521#endif
1522 use pm_kind, only: TKG => CK4
1523 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1524 complex(TKG) :: dotres
1525 type(recursion_type), intent(in) :: method
1526 end function
1527#endif
1528
1529#if CK3_ENABLED
1530 PURE recursive module function getDotRec_CK3(x, y, method) result(dotres)
1531#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1532 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_CK3
1533#endif
1534 use pm_kind, only: TKG => CK3
1535 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1536 complex(TKG) :: dotres
1537 type(recursion_type), intent(in) :: method
1538 end function
1539#endif
1540
1541#if CK2_ENABLED
1542 PURE recursive module function getDotRec_CK2(x, y, method) result(dotres)
1543#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1544 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_CK2
1545#endif
1546 use pm_kind, only: TKG => CK2
1547 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1548 complex(TKG) :: dotres
1549 type(recursion_type), intent(in) :: method
1550 end function
1551#endif
1552
1553#if CK1_ENABLED
1554 PURE recursive module function getDotRec_CK1(x, y, method) result(dotres)
1555#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1556 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_CK1
1557#endif
1558 use pm_kind, only: TKG => CK1
1559 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1560 complex(TKG) :: dotres
1561 type(recursion_type), intent(in) :: method
1562 end function
1563#endif
1564
1565 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1566
1567#if RK5_ENABLED
1568 PURE recursive module function getDotRec_RK5(x, y, method) result(dotres)
1569#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1570 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_RK5
1571#endif
1572 use pm_kind, only: TKG => RK5
1573 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1574 real(TKG) :: dotres
1575 type(recursion_type), intent(in) :: method
1576 end function
1577#endif
1578
1579#if RK4_ENABLED
1580 PURE recursive module function getDotRec_RK4(x, y, method) result(dotres)
1581#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1582 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_RK4
1583#endif
1584 use pm_kind, only: TKG => RK4
1585 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1586 real(TKG) :: dotres
1587 type(recursion_type), intent(in) :: method
1588 end function
1589#endif
1590
1591#if RK3_ENABLED
1592 PURE recursive module function getDotRec_RK3(x, y, method) result(dotres)
1593#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1594 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_RK3
1595#endif
1596 use pm_kind, only: TKG => RK3
1597 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1598 real(TKG) :: dotres
1599 type(recursion_type), intent(in) :: method
1600 end function
1601#endif
1602
1603#if RK2_ENABLED
1604 PURE recursive module function getDotRec_RK2(x, y, method) result(dotres)
1605#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1606 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_RK2
1607#endif
1608 use pm_kind, only: TKG => RK2
1609 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1610 real(TKG) :: dotres
1611 type(recursion_type), intent(in) :: method
1612 end function
1613#endif
1614
1615#if RK1_ENABLED
1616 PURE recursive module function getDotRec_RK1(x, y, method) result(dotres)
1617#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1618 !DEC$ ATTRIBUTES DLLEXPORT :: getDotRec_RK1
1619#endif
1620 use pm_kind, only: TKG => RK1
1621 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1622 real(TKG) :: dotres
1623 type(recursion_type), intent(in) :: method
1624 end function
1625#endif
1626
1627 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1628
1629 end interface
1630
1631 ! fablocked
1632
1633 interface getDot
1634
1635 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1636
1637#if CK5_ENABLED
1638 PURE module function getDotFAB_CK5(x, y, method) result(dotres)
1639#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1640 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_CK5
1641#endif
1642 use pm_kind, only: TKG => CK5
1643 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1644 complex(TKG) :: dotres
1645 type(fablocked_type), intent(in) :: method
1646 end function
1647#endif
1648
1649#if CK4_ENABLED
1650 PURE module function getDotFAB_CK4(x, y, method) result(dotres)
1651#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1652 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_CK4
1653#endif
1654 use pm_kind, only: TKG => CK4
1655 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1656 complex(TKG) :: dotres
1657 type(fablocked_type), intent(in) :: method
1658 end function
1659#endif
1660
1661#if CK3_ENABLED
1662 PURE module function getDotFAB_CK3(x, y, method) result(dotres)
1663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1664 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_CK3
1665#endif
1666 use pm_kind, only: TKG => CK3
1667 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1668 complex(TKG) :: dotres
1669 type(fablocked_type), intent(in) :: method
1670 end function
1671#endif
1672
1673#if CK2_ENABLED
1674 PURE module function getDotFAB_CK2(x, y, method) result(dotres)
1675#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1676 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_CK2
1677#endif
1678 use pm_kind, only: TKG => CK2
1679 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1680 complex(TKG) :: dotres
1681 type(fablocked_type), intent(in) :: method
1682 end function
1683#endif
1684
1685#if CK1_ENABLED
1686 PURE module function getDotFAB_CK1(x, y, method) result(dotres)
1687#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1688 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_CK1
1689#endif
1690 use pm_kind, only: TKG => CK1
1691 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1692 complex(TKG) :: dotres
1693 type(fablocked_type), intent(in) :: method
1694 end function
1695#endif
1696
1697 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1698
1699#if RK5_ENABLED
1700 PURE module function getDotFAB_RK5(x, y, method) result(dotres)
1701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1702 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_RK5
1703#endif
1704 use pm_kind, only: TKG => RK5
1705 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1706 real(TKG) :: dotres
1707 type(fablocked_type), intent(in) :: method
1708 end function
1709#endif
1710
1711#if RK4_ENABLED
1712 PURE module function getDotFAB_RK4(x, y, method) result(dotres)
1713#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1714 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_RK4
1715#endif
1716 use pm_kind, only: TKG => RK4
1717 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1718 real(TKG) :: dotres
1719 type(fablocked_type), intent(in) :: method
1720 end function
1721#endif
1722
1723#if RK3_ENABLED
1724 PURE module function getDotFAB_RK3(x, y, method) result(dotres)
1725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1726 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_RK3
1727#endif
1728 use pm_kind, only: TKG => RK3
1729 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1730 real(TKG) :: dotres
1731 type(fablocked_type), intent(in) :: method
1732 end function
1733#endif
1734
1735#if RK2_ENABLED
1736 PURE module function getDotFAB_RK2(x, y, method) result(dotres)
1737#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1738 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_RK2
1739#endif
1740 use pm_kind, only: TKG => RK2
1741 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1742 real(TKG) :: dotres
1743 type(fablocked_type), intent(in) :: method
1744 end function
1745#endif
1746
1747#if RK1_ENABLED
1748 PURE module function getDotFAB_RK1(x, y, method) result(dotres)
1749#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1750 !DEC$ ATTRIBUTES DLLEXPORT :: getDotFAB_RK1
1751#endif
1752 use pm_kind, only: TKG => RK1
1753 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1754 real(TKG) :: dotres
1755 type(fablocked_type), intent(in) :: method
1756 end function
1757#endif
1758
1759 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1760
1761 end interface
1762
1763 ! nablocked
1764
1765 interface getDot
1766
1767 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1768
1769#if CK5_ENABLED
1770 PURE module function getDotNAB_CK5(x, y, method) result(dotres)
1771#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1772 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_CK5
1773#endif
1774 use pm_kind, only: TKG => CK5
1775 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1776 complex(TKG) :: dotres
1777 type(nablocked_type), intent(in) :: method
1778 end function
1779#endif
1780
1781#if CK4_ENABLED
1782 PURE module function getDotNAB_CK4(x, y, method) result(dotres)
1783#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1784 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_CK4
1785#endif
1786 use pm_kind, only: TKG => CK4
1787 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1788 complex(TKG) :: dotres
1789 type(nablocked_type), intent(in) :: method
1790 end function
1791#endif
1792
1793#if CK3_ENABLED
1794 PURE module function getDotNAB_CK3(x, y, method) result(dotres)
1795#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1796 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_CK3
1797#endif
1798 use pm_kind, only: TKG => CK3
1799 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1800 complex(TKG) :: dotres
1801 type(nablocked_type), intent(in) :: method
1802 end function
1803#endif
1804
1805#if CK2_ENABLED
1806 PURE module function getDotNAB_CK2(x, y, method) result(dotres)
1807#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1808 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_CK2
1809#endif
1810 use pm_kind, only: TKG => CK2
1811 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1812 complex(TKG) :: dotres
1813 type(nablocked_type), intent(in) :: method
1814 end function
1815#endif
1816
1817#if CK1_ENABLED
1818 PURE module function getDotNAB_CK1(x, y, method) result(dotres)
1819#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1820 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_CK1
1821#endif
1822 use pm_kind, only: TKG => CK1
1823 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1824 complex(TKG) :: dotres
1825 type(nablocked_type), intent(in) :: method
1826 end function
1827#endif
1828
1829 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1830
1831#if RK5_ENABLED
1832 PURE module function getDotNAB_RK5(x, y, method) result(dotres)
1833#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1834 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_RK5
1835#endif
1836 use pm_kind, only: TKG => RK5
1837 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1838 real(TKG) :: dotres
1839 type(nablocked_type), intent(in) :: method
1840 end function
1841#endif
1842
1843#if RK4_ENABLED
1844 PURE module function getDotNAB_RK4(x, y, method) result(dotres)
1845#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1846 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_RK4
1847#endif
1848 use pm_kind, only: TKG => RK4
1849 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1850 real(TKG) :: dotres
1851 type(nablocked_type), intent(in) :: method
1852 end function
1853#endif
1854
1855#if RK3_ENABLED
1856 PURE module function getDotNAB_RK3(x, y, method) result(dotres)
1857#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1858 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_RK3
1859#endif
1860 use pm_kind, only: TKG => RK3
1861 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1862 real(TKG) :: dotres
1863 type(nablocked_type), intent(in) :: method
1864 end function
1865#endif
1866
1867#if RK2_ENABLED
1868 PURE module function getDotNAB_RK2(x, y, method) result(dotres)
1869#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1870 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_RK2
1871#endif
1872 use pm_kind, only: TKG => RK2
1873 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1874 real(TKG) :: dotres
1875 type(nablocked_type), intent(in) :: method
1876 end function
1877#endif
1878
1879#if RK1_ENABLED
1880 PURE module function getDotNAB_RK1(x, y, method) result(dotres)
1881#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1882 !DEC$ ATTRIBUTES DLLEXPORT :: getDotNAB_RK1
1883#endif
1884 use pm_kind, only: TKG => RK1
1885 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1886 real(TKG) :: dotres
1887 type(nablocked_type), intent(in) :: method
1888 end function
1889#endif
1890
1891 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1892
1893 end interface
1894
1895 ! kahanbabu
1896
1897 interface getDot
1898
1899 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1900
1901#if CK5_ENABLED
1902 PURE module function getDotKAB_CK5(x, y, method) result(dotres)
1903#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1904 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_CK5
1905#endif
1906 use pm_kind, only: TKG => CK5
1907 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1908 complex(TKG) :: dotres
1909 type(kahanbabu_type), intent(in) :: method
1910 end function
1911#endif
1912
1913#if CK4_ENABLED
1914 PURE module function getDotKAB_CK4(x, y, method) result(dotres)
1915#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1916 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_CK4
1917#endif
1918 use pm_kind, only: TKG => CK4
1919 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1920 complex(TKG) :: dotres
1921 type(kahanbabu_type), intent(in) :: method
1922 end function
1923#endif
1924
1925#if CK3_ENABLED
1926 PURE module function getDotKAB_CK3(x, y, method) result(dotres)
1927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1928 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_CK3
1929#endif
1930 use pm_kind, only: TKG => CK3
1931 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1932 complex(TKG) :: dotres
1933 type(kahanbabu_type), intent(in) :: method
1934 end function
1935#endif
1936
1937#if CK2_ENABLED
1938 PURE module function getDotKAB_CK2(x, y, method) result(dotres)
1939#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1940 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_CK2
1941#endif
1942 use pm_kind, only: TKG => CK2
1943 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1944 complex(TKG) :: dotres
1945 type(kahanbabu_type), intent(in) :: method
1946 end function
1947#endif
1948
1949#if CK1_ENABLED
1950 PURE module function getDotKAB_CK1(x, y, method) result(dotres)
1951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1952 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_CK1
1953#endif
1954 use pm_kind, only: TKG => CK1
1955 complex(TKG) , intent(in) , contiguous :: x(:), y(:)
1956 complex(TKG) :: dotres
1957 type(kahanbabu_type), intent(in) :: method
1958 end function
1959#endif
1960
1961 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1962
1963#if RK5_ENABLED
1964 PURE module function getDotKAB_RK5(x, y, method) result(dotres)
1965#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1966 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_RK5
1967#endif
1968 use pm_kind, only: TKG => RK5
1969 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1970 real(TKG) :: dotres
1971 type(kahanbabu_type), intent(in) :: method
1972 end function
1973#endif
1974
1975#if RK4_ENABLED
1976 PURE module function getDotKAB_RK4(x, y, method) result(dotres)
1977#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1978 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_RK4
1979#endif
1980 use pm_kind, only: TKG => RK4
1981 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1982 real(TKG) :: dotres
1983 type(kahanbabu_type), intent(in) :: method
1984 end function
1985#endif
1986
1987#if RK3_ENABLED
1988 PURE module function getDotKAB_RK3(x, y, method) result(dotres)
1989#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1990 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_RK3
1991#endif
1992 use pm_kind, only: TKG => RK3
1993 real(TKG) , intent(in) , contiguous :: x(:), y(:)
1994 real(TKG) :: dotres
1995 type(kahanbabu_type), intent(in) :: method
1996 end function
1997#endif
1998
1999#if RK2_ENABLED
2000 PURE module function getDotKAB_RK2(x, y, method) result(dotres)
2001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2002 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_RK2
2003#endif
2004 use pm_kind, only: TKG => RK2
2005 real(TKG) , intent(in) , contiguous :: x(:), y(:)
2006 real(TKG) :: dotres
2007 type(kahanbabu_type), intent(in) :: method
2008 end function
2009#endif
2010
2011#if RK1_ENABLED
2012 PURE module function getDotKAB_RK1(x, y, method) result(dotres)
2013#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2014 !DEC$ ATTRIBUTES DLLEXPORT :: getDotKAB_RK1
2015#endif
2016 use pm_kind, only: TKG => RK1
2017 real(TKG) , intent(in) , contiguous :: x(:), y(:)
2018 real(TKG) :: dotres
2019 type(kahanbabu_type), intent(in) :: method
2020 end function
2021#endif
2022
2023 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2024
2025 end interface
2026
2027!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2028
2029end module pm_mathSum ! LCOV_EXCL_LINE
Generate and return the expression dot_product(x, y) accurately (almost without roundoff error).
Generate and return the expression sum(x) accurately (almost without roundoff error).
Definition: pm_mathSum.F90:367
This module contains abstract and concrete derived types that are required for compile-time resolutio...
Definition: pm_control.F90:45
type(iteration_type), parameter iteration
This is a scalar parameter object of type iteration_type that is exclusively used to request looping ...
Definition: pm_control.F90:259
character(*, SK), parameter MODULE_NAME
Definition: pm_control.F90:51
type(recursion_type), parameter recursion
This is a scalar parameter object of type recursion_type that is exclusively used to request recursiv...
Definition: pm_control.F90:198
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 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 procedures and generic interfaces for computing sum(x) accurately when x is a lo...
Definition: pm_mathSum.F90:72
type(kahanbabu_type), parameter kahanbabu
This is a scalar parameter object of type kahanbabu_type.
Definition: pm_mathSum.F90:266
type(fablocked_type), parameter fablocked
This is a scalar parameter object of type fablocked_type.
Definition: pm_mathSum.F90:143
type(nablocked_type), parameter nablocked
This is a scalar parameter object of type nablocked_type.
Definition: pm_mathSum.F90:206
This is a concrete derived type whose instances are exclusively used to request looping procedure int...
Definition: pm_control.F90:234
This is a concrete derived type whose instances are exclusively used to request recursive procedure i...
Definition: pm_control.F90:173
This is a concrete derived type whose instances are exclusively used to request the Fast Accurate Blo...
Definition: pm_mathSum.F90:118
This is a concrete derived type whose instances are exclusively used to request the Kahan-Babuska sum...
Definition: pm_mathSum.F90:241
This is a concrete derived type whose instances are exclusively used to request the Naive Blocked sum...
Definition: pm_mathSum.F90:181