ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_polynomial.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
434
435!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
436
438
439 use pm_kind, only: SK, IK, LK
440
441 implicit none
442
443 character(*, SK), parameter :: MODULE_NAME = "@pm_polynomial"
444
445!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
446
517 interface getPolyVal
518
519 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
520 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
521 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
522
523 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
524
525#if CK5_ENABLED
526 PURE module function getPolyVal_D0_CK5_CK5(coef, x) result(poly)
527#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
528 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_CK5_CK5
529#endif
530 use pm_kind, only: CKG => CK5
531 complex(CKG), intent(in) , contiguous :: coef(0:)
532 complex(CKG), intent(in) :: x
533 complex(CKG) :: poly
534 end function
535#endif
536
537#if CK4_ENABLED
538 PURE module function getPolyVal_D0_CK4_CK4(coef, x) result(poly)
539#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
540 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_CK4_CK4
541#endif
542 use pm_kind, only: CKG => CK4
543 complex(CKG), intent(in) , contiguous :: coef(0:)
544 complex(CKG), intent(in) :: x
545 complex(CKG) :: poly
546 end function
547#endif
548
549#if CK3_ENABLED
550 PURE module function getPolyVal_D0_CK3_CK3(coef, x) result(poly)
551#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
552 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_CK3_CK3
553#endif
554 use pm_kind, only: CKG => CK3
555 complex(CKG), intent(in) , contiguous :: coef(0:)
556 complex(CKG), intent(in) :: x
557 complex(CKG) :: poly
558 end function
559#endif
560
561#if CK2_ENABLED
562 PURE module function getPolyVal_D0_CK2_CK2(coef, x) result(poly)
563#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
564 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_CK2_CK2
565#endif
566 use pm_kind, only: CKG => CK2
567 complex(CKG), intent(in) , contiguous :: coef(0:)
568 complex(CKG), intent(in) :: x
569 complex(CKG) :: poly
570 end function
571#endif
572
573#if CK1_ENABLED
574 PURE module function getPolyVal_D0_CK1_CK1(coef, x) result(poly)
575#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
576 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_CK1_CK1
577#endif
578 use pm_kind, only: CKG => CK1
579 complex(CKG), intent(in) , contiguous :: coef(0:)
580 complex(CKG), intent(in) :: x
581 complex(CKG) :: poly
582 end function
583#endif
584
585 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
586
587#if RK5_ENABLED
588 PURE module function getPolyVal_D0_RK5_CK5(coef, x) result(poly)
589#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
590 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK5_CK5
591#endif
592 use pm_kind, only: RKG => RK5
593 real(RKG) , intent(in) , contiguous :: coef(0:)
594 complex(RKG), intent(in) :: x
595 complex(RKG) :: poly
596 end function
597#endif
598
599#if RK4_ENABLED
600 PURE module function getPolyVal_D0_RK4_CK4(coef, x) result(poly)
601#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
602 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK4_CK4
603#endif
604 use pm_kind, only: RKG => RK4
605 real(RKG) , intent(in) , contiguous :: coef(0:)
606 complex(RKG), intent(in) :: x
607 complex(RKG) :: poly
608 end function
609#endif
610
611#if RK3_ENABLED
612 PURE module function getPolyVal_D0_RK3_CK3(coef, x) result(poly)
613#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
614 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK3_CK3
615#endif
616 use pm_kind, only: RKG => RK3
617 real(RKG) , intent(in) , contiguous :: coef(0:)
618 complex(RKG), intent(in) :: x
619 complex(RKG) :: poly
620 end function
621#endif
622
623#if RK2_ENABLED
624 PURE module function getPolyVal_D0_RK2_CK2(coef, x) result(poly)
625#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
626 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK2_CK2
627#endif
628 use pm_kind, only: RKG => RK2
629 real(RKG) , intent(in) , contiguous :: coef(0:)
630 complex(RKG), intent(in) :: x
631 complex(RKG) :: poly
632 end function
633#endif
634
635#if RK1_ENABLED
636 PURE module function getPolyVal_D0_RK1_CK1(coef, x) result(poly)
637#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
638 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK1_CK1
639#endif
640 use pm_kind, only: RKG => RK1
641 real(RKG) , intent(in) , contiguous :: coef(0:)
642 complex(RKG), intent(in) :: x
643 complex(RKG) :: poly
644 end function
645#endif
646
647 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
648
649#if RK5_ENABLED
650 PURE module function getPolyVal_D0_RK5_RK5(coef, x) result(poly)
651#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
652 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK5_RK5
653#endif
654 use pm_kind, only: RKG => RK5
655 real(RKG) , intent(in) , contiguous :: coef(0:)
656 real(RKG) , intent(in) :: x
657 real(RKG) :: poly
658 end function
659#endif
660
661#if RK4_ENABLED
662 PURE module function getPolyVal_D0_RK4_RK4(coef, x) result(poly)
663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
664 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK4_RK4
665#endif
666 use pm_kind, only: RKG => RK4
667 real(RKG) , intent(in) , contiguous :: coef(0:)
668 real(RKG) , intent(in) :: x
669 real(RKG) :: poly
670 end function
671#endif
672
673#if RK3_ENABLED
674 PURE module function getPolyVal_D0_RK3_RK3(coef, x) result(poly)
675#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
676 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK3_RK3
677#endif
678 use pm_kind, only: RKG => RK3
679 real(RKG) , intent(in) , contiguous :: coef(0:)
680 real(RKG) , intent(in) :: x
681 real(RKG) :: poly
682 end function
683#endif
684
685#if RK2_ENABLED
686 PURE module function getPolyVal_D0_RK2_RK2(coef, x) result(poly)
687#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
688 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK2_RK2
689#endif
690 use pm_kind, only: RKG => RK2
691 real(RKG) , intent(in) , contiguous :: coef(0:)
692 real(RKG) , intent(in) :: x
693 real(RKG) :: poly
694 end function
695#endif
696
697#if RK1_ENABLED
698 PURE module function getPolyVal_D0_RK1_RK1(coef, x) result(poly)
699#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
700 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D0_RK1_RK1
701#endif
702 use pm_kind, only: RKG => RK1
703 real(RKG) , intent(in) , contiguous :: coef(0:)
704 real(RKG) , intent(in) :: x
705 real(RKG) :: poly
706 end function
707#endif
708
709 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
710
711 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
712 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
713 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
714
715 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
716
717#if CK5_ENABLED
718 PURE module function getPolyVal_D1_CK5_CK5(coef, x) result(poly)
719#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
720 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_CK5_CK5
721#endif
722 use pm_kind, only: CKG => CK5
723 complex(CKG), intent(in) , contiguous :: coef(0:)
724 complex(CKG), intent(in) , contiguous :: x(:)
725 complex(CKG) :: poly(size(x, 1, IK))
726 end function
727#endif
728
729#if CK4_ENABLED
730 PURE module function getPolyVal_D1_CK4_CK4(coef, x) result(poly)
731#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
732 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_CK4_CK4
733#endif
734 use pm_kind, only: CKG => CK4
735 complex(CKG), intent(in) , contiguous :: coef(0:)
736 complex(CKG), intent(in) , contiguous :: x(:)
737 complex(CKG) :: poly(size(x, 1, IK))
738 end function
739#endif
740
741#if CK3_ENABLED
742 PURE module function getPolyVal_D1_CK3_CK3(coef, x) result(poly)
743#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
744 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_CK3_CK3
745#endif
746 use pm_kind, only: CKG => CK3
747 complex(CKG), intent(in) , contiguous :: coef(0:)
748 complex(CKG), intent(in) , contiguous :: x(:)
749 complex(CKG) :: poly(size(x, 1, IK))
750 end function
751#endif
752
753#if CK2_ENABLED
754 PURE module function getPolyVal_D1_CK2_CK2(coef, x) result(poly)
755#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
756 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_CK2_CK2
757#endif
758 use pm_kind, only: CKG => CK2
759 complex(CKG), intent(in) , contiguous :: coef(0:)
760 complex(CKG), intent(in) , contiguous :: x(:)
761 complex(CKG) :: poly(size(x, 1, IK))
762 end function
763#endif
764
765#if CK1_ENABLED
766 PURE module function getPolyVal_D1_CK1_CK1(coef, x) result(poly)
767#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
768 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_CK1_CK1
769#endif
770 use pm_kind, only: CKG => CK1
771 complex(CKG), intent(in) , contiguous :: coef(0:)
772 complex(CKG), intent(in) , contiguous :: x(:)
773 complex(CKG) :: poly(size(x, 1, IK))
774 end function
775#endif
776
777 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
778
779#if RK5_ENABLED
780 PURE module function getPolyVal_D1_RK5_CK5(coef, x) result(poly)
781#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
782 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK5_CK5
783#endif
784 use pm_kind, only: RKG => RK5
785 real(RKG) , intent(in) , contiguous :: coef(0:)
786 complex(RKG), intent(in) , contiguous :: x(:)
787 complex(RKG) :: poly(size(x, 1, IK))
788 end function
789#endif
790
791#if RK4_ENABLED
792 PURE module function getPolyVal_D1_RK4_CK4(coef, x) result(poly)
793#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
794 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK4_CK4
795#endif
796 use pm_kind, only: RKG => RK4
797 real(RKG) , intent(in) , contiguous :: coef(0:)
798 complex(RKG), intent(in) , contiguous :: x(:)
799 complex(RKG) :: poly(size(x, 1, IK))
800 end function
801#endif
802
803#if RK3_ENABLED
804 PURE module function getPolyVal_D1_RK3_CK3(coef, x) result(poly)
805#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
806 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK3_CK3
807#endif
808 use pm_kind, only: RKG => RK3
809 real(RKG) , intent(in) , contiguous :: coef(0:)
810 complex(RKG), intent(in) , contiguous :: x(:)
811 complex(RKG) :: poly(size(x, 1, IK))
812 end function
813#endif
814
815#if RK2_ENABLED
816 PURE module function getPolyVal_D1_RK2_CK2(coef, x) result(poly)
817#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
818 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK2_CK2
819#endif
820 use pm_kind, only: RKG => RK2
821 real(RKG) , intent(in) , contiguous :: coef(0:)
822 complex(RKG), intent(in) , contiguous :: x(:)
823 complex(RKG) :: poly(size(x, 1, IK))
824 end function
825#endif
826
827#if RK1_ENABLED
828 PURE module function getPolyVal_D1_RK1_CK1(coef, x) result(poly)
829#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
830 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK1_CK1
831#endif
832 use pm_kind, only: RKG => RK1
833 real(RKG) , intent(in) , contiguous :: coef(0:)
834 complex(RKG), intent(in) , contiguous :: x(:)
835 complex(RKG) :: poly(size(x, 1, IK))
836 end function
837#endif
838
839 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
840
841#if RK5_ENABLED
842 PURE module function getPolyVal_D1_RK5_RK5(coef, x) result(poly)
843#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
844 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK5_RK5
845#endif
846 use pm_kind, only: RKG => RK5
847 real(RKG) , intent(in) , contiguous :: coef(0:)
848 real(RKG) , intent(in) , contiguous :: x(:)
849 real(RKG) :: poly(size(x, 1, IK))
850 end function
851#endif
852
853#if RK4_ENABLED
854 PURE module function getPolyVal_D1_RK4_RK4(coef, x) result(poly)
855#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
856 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK4_RK4
857#endif
858 use pm_kind, only: RKG => RK4
859 real(RKG) , intent(in) , contiguous :: coef(0:)
860 real(RKG) , intent(in) , contiguous :: x(:)
861 real(RKG) :: poly(size(x, 1, IK))
862 end function
863#endif
864
865#if RK3_ENABLED
866 PURE module function getPolyVal_D1_RK3_RK3(coef, x) result(poly)
867#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
868 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK3_RK3
869#endif
870 use pm_kind, only: RKG => RK3
871 real(RKG) , intent(in) , contiguous :: coef(0:)
872 real(RKG) , intent(in) , contiguous :: x(:)
873 real(RKG) :: poly(size(x, 1, IK))
874 end function
875#endif
876
877#if RK2_ENABLED
878 PURE module function getPolyVal_D1_RK2_RK2(coef, x) result(poly)
879#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
880 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK2_RK2
881#endif
882 use pm_kind, only: RKG => RK2
883 real(RKG) , intent(in) , contiguous :: coef(0:)
884 real(RKG) , intent(in) , contiguous :: x(:)
885 real(RKG) :: poly(size(x, 1, IK))
886 end function
887#endif
888
889#if RK1_ENABLED
890 PURE module function getPolyVal_D1_RK1_RK1(coef, x) result(poly)
891#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
892 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyVal_D1_RK1_RK1
893#endif
894 use pm_kind, only: RKG => RK1
895 real(RKG) , intent(in) , contiguous :: coef(0:)
896 real(RKG) , intent(in) , contiguous :: x(:)
897 real(RKG) :: poly(size(x, 1, IK))
898 end function
899#endif
900
901 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
902
903 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
904 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
905 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
906
907 end interface
908
909!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
910
974 interface getPolyAdd
975
976 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
977 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
978 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
979
980 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
981
982#if CK5_ENABLED
983 PURE module function getPolyAdd_CK5(lhs, rhs) result(add)
984#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
985 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_CK5
986#endif
987 use pm_kind, only: CKG => CK5
988 complex(CKG), intent(in) , contiguous :: lhs(:)
989 complex(CKG), intent(in) , contiguous :: rhs(:)
990 complex(CKG) :: add(max(size(lhs), size(rhs)))
991 end function
992#endif
993
994#if CK4_ENABLED
995 PURE module function getPolyAdd_CK4(lhs, rhs) result(add)
996#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
997 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_CK4
998#endif
999 use pm_kind, only: CKG => CK4
1000 complex(CKG), intent(in) , contiguous :: lhs(:)
1001 complex(CKG), intent(in) , contiguous :: rhs(:)
1002 complex(CKG) :: add(max(size(lhs), size(rhs)))
1003 end function
1004#endif
1005
1006#if CK3_ENABLED
1007 PURE module function getPolyAdd_CK3(lhs, rhs) result(add)
1008#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1009 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_CK3
1010#endif
1011 use pm_kind, only: CKG => CK3
1012 complex(CKG), intent(in) , contiguous :: lhs(:)
1013 complex(CKG), intent(in) , contiguous :: rhs(:)
1014 complex(CKG) :: add(max(size(lhs), size(rhs)))
1015 end function
1016#endif
1017
1018#if CK2_ENABLED
1019 PURE module function getPolyAdd_CK2(lhs, rhs) result(add)
1020#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1021 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_CK2
1022#endif
1023 use pm_kind, only: CKG => CK2
1024 complex(CKG), intent(in) , contiguous :: lhs(:)
1025 complex(CKG), intent(in) , contiguous :: rhs(:)
1026 complex(CKG) :: add(max(size(lhs), size(rhs)))
1027 end function
1028#endif
1029
1030#if CK1_ENABLED
1031 PURE module function getPolyAdd_CK1(lhs, rhs) result(add)
1032#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1033 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_CK1
1034#endif
1035 use pm_kind, only: CKG => CK1
1036 complex(CKG), intent(in) , contiguous :: lhs(:)
1037 complex(CKG), intent(in) , contiguous :: rhs(:)
1038 complex(CKG) :: add(max(size(lhs), size(rhs)))
1039 end function
1040#endif
1041
1042 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1043
1044#if RK5_ENABLED
1045 PURE module function getPolyAdd_RK5(lhs, rhs) result(add)
1046#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1047 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_RK5
1048#endif
1049 use pm_kind, only: RKG => RK5
1050 real(RKG) , intent(in) , contiguous :: lhs(:)
1051 real(RKG) , intent(in) , contiguous :: rhs(:)
1052 real(RKG) :: add(max(size(lhs), size(rhs)))
1053 end function
1054#endif
1055
1056#if RK4_ENABLED
1057 PURE module function getPolyAdd_RK4(lhs, rhs) result(add)
1058#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1059 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_RK4
1060#endif
1061 use pm_kind, only: RKG => RK4
1062 real(RKG) , intent(in) , contiguous :: lhs(:)
1063 real(RKG) , intent(in) , contiguous :: rhs(:)
1064 real(RKG) :: add(max(size(lhs), size(rhs)))
1065 end function
1066#endif
1067
1068#if RK3_ENABLED
1069 PURE module function getPolyAdd_RK3(lhs, rhs) result(add)
1070#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1071 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_RK3
1072#endif
1073 use pm_kind, only: RKG => RK3
1074 real(RKG) , intent(in) , contiguous :: lhs(:)
1075 real(RKG) , intent(in) , contiguous :: rhs(:)
1076 real(RKG) :: add(max(size(lhs), size(rhs)))
1077 end function
1078#endif
1079
1080#if RK2_ENABLED
1081 PURE module function getPolyAdd_RK2(lhs, rhs) result(add)
1082#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1083 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_RK2
1084#endif
1085 use pm_kind, only: RKG => RK2
1086 real(RKG) , intent(in) , contiguous :: lhs(:)
1087 real(RKG) , intent(in) , contiguous :: rhs(:)
1088 real(RKG) :: add(max(size(lhs), size(rhs)))
1089 end function
1090#endif
1091
1092#if RK1_ENABLED
1093 PURE module function getPolyAdd_RK1(lhs, rhs) result(add)
1094#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1095 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyAdd_RK1
1096#endif
1097 use pm_kind, only: RKG => RK1
1098 real(RKG) , intent(in) , contiguous :: lhs(:)
1099 real(RKG) , intent(in) , contiguous :: rhs(:)
1100 real(RKG) :: add(max(size(lhs), size(rhs)))
1101 end function
1102#endif
1103
1104 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1105
1106 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1107 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1108 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1109
1110 end interface
1111
1112!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1113
1178 interface setPolyAdd
1179
1180 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1181 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1182 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1183
1184 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1185
1186#if CK5_ENABLED
1187 PURE module subroutine setPolyAdd_CK5(add, lhs, rhs)
1188#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1189 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_CK5
1190#endif
1191 use pm_kind, only: CKG => CK5
1192 complex(CKG), intent(in) , contiguous :: lhs(:)
1193 complex(CKG), intent(in) , contiguous :: rhs(:)
1194 complex(CKG), intent(out) , contiguous :: add(:)
1195 end subroutine
1196#endif
1197
1198#if CK4_ENABLED
1199 PURE module subroutine setPolyAdd_CK4(add, lhs, rhs)
1200#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1201 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_CK4
1202#endif
1203 use pm_kind, only: CKG => CK4
1204 complex(CKG), intent(in) , contiguous :: lhs(:)
1205 complex(CKG), intent(in) , contiguous :: rhs(:)
1206 complex(CKG), intent(out) , contiguous :: add(:)
1207 end subroutine
1208#endif
1209
1210#if CK3_ENABLED
1211 PURE module subroutine setPolyAdd_CK3(add, lhs, rhs)
1212#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1213 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_CK3
1214#endif
1215 use pm_kind, only: CKG => CK3
1216 complex(CKG), intent(in) , contiguous :: lhs(:)
1217 complex(CKG), intent(in) , contiguous :: rhs(:)
1218 complex(CKG), intent(out) , contiguous :: add(:)
1219 end subroutine
1220#endif
1221
1222#if CK2_ENABLED
1223 PURE module subroutine setPolyAdd_CK2(add, lhs, rhs)
1224#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1225 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_CK2
1226#endif
1227 use pm_kind, only: CKG => CK2
1228 complex(CKG), intent(in) , contiguous :: lhs(:)
1229 complex(CKG), intent(in) , contiguous :: rhs(:)
1230 complex(CKG), intent(out) , contiguous :: add(:)
1231 end subroutine
1232#endif
1233
1234#if CK1_ENABLED
1235 PURE module subroutine setPolyAdd_CK1(add, lhs, rhs)
1236#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1237 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_CK1
1238#endif
1239 use pm_kind, only: CKG => CK1
1240 complex(CKG), intent(in) , contiguous :: lhs(:)
1241 complex(CKG), intent(in) , contiguous :: rhs(:)
1242 complex(CKG), intent(out) , contiguous :: add(:)
1243 end subroutine
1244#endif
1245
1246 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1247
1248#if RK5_ENABLED
1249 PURE module subroutine setPolyAdd_RK5(add, lhs, rhs)
1250#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1251 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_RK5
1252#endif
1253 use pm_kind, only: RKG => RK5
1254 real(RKG) , intent(in) , contiguous :: lhs(:)
1255 real(RKG) , intent(in) , contiguous :: rhs(:)
1256 real(RKG) , intent(out) , contiguous :: add(:)
1257 end subroutine
1258#endif
1259
1260#if RK4_ENABLED
1261 PURE module subroutine setPolyAdd_RK4(add, lhs, rhs)
1262#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1263 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_RK4
1264#endif
1265 use pm_kind, only: RKG => RK4
1266 real(RKG) , intent(in) , contiguous :: lhs(:)
1267 real(RKG) , intent(in) , contiguous :: rhs(:)
1268 real(RKG) , intent(out) , contiguous :: add(:)
1269 end subroutine
1270#endif
1271
1272#if RK3_ENABLED
1273 PURE module subroutine setPolyAdd_RK3(add, lhs, rhs)
1274#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1275 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_RK3
1276#endif
1277 use pm_kind, only: RKG => RK3
1278 real(RKG) , intent(in) , contiguous :: lhs(:)
1279 real(RKG) , intent(in) , contiguous :: rhs(:)
1280 real(RKG) , intent(out) , contiguous :: add(:)
1281 end subroutine
1282#endif
1283
1284#if RK2_ENABLED
1285 PURE module subroutine setPolyAdd_RK2(add, lhs, rhs)
1286#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1287 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_RK2
1288#endif
1289 use pm_kind, only: RKG => RK2
1290 real(RKG) , intent(in) , contiguous :: lhs(:)
1291 real(RKG) , intent(in) , contiguous :: rhs(:)
1292 real(RKG) , intent(out) , contiguous :: add(:)
1293 end subroutine
1294#endif
1295
1296#if RK1_ENABLED
1297 PURE module subroutine setPolyAdd_RK1(add, lhs, rhs)
1298#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1299 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyAdd_RK1
1300#endif
1301 use pm_kind, only: RKG => RK1
1302 real(RKG) , intent(in) , contiguous :: lhs(:)
1303 real(RKG) , intent(in) , contiguous :: rhs(:)
1304 real(RKG) , intent(out) , contiguous :: add(:)
1305 end subroutine
1306#endif
1307
1308 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1309
1310 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1311 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1312 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1313
1314 end interface
1315
1316!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1317
1381 interface getPolySub
1382
1383 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1384 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1385 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1386
1387 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1388
1389#if CK5_ENABLED
1390 PURE module function getPolySub_CK5(lhs, rhs) result(sub)
1391#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1392 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_CK5
1393#endif
1394 use pm_kind, only: CKG => CK5
1395 complex(CKG), intent(in) , contiguous :: lhs(:)
1396 complex(CKG), intent(in) , contiguous :: rhs(:)
1397 complex(CKG) :: sub(max(size(lhs), size(rhs)))
1398 end function
1399#endif
1400
1401#if CK4_ENABLED
1402 PURE module function getPolySub_CK4(lhs, rhs) result(sub)
1403#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1404 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_CK4
1405#endif
1406 use pm_kind, only: CKG => CK4
1407 complex(CKG), intent(in) , contiguous :: lhs(:)
1408 complex(CKG), intent(in) , contiguous :: rhs(:)
1409 complex(CKG) :: sub(max(size(lhs), size(rhs)))
1410 end function
1411#endif
1412
1413#if CK3_ENABLED
1414 PURE module function getPolySub_CK3(lhs, rhs) result(sub)
1415#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1416 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_CK3
1417#endif
1418 use pm_kind, only: CKG => CK3
1419 complex(CKG), intent(in) , contiguous :: lhs(:)
1420 complex(CKG), intent(in) , contiguous :: rhs(:)
1421 complex(CKG) :: sub(max(size(lhs), size(rhs)))
1422 end function
1423#endif
1424
1425#if CK2_ENABLED
1426 PURE module function getPolySub_CK2(lhs, rhs) result(sub)
1427#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1428 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_CK2
1429#endif
1430 use pm_kind, only: CKG => CK2
1431 complex(CKG), intent(in) , contiguous :: lhs(:)
1432 complex(CKG), intent(in) , contiguous :: rhs(:)
1433 complex(CKG) :: sub(max(size(lhs), size(rhs)))
1434 end function
1435#endif
1436
1437#if CK1_ENABLED
1438 PURE module function getPolySub_CK1(lhs, rhs) result(sub)
1439#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1440 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_CK1
1441#endif
1442 use pm_kind, only: CKG => CK1
1443 complex(CKG), intent(in) , contiguous :: lhs(:)
1444 complex(CKG), intent(in) , contiguous :: rhs(:)
1445 complex(CKG) :: sub(max(size(lhs), size(rhs)))
1446 end function
1447#endif
1448
1449 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1450
1451#if RK5_ENABLED
1452 PURE module function getPolySub_RK5(lhs, rhs) result(sub)
1453#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1454 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_RK5
1455#endif
1456 use pm_kind, only: RKG => RK5
1457 real(RKG) , intent(in) , contiguous :: lhs(:)
1458 real(RKG) , intent(in) , contiguous :: rhs(:)
1459 real(RKG) :: sub(max(size(lhs), size(rhs)))
1460 end function
1461#endif
1462
1463#if RK4_ENABLED
1464 PURE module function getPolySub_RK4(lhs, rhs) result(sub)
1465#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1466 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_RK4
1467#endif
1468 use pm_kind, only: RKG => RK4
1469 real(RKG) , intent(in) , contiguous :: lhs(:)
1470 real(RKG) , intent(in) , contiguous :: rhs(:)
1471 real(RKG) :: sub(max(size(lhs), size(rhs)))
1472 end function
1473#endif
1474
1475#if RK3_ENABLED
1476 PURE module function getPolySub_RK3(lhs, rhs) result(sub)
1477#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1478 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_RK3
1479#endif
1480 use pm_kind, only: RKG => RK3
1481 real(RKG) , intent(in) , contiguous :: lhs(:)
1482 real(RKG) , intent(in) , contiguous :: rhs(:)
1483 real(RKG) :: sub(max(size(lhs), size(rhs)))
1484 end function
1485#endif
1486
1487#if RK2_ENABLED
1488 PURE module function getPolySub_RK2(lhs, rhs) result(sub)
1489#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1490 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_RK2
1491#endif
1492 use pm_kind, only: RKG => RK2
1493 real(RKG) , intent(in) , contiguous :: lhs(:)
1494 real(RKG) , intent(in) , contiguous :: rhs(:)
1495 real(RKG) :: sub(max(size(lhs), size(rhs)))
1496 end function
1497#endif
1498
1499#if RK1_ENABLED
1500 PURE module function getPolySub_RK1(lhs, rhs) result(sub)
1501#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1502 !DEC$ ATTRIBUTES DLLEXPORT :: getPolySub_RK1
1503#endif
1504 use pm_kind, only: RKG => RK1
1505 real(RKG) , intent(in) , contiguous :: lhs(:)
1506 real(RKG) , intent(in) , contiguous :: rhs(:)
1507 real(RKG) :: sub(max(size(lhs), size(rhs)))
1508 end function
1509#endif
1510
1511 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1512
1513 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1514 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1515 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1516
1517 end interface
1518
1519!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1520
1585 interface setPolySub
1586
1587 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1588 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1589 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1590
1591 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1592
1593#if CK5_ENABLED
1594 PURE module subroutine setPolySub_CK5(sub, lhs, rhs)
1595#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1596 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_CK5
1597#endif
1598 use pm_kind, only: CKG => CK5
1599 complex(CKG), intent(in) , contiguous :: lhs(:)
1600 complex(CKG), intent(in) , contiguous :: rhs(:)
1601 complex(CKG), intent(out) , contiguous :: sub(:)
1602 end subroutine
1603#endif
1604
1605#if CK4_ENABLED
1606 PURE module subroutine setPolySub_CK4(sub, lhs, rhs)
1607#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1608 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_CK4
1609#endif
1610 use pm_kind, only: CKG => CK4
1611 complex(CKG), intent(in) , contiguous :: lhs(:)
1612 complex(CKG), intent(in) , contiguous :: rhs(:)
1613 complex(CKG), intent(out) , contiguous :: sub(:)
1614 end subroutine
1615#endif
1616
1617#if CK3_ENABLED
1618 PURE module subroutine setPolySub_CK3(sub, lhs, rhs)
1619#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1620 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_CK3
1621#endif
1622 use pm_kind, only: CKG => CK3
1623 complex(CKG), intent(in) , contiguous :: lhs(:)
1624 complex(CKG), intent(in) , contiguous :: rhs(:)
1625 complex(CKG), intent(out) , contiguous :: sub(:)
1626 end subroutine
1627#endif
1628
1629#if CK2_ENABLED
1630 PURE module subroutine setPolySub_CK2(sub, lhs, rhs)
1631#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1632 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_CK2
1633#endif
1634 use pm_kind, only: CKG => CK2
1635 complex(CKG), intent(in) , contiguous :: lhs(:)
1636 complex(CKG), intent(in) , contiguous :: rhs(:)
1637 complex(CKG), intent(out) , contiguous :: sub(:)
1638 end subroutine
1639#endif
1640
1641#if CK1_ENABLED
1642 PURE module subroutine setPolySub_CK1(sub, lhs, rhs)
1643#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1644 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_CK1
1645#endif
1646 use pm_kind, only: CKG => CK1
1647 complex(CKG), intent(in) , contiguous :: lhs(:)
1648 complex(CKG), intent(in) , contiguous :: rhs(:)
1649 complex(CKG), intent(out) , contiguous :: sub(:)
1650 end subroutine
1651#endif
1652
1653 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1654
1655#if RK5_ENABLED
1656 PURE module subroutine setPolySub_RK5(sub, lhs, rhs)
1657#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1658 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_RK5
1659#endif
1660 use pm_kind, only: RKG => RK5
1661 real(RKG) , intent(in) , contiguous :: lhs(:)
1662 real(RKG) , intent(in) , contiguous :: rhs(:)
1663 real(RKG) , intent(out) , contiguous :: sub(:)
1664 end subroutine
1665#endif
1666
1667#if RK4_ENABLED
1668 PURE module subroutine setPolySub_RK4(sub, lhs, rhs)
1669#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1670 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_RK4
1671#endif
1672 use pm_kind, only: RKG => RK4
1673 real(RKG) , intent(in) , contiguous :: lhs(:)
1674 real(RKG) , intent(in) , contiguous :: rhs(:)
1675 real(RKG) , intent(out) , contiguous :: sub(:)
1676 end subroutine
1677#endif
1678
1679#if RK3_ENABLED
1680 PURE module subroutine setPolySub_RK3(sub, lhs, rhs)
1681#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1682 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_RK3
1683#endif
1684 use pm_kind, only: RKG => RK3
1685 real(RKG) , intent(in) , contiguous :: lhs(:)
1686 real(RKG) , intent(in) , contiguous :: rhs(:)
1687 real(RKG) , intent(out) , contiguous :: sub(:)
1688 end subroutine
1689#endif
1690
1691#if RK2_ENABLED
1692 PURE module subroutine setPolySub_RK2(sub, lhs, rhs)
1693#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1694 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_RK2
1695#endif
1696 use pm_kind, only: RKG => RK2
1697 real(RKG) , intent(in) , contiguous :: lhs(:)
1698 real(RKG) , intent(in) , contiguous :: rhs(:)
1699 real(RKG) , intent(out) , contiguous :: sub(:)
1700 end subroutine
1701#endif
1702
1703#if RK1_ENABLED
1704 PURE module subroutine setPolySub_RK1(sub, lhs, rhs)
1705#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1706 !DEC$ ATTRIBUTES DLLEXPORT :: setPolySub_RK1
1707#endif
1708 use pm_kind, only: RKG => RK1
1709 real(RKG) , intent(in) , contiguous :: lhs(:)
1710 real(RKG) , intent(in) , contiguous :: rhs(:)
1711 real(RKG) , intent(out) , contiguous :: sub(:)
1712 end subroutine
1713#endif
1714
1715 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1716
1717 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1718 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1719 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1720
1721 end interface
1722
1723!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1724
1792 interface getPolyMul
1793
1794 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1795 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1796 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1797
1798 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1799
1800#if CK5_ENABLED
1801 PURE module function getPolyMul_CK5(lhs, rhs) result(mul)
1802#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1803 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_CK5
1804#endif
1805 use pm_kind, only: CKG => CK5
1806 complex(CKG), intent(in) , contiguous :: lhs(:)
1807 complex(CKG), intent(in) , contiguous :: rhs(:)
1808 complex(CKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1809 end function
1810#endif
1811
1812#if CK4_ENABLED
1813 PURE module function getPolyMul_CK4(lhs, rhs) result(mul)
1814#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1815 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_CK4
1816#endif
1817 use pm_kind, only: CKG => CK4
1818 complex(CKG), intent(in) , contiguous :: lhs(:)
1819 complex(CKG), intent(in) , contiguous :: rhs(:)
1820 complex(CKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1821 end function
1822#endif
1823
1824#if CK3_ENABLED
1825 PURE module function getPolyMul_CK3(lhs, rhs) result(mul)
1826#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1827 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_CK3
1828#endif
1829 use pm_kind, only: CKG => CK3
1830 complex(CKG), intent(in) , contiguous :: lhs(:)
1831 complex(CKG), intent(in) , contiguous :: rhs(:)
1832 complex(CKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1833 end function
1834#endif
1835
1836#if CK2_ENABLED
1837 PURE module function getPolyMul_CK2(lhs, rhs) result(mul)
1838#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1839 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_CK2
1840#endif
1841 use pm_kind, only: CKG => CK2
1842 complex(CKG), intent(in) , contiguous :: lhs(:)
1843 complex(CKG), intent(in) , contiguous :: rhs(:)
1844 complex(CKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1845 end function
1846#endif
1847
1848#if CK1_ENABLED
1849 PURE module function getPolyMul_CK1(lhs, rhs) result(mul)
1850#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1851 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_CK1
1852#endif
1853 use pm_kind, only: CKG => CK1
1854 complex(CKG), intent(in) , contiguous :: lhs(:)
1855 complex(CKG), intent(in) , contiguous :: rhs(:)
1856 complex(CKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1857 end function
1858#endif
1859
1860 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1861
1862#if RK5_ENABLED
1863 PURE module function getPolyMul_RK5(lhs, rhs) result(mul)
1864#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1865 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_RK5
1866#endif
1867 use pm_kind, only: RKG => RK5
1868 real(RKG) , intent(in) , contiguous :: lhs(:)
1869 real(RKG) , intent(in) , contiguous :: rhs(:)
1870 real(RKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1871 end function
1872#endif
1873
1874#if RK4_ENABLED
1875 PURE module function getPolyMul_RK4(lhs, rhs) result(mul)
1876#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1877 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_RK4
1878#endif
1879 use pm_kind, only: RKG => RK4
1880 real(RKG) , intent(in) , contiguous :: lhs(:)
1881 real(RKG) , intent(in) , contiguous :: rhs(:)
1882 real(RKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1883 end function
1884#endif
1885
1886#if RK3_ENABLED
1887 PURE module function getPolyMul_RK3(lhs, rhs) result(mul)
1888#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1889 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_RK3
1890#endif
1891 use pm_kind, only: RKG => RK3
1892 real(RKG) , intent(in) , contiguous :: lhs(:)
1893 real(RKG) , intent(in) , contiguous :: rhs(:)
1894 real(RKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1895 end function
1896#endif
1897
1898#if RK2_ENABLED
1899 PURE module function getPolyMul_RK2(lhs, rhs) result(mul)
1900#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1901 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_RK2
1902#endif
1903 use pm_kind, only: RKG => RK2
1904 real(RKG) , intent(in) , contiguous :: lhs(:)
1905 real(RKG) , intent(in) , contiguous :: rhs(:)
1906 real(RKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1907 end function
1908#endif
1909
1910#if RK1_ENABLED
1911 PURE module function getPolyMul_RK1(lhs, rhs) result(mul)
1912#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1913 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyMul_RK1
1914#endif
1915 use pm_kind, only: RKG => RK1
1916 real(RKG) , intent(in) , contiguous :: lhs(:)
1917 real(RKG) , intent(in) , contiguous :: rhs(:)
1918 real(RKG) :: mul(1 : min(size(lhs, 1, IK) * size(rhs, 1, IK), size(lhs, 1, IK) + size(rhs, 1, IK) - 1_IK))
1919 end function
1920#endif
1921
1922 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1923
1924 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1925 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1926 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1927
1928 end interface
1929
1930!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1931
1996 interface setPolyMul
1997
1998 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1999 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2000 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2001
2002 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2003
2004#if CK5_ENABLED
2005 PURE module subroutine setPolyMul_CK5(mul, lhs, rhs)
2006#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2007 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_CK5
2008#endif
2009 use pm_kind, only: CKG => CK5
2010 complex(CKG), intent(in) , contiguous :: lhs(0:)
2011 complex(CKG), intent(in) , contiguous :: rhs(0:)
2012 complex(CKG), intent(out) , contiguous :: mul(0:)
2013 end subroutine
2014#endif
2015
2016#if CK4_ENABLED
2017 PURE module subroutine setPolyMul_CK4(mul, lhs, rhs)
2018#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2019 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_CK4
2020#endif
2021 use pm_kind, only: CKG => CK4
2022 complex(CKG), intent(in) , contiguous :: lhs(0:)
2023 complex(CKG), intent(in) , contiguous :: rhs(0:)
2024 complex(CKG), intent(out) , contiguous :: mul(0:)
2025 end subroutine
2026#endif
2027
2028#if CK3_ENABLED
2029 PURE module subroutine setPolyMul_CK3(mul, lhs, rhs)
2030#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2031 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_CK3
2032#endif
2033 use pm_kind, only: CKG => CK3
2034 complex(CKG), intent(in) , contiguous :: lhs(0:)
2035 complex(CKG), intent(in) , contiguous :: rhs(0:)
2036 complex(CKG), intent(out) , contiguous :: mul(0:)
2037 end subroutine
2038#endif
2039
2040#if CK2_ENABLED
2041 PURE module subroutine setPolyMul_CK2(mul, lhs, rhs)
2042#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2043 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_CK2
2044#endif
2045 use pm_kind, only: CKG => CK2
2046 complex(CKG), intent(in) , contiguous :: lhs(0:)
2047 complex(CKG), intent(in) , contiguous :: rhs(0:)
2048 complex(CKG), intent(out) , contiguous :: mul(0:)
2049 end subroutine
2050#endif
2051
2052#if CK1_ENABLED
2053 PURE module subroutine setPolyMul_CK1(mul, lhs, rhs)
2054#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2055 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_CK1
2056#endif
2057 use pm_kind, only: CKG => CK1
2058 complex(CKG), intent(in) , contiguous :: lhs(0:)
2059 complex(CKG), intent(in) , contiguous :: rhs(0:)
2060 complex(CKG), intent(out) , contiguous :: mul(0:)
2061 end subroutine
2062#endif
2063
2064 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2065
2066#if RK5_ENABLED
2067 PURE module subroutine setPolyMul_RK5(mul, lhs, rhs)
2068#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2069 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_RK5
2070#endif
2071 use pm_kind, only: RKG => RK5
2072 real(RKG) , intent(in) , contiguous :: lhs(0:)
2073 real(RKG) , intent(in) , contiguous :: rhs(0:)
2074 real(RKG) , intent(out) , contiguous :: mul(0:)
2075 end subroutine
2076#endif
2077
2078#if RK4_ENABLED
2079 PURE module subroutine setPolyMul_RK4(mul, lhs, rhs)
2080#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2081 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_RK4
2082#endif
2083 use pm_kind, only: RKG => RK4
2084 real(RKG) , intent(in) , contiguous :: lhs(0:)
2085 real(RKG) , intent(in) , contiguous :: rhs(0:)
2086 real(RKG) , intent(out) , contiguous :: mul(0:)
2087 end subroutine
2088#endif
2089
2090#if RK3_ENABLED
2091 PURE module subroutine setPolyMul_RK3(mul, lhs, rhs)
2092#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2093 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_RK3
2094#endif
2095 use pm_kind, only: RKG => RK3
2096 real(RKG) , intent(in) , contiguous :: lhs(0:)
2097 real(RKG) , intent(in) , contiguous :: rhs(0:)
2098 real(RKG) , intent(out) , contiguous :: mul(0:)
2099 end subroutine
2100#endif
2101
2102#if RK2_ENABLED
2103 PURE module subroutine setPolyMul_RK2(mul, lhs, rhs)
2104#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2105 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_RK2
2106#endif
2107 use pm_kind, only: RKG => RK2
2108 real(RKG) , intent(in) , contiguous :: lhs(0:)
2109 real(RKG) , intent(in) , contiguous :: rhs(0:)
2110 real(RKG) , intent(out) , contiguous :: mul(0:)
2111 end subroutine
2112#endif
2113
2114#if RK1_ENABLED
2115 PURE module subroutine setPolyMul_RK1(mul, lhs, rhs)
2116#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2117 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyMul_RK1
2118#endif
2119 use pm_kind, only: RKG => RK1
2120 real(RKG) , intent(in) , contiguous :: lhs(0:)
2121 real(RKG) , intent(in) , contiguous :: rhs(0:)
2122 real(RKG) , intent(out) , contiguous :: mul(0:)
2123 end subroutine
2124#endif
2125
2126 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2127
2128 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2129 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2130 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2131
2132 end interface
2133
2134!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2135
2208 interface setPolyDiv
2209
2210 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2211 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2212 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2213
2214 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2215
2216#if CK5_ENABLED
2217 PURE module subroutine setPolyDiv_CK5(dividend, divisor, quorem, lenQuo)
2218#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2219 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_CK5
2220#endif
2221 use pm_kind, only: CKG => CK5
2222 complex(CKG), intent(in) , contiguous :: dividend(:)
2223 complex(CKG), intent(in) , contiguous :: divisor(:)
2224 complex(CKG), intent(out) , contiguous :: quorem(:)
2225 integer(IK) , intent(out) :: lenQuo
2226 end subroutine
2227#endif
2228
2229#if CK4_ENABLED
2230 PURE module subroutine setPolyDiv_CK4(dividend, divisor, quorem, lenQuo)
2231#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2232 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_CK4
2233#endif
2234 use pm_kind, only: CKG => CK4
2235 complex(CKG), intent(in) , contiguous :: dividend(:)
2236 complex(CKG), intent(in) , contiguous :: divisor(:)
2237 complex(CKG), intent(out) , contiguous :: quorem(:)
2238 integer(IK) , intent(out) :: lenQuo
2239 end subroutine
2240#endif
2241
2242#if CK3_ENABLED
2243 PURE module subroutine setPolyDiv_CK3(dividend, divisor, quorem, lenQuo)
2244#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2245 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_CK3
2246#endif
2247 use pm_kind, only: CKG => CK3
2248 complex(CKG), intent(in) , contiguous :: dividend(:)
2249 complex(CKG), intent(in) , contiguous :: divisor(:)
2250 complex(CKG), intent(out) , contiguous :: quorem(:)
2251 integer(IK) , intent(out) :: lenQuo
2252 end subroutine
2253#endif
2254
2255#if CK2_ENABLED
2256 PURE module subroutine setPolyDiv_CK2(dividend, divisor, quorem, lenQuo)
2257#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2258 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_CK2
2259#endif
2260 use pm_kind, only: CKG => CK2
2261 complex(CKG), intent(in) , contiguous :: dividend(:)
2262 complex(CKG), intent(in) , contiguous :: divisor(:)
2263 complex(CKG), intent(out) , contiguous :: quorem(:)
2264 integer(IK) , intent(out) :: lenQuo
2265 end subroutine
2266#endif
2267
2268#if CK1_ENABLED
2269 PURE module subroutine setPolyDiv_CK1(dividend, divisor, quorem, lenQuo)
2270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2271 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_CK1
2272#endif
2273 use pm_kind, only: CKG => CK1
2274 complex(CKG), intent(in) , contiguous :: dividend(:)
2275 complex(CKG), intent(in) , contiguous :: divisor(:)
2276 complex(CKG), intent(out) , contiguous :: quorem(:)
2277 integer(IK) , intent(out) :: lenQuo
2278 end subroutine
2279#endif
2280
2281 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2282
2283#if RK5_ENABLED
2284 PURE module subroutine setPolyDiv_RK5(dividend, divisor, quorem, lenQuo)
2285#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2286 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_RK5
2287#endif
2288 use pm_kind, only: RKG => RK5
2289 real(RKG) , intent(in) , contiguous :: dividend(:)
2290 real(RKG) , intent(in) , contiguous :: divisor(:)
2291 real(RKG) , intent(out) , contiguous :: quorem(:)
2292 integer(IK) , intent(out) :: lenQuo
2293 end subroutine
2294#endif
2295
2296#if RK4_ENABLED
2297 PURE module subroutine setPolyDiv_RK4(dividend, divisor, quorem, lenQuo)
2298#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2299 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_RK4
2300#endif
2301 use pm_kind, only: RKG => RK4
2302 real(RKG) , intent(in) , contiguous :: dividend(:)
2303 real(RKG) , intent(in) , contiguous :: divisor(:)
2304 real(RKG) , intent(out) , contiguous :: quorem(:)
2305 integer(IK) , intent(out) :: lenQuo
2306 end subroutine
2307#endif
2308
2309#if RK3_ENABLED
2310 PURE module subroutine setPolyDiv_RK3(dividend, divisor, quorem, lenQuo)
2311#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2312 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_RK3
2313#endif
2314 use pm_kind, only: RKG => RK3
2315 real(RKG) , intent(in) , contiguous :: dividend(:)
2316 real(RKG) , intent(in) , contiguous :: divisor(:)
2317 real(RKG) , intent(out) , contiguous :: quorem(:)
2318 integer(IK) , intent(out) :: lenQuo
2319 end subroutine
2320#endif
2321
2322#if RK2_ENABLED
2323 PURE module subroutine setPolyDiv_RK2(dividend, divisor, quorem, lenQuo)
2324#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2325 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_RK2
2326#endif
2327 use pm_kind, only: RKG => RK2
2328 real(RKG) , intent(in) , contiguous :: dividend(:)
2329 real(RKG) , intent(in) , contiguous :: divisor(:)
2330 real(RKG) , intent(out) , contiguous :: quorem(:)
2331 integer(IK) , intent(out) :: lenQuo
2332 end subroutine
2333#endif
2334
2335#if RK1_ENABLED
2336 PURE module subroutine setPolyDiv_RK1(dividend, divisor, quorem, lenQuo)
2337#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2338 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiv_RK1
2339#endif
2340 use pm_kind, only: RKG => RK1
2341 real(RKG) , intent(in) , contiguous :: dividend(:)
2342 real(RKG) , intent(in) , contiguous :: divisor(:)
2343 real(RKG) , intent(out) , contiguous :: quorem(:)
2344 integer(IK) , intent(out) :: lenQuo
2345 end subroutine
2346#endif
2347
2348 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2349
2350 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2351 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2352 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2353
2354 end interface
2355
2356!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2357
2415 interface getPolyDiff
2416
2417 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2418 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2419 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2420
2421 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2422
2423#if CK5_ENABLED
2424 PURE module function getPolyDiffDef_CK5(coef) result(diff)
2425#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2426 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_CK5
2427#endif
2428 use pm_kind, only: CKG => CK5
2429 complex(CKG), intent(in) , contiguous :: coef(0:)
2430 complex(CKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2431 end function
2432#endif
2433
2434#if CK4_ENABLED
2435 PURE module function getPolyDiffDef_CK4(coef) result(diff)
2436#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2437 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_CK4
2438#endif
2439 use pm_kind, only: CKG => CK4
2440 complex(CKG), intent(in) , contiguous :: coef(0:)
2441 complex(CKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2442 end function
2443#endif
2444
2445#if CK3_ENABLED
2446 PURE module function getPolyDiffDef_CK3(coef) result(diff)
2447#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2448 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_CK3
2449#endif
2450 use pm_kind, only: CKG => CK3
2451 complex(CKG), intent(in) , contiguous :: coef(0:)
2452 complex(CKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2453 end function
2454#endif
2455
2456#if CK2_ENABLED
2457 PURE module function getPolyDiffDef_CK2(coef) result(diff)
2458#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2459 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_CK2
2460#endif
2461 use pm_kind, only: CKG => CK2
2462 complex(CKG), intent(in) , contiguous :: coef(0:)
2463 complex(CKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2464 end function
2465#endif
2466
2467#if CK1_ENABLED
2468 PURE module function getPolyDiffDef_CK1(coef) result(diff)
2469#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2470 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_CK1
2471#endif
2472 use pm_kind, only: CKG => CK1
2473 complex(CKG), intent(in) , contiguous :: coef(0:)
2474 complex(CKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2475 end function
2476#endif
2477
2478 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2479
2480#if RK5_ENABLED
2481 PURE module function getPolyDiffDef_RK5(coef) result(diff)
2482#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2483 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_RK5
2484#endif
2485 use pm_kind, only: RKG => RK5
2486 real(RKG) , intent(in) , contiguous :: coef(0:)
2487 real(RKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2488 end function
2489#endif
2490
2491#if RK4_ENABLED
2492 PURE module function getPolyDiffDef_RK4(coef) result(diff)
2493#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2494 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_RK4
2495#endif
2496 use pm_kind, only: RKG => RK4
2497 real(RKG) , intent(in) , contiguous :: coef(0:)
2498 real(RKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2499 end function
2500#endif
2501
2502#if RK3_ENABLED
2503 PURE module function getPolyDiffDef_RK3(coef) result(diff)
2504#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2505 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_RK3
2506#endif
2507 use pm_kind, only: RKG => RK3
2508 real(RKG) , intent(in) , contiguous :: coef(0:)
2509 real(RKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2510 end function
2511#endif
2512
2513#if RK2_ENABLED
2514 PURE module function getPolyDiffDef_RK2(coef) result(diff)
2515#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2516 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_RK2
2517#endif
2518 use pm_kind, only: RKG => RK2
2519 real(RKG) , intent(in) , contiguous :: coef(0:)
2520 real(RKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2521 end function
2522#endif
2523
2524#if RK1_ENABLED
2525 PURE module function getPolyDiffDef_RK1(coef) result(diff)
2526#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2527 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffDef_RK1
2528#endif
2529 use pm_kind, only: RKG => RK1
2530 real(RKG) , intent(in) , contiguous :: coef(0:)
2531 real(RKG) :: diff(1 : size(coef, 1, IK) - 1_IK)
2532 end function
2533#endif
2534
2535 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2536
2537 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2538 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2539 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2540
2541 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2542
2543#if CK5_ENABLED
2544 PURE module function getPolyDiffOrd_CK5(coef, order) result(diff)
2545#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2546 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_CK5
2547#endif
2548 use pm_kind, only: CKG => CK5
2549 integer(IK) , intent(in) :: order
2550 complex(CKG), intent(in) , contiguous :: coef(0:)
2551 complex(CKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2552 end function
2553#endif
2554
2555#if CK4_ENABLED
2556 PURE module function getPolyDiffOrd_CK4(coef, order) result(diff)
2557#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2558 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_CK4
2559#endif
2560 use pm_kind, only: CKG => CK4
2561 integer(IK) , intent(in) :: order
2562 complex(CKG), intent(in) , contiguous :: coef(0:)
2563 complex(CKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2564 end function
2565#endif
2566
2567#if CK3_ENABLED
2568 PURE module function getPolyDiffOrd_CK3(coef, order) result(diff)
2569#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2570 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_CK3
2571#endif
2572 use pm_kind, only: CKG => CK3
2573 integer(IK) , intent(in) :: order
2574 complex(CKG), intent(in) , contiguous :: coef(0:)
2575 complex(CKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2576 end function
2577#endif
2578
2579#if CK2_ENABLED
2580 PURE module function getPolyDiffOrd_CK2(coef, order) result(diff)
2581#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2582 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_CK2
2583#endif
2584 use pm_kind, only: CKG => CK2
2585 integer(IK) , intent(in) :: order
2586 complex(CKG), intent(in) , contiguous :: coef(0:)
2587 complex(CKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2588 end function
2589#endif
2590
2591#if CK1_ENABLED
2592 PURE module function getPolyDiffOrd_CK1(coef, order) result(diff)
2593#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2594 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_CK1
2595#endif
2596 use pm_kind, only: CKG => CK1
2597 integer(IK) , intent(in) :: order
2598 complex(CKG), intent(in) , contiguous :: coef(0:)
2599 complex(CKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2600 end function
2601#endif
2602
2603 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2604
2605#if RK5_ENABLED
2606 PURE module function getPolyDiffOrd_RK5(coef, order) result(diff)
2607#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2608 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_RK5
2609#endif
2610 use pm_kind, only: RKG => RK5
2611 integer(IK) , intent(in) :: order
2612 real(RKG) , intent(in) , contiguous :: coef(0:)
2613 real(RKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2614 end function
2615#endif
2616
2617#if RK4_ENABLED
2618 PURE module function getPolyDiffOrd_RK4(coef, order) result(diff)
2619#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2620 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_RK4
2621#endif
2622 use pm_kind, only: RKG => RK4
2623 integer(IK) , intent(in) :: order
2624 real(RKG) , intent(in) , contiguous :: coef(0:)
2625 real(RKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2626 end function
2627#endif
2628
2629#if RK3_ENABLED
2630 PURE module function getPolyDiffOrd_RK3(coef, order) result(diff)
2631#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2632 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_RK3
2633#endif
2634 use pm_kind, only: RKG => RK3
2635 integer(IK) , intent(in) :: order
2636 real(RKG) , intent(in) , contiguous :: coef(0:)
2637 real(RKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2638 end function
2639#endif
2640
2641#if RK2_ENABLED
2642 PURE module function getPolyDiffOrd_RK2(coef, order) result(diff)
2643#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2644 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_RK2
2645#endif
2646 use pm_kind, only: RKG => RK2
2647 integer(IK) , intent(in) :: order
2648 real(RKG) , intent(in) , contiguous :: coef(0:)
2649 real(RKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2650 end function
2651#endif
2652
2653#if RK1_ENABLED
2654 PURE module function getPolyDiffOrd_RK1(coef, order) result(diff)
2655#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2656 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyDiffOrd_RK1
2657#endif
2658 use pm_kind, only: RKG => RK1
2659 integer(IK) , intent(in) :: order
2660 real(RKG) , intent(in) , contiguous :: coef(0:)
2661 real(RKG) :: diff(order : size(coef, 1, IK) - 1_IK)
2662 end function
2663#endif
2664
2665 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2666
2667 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2668 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2669 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2670
2671 end interface
2672
2673!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2674
2730 interface setPolyDiff
2731
2732 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2733 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2734 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2735
2736 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2737
2738#if CK5_ENABLED
2739 PURE module subroutine setPolyDiffDef_CK5(diff, coef)
2740#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2741 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_CK5
2742#endif
2743 use pm_kind, only: CKG => CK5
2744 complex(CKG), intent(in) , contiguous :: coef(0:)
2745 complex(CKG), intent(out) , contiguous :: diff(1:)
2746 end subroutine
2747#endif
2748
2749#if CK4_ENABLED
2750 PURE module subroutine setPolyDiffDef_CK4(diff, coef)
2751#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2752 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_CK4
2753#endif
2754 use pm_kind, only: CKG => CK4
2755 complex(CKG), intent(in) , contiguous :: coef(0:)
2756 complex(CKG), intent(out) , contiguous :: diff(1:)
2757 end subroutine
2758#endif
2759
2760#if CK3_ENABLED
2761 PURE module subroutine setPolyDiffDef_CK3(diff, coef)
2762#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2763 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_CK3
2764#endif
2765 use pm_kind, only: CKG => CK3
2766 complex(CKG), intent(in) , contiguous :: coef(0:)
2767 complex(CKG), intent(out) , contiguous :: diff(1:)
2768 end subroutine
2769#endif
2770
2771#if CK2_ENABLED
2772 PURE module subroutine setPolyDiffDef_CK2(diff, coef)
2773#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2774 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_CK2
2775#endif
2776 use pm_kind, only: CKG => CK2
2777 complex(CKG), intent(in) , contiguous :: coef(0:)
2778 complex(CKG), intent(out) , contiguous :: diff(1:)
2779 end subroutine
2780#endif
2781
2782#if CK1_ENABLED
2783 PURE module subroutine setPolyDiffDef_CK1(diff, coef)
2784#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2785 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_CK1
2786#endif
2787 use pm_kind, only: CKG => CK1
2788 complex(CKG), intent(in) , contiguous :: coef(0:)
2789 complex(CKG), intent(out) , contiguous :: diff(1:)
2790 end subroutine
2791#endif
2792
2793 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2794
2795#if RK5_ENABLED
2796 PURE module subroutine setPolyDiffDef_RK5(diff, coef)
2797#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2798 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_RK5
2799#endif
2800 use pm_kind, only: RKG => RK5
2801 real(RKG) , intent(in) , contiguous :: coef(0:)
2802 real(RKG) , intent(out) , contiguous :: diff(1:)
2803 end subroutine
2804#endif
2805
2806#if RK4_ENABLED
2807 PURE module subroutine setPolyDiffDef_RK4(diff, coef)
2808#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2809 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_RK4
2810#endif
2811 use pm_kind, only: RKG => RK4
2812 real(RKG) , intent(in) , contiguous :: coef(0:)
2813 real(RKG) , intent(out) , contiguous :: diff(1:)
2814 end subroutine
2815#endif
2816
2817#if RK3_ENABLED
2818 PURE module subroutine setPolyDiffDef_RK3(diff, coef)
2819#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2820 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_RK3
2821#endif
2822 use pm_kind, only: RKG => RK3
2823 real(RKG) , intent(in) , contiguous :: coef(0:)
2824 real(RKG) , intent(out) , contiguous :: diff(1:)
2825 end subroutine
2826#endif
2827
2828#if RK2_ENABLED
2829 PURE module subroutine setPolyDiffDef_RK2(diff, coef)
2830#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2831 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_RK2
2832#endif
2833 use pm_kind, only: RKG => RK2
2834 real(RKG) , intent(in) , contiguous :: coef(0:)
2835 real(RKG) , intent(out) , contiguous :: diff(1:)
2836 end subroutine
2837#endif
2838
2839#if RK1_ENABLED
2840 PURE module subroutine setPolyDiffDef_RK1(diff, coef)
2841#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2842 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffDef_RK1
2843#endif
2844 use pm_kind, only: RKG => RK1
2845 real(RKG) , intent(in) , contiguous :: coef(0:)
2846 real(RKG) , intent(out) , contiguous :: diff(1:)
2847 end subroutine
2848#endif
2849
2850 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2851
2852 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2853 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2854 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2855
2856 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2857
2858#if CK5_ENABLED
2859 PURE module subroutine setPolyDiffOrd_CK5(diff, coef, order)
2860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2861 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_CK5
2862#endif
2863 use pm_kind, only: CKG => CK5
2864 integer(IK) , intent(in) :: order
2865 complex(CKG), intent(in) , contiguous :: coef(0:)
2866 complex(CKG), intent(out) , contiguous :: diff(order:)
2867 end subroutine
2868#endif
2869
2870#if CK4_ENABLED
2871 PURE module subroutine setPolyDiffOrd_CK4(diff, coef, order)
2872#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2873 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_CK4
2874#endif
2875 use pm_kind, only: CKG => CK4
2876 integer(IK) , intent(in) :: order
2877 complex(CKG), intent(in) , contiguous :: coef(0:)
2878 complex(CKG), intent(out) , contiguous :: diff(order:)
2879 end subroutine
2880#endif
2881
2882#if CK3_ENABLED
2883 PURE module subroutine setPolyDiffOrd_CK3(diff, coef, order)
2884#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2885 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_CK3
2886#endif
2887 use pm_kind, only: CKG => CK3
2888 integer(IK) , intent(in) :: order
2889 complex(CKG), intent(in) , contiguous :: coef(0:)
2890 complex(CKG), intent(out) , contiguous :: diff(order:)
2891 end subroutine
2892#endif
2893
2894#if CK2_ENABLED
2895 PURE module subroutine setPolyDiffOrd_CK2(diff, coef, order)
2896#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2897 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_CK2
2898#endif
2899 use pm_kind, only: CKG => CK2
2900 integer(IK) , intent(in) :: order
2901 complex(CKG), intent(in) , contiguous :: coef(0:)
2902 complex(CKG), intent(out) , contiguous :: diff(order:)
2903 end subroutine
2904#endif
2905
2906#if CK1_ENABLED
2907 PURE module subroutine setPolyDiffOrd_CK1(diff, coef, order)
2908#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2909 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_CK1
2910#endif
2911 use pm_kind, only: CKG => CK1
2912 integer(IK) , intent(in) :: order
2913 complex(CKG), intent(in) , contiguous :: coef(0:)
2914 complex(CKG), intent(out) , contiguous :: diff(order:)
2915 end subroutine
2916#endif
2917
2918 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2919
2920#if RK5_ENABLED
2921 PURE module subroutine setPolyDiffOrd_RK5(diff, coef, order)
2922#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2923 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_RK5
2924#endif
2925 use pm_kind, only: RKG => RK5
2926 integer(IK) , intent(in) :: order
2927 real(RKG) , intent(in) , contiguous :: coef(0:)
2928 real(RKG) , intent(out) , contiguous :: diff(order:)
2929 end subroutine
2930#endif
2931
2932#if RK4_ENABLED
2933 PURE module subroutine setPolyDiffOrd_RK4(diff, coef, order)
2934#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2935 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_RK4
2936#endif
2937 use pm_kind, only: RKG => RK4
2938 integer(IK) , intent(in) :: order
2939 real(RKG) , intent(in) , contiguous :: coef(0:)
2940 real(RKG) , intent(out) , contiguous :: diff(order:)
2941 end subroutine
2942#endif
2943
2944#if RK3_ENABLED
2945 PURE module subroutine setPolyDiffOrd_RK3(diff, coef, order)
2946#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2947 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_RK3
2948#endif
2949 use pm_kind, only: RKG => RK3
2950 integer(IK) , intent(in) :: order
2951 real(RKG) , intent(in) , contiguous :: coef(0:)
2952 real(RKG) , intent(out) , contiguous :: diff(order:)
2953 end subroutine
2954#endif
2955
2956#if RK2_ENABLED
2957 PURE module subroutine setPolyDiffOrd_RK2(diff, coef, order)
2958#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2959 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_RK2
2960#endif
2961 use pm_kind, only: RKG => RK2
2962 integer(IK) , intent(in) :: order
2963 real(RKG) , intent(in) , contiguous :: coef(0:)
2964 real(RKG) , intent(out) , contiguous :: diff(order:)
2965 end subroutine
2966#endif
2967
2968#if RK1_ENABLED
2969 PURE module subroutine setPolyDiffOrd_RK1(diff, coef, order)
2970#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2971 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyDiffOrd_RK1
2972#endif
2973 use pm_kind, only: RKG => RK1
2974 integer(IK) , intent(in) :: order
2975 real(RKG) , intent(in) , contiguous :: coef(0:)
2976 real(RKG) , intent(out) , contiguous :: diff(order:)
2977 end subroutine
2978#endif
2979
2980 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2981
2982 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2983 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2984 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2985
2986 end interface
2987
2988!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2989
3047 interface getPolyStr
3048
3049 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3050 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3051 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3052
3053 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3054
3055#if CK5_ENABLED
3056 PURE module function getPolyStrDef_CK5(coef) result(str)
3057#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3058 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_CK5
3059#endif
3060 use pm_kind, only: SKG => SK, CKG => CK5
3061 complex(CKG) , intent(in) , contiguous :: coef(0:)
3062 character(:,SKG) , allocatable :: str
3063 end function
3064#endif
3065
3066#if CK4_ENABLED
3067 PURE module function getPolyStrDef_CK4(coef) result(str)
3068#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3069 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_CK4
3070#endif
3071 use pm_kind, only: SKG => SK, CKG => CK4
3072 complex(CKG) , intent(in) , contiguous :: coef(0:)
3073 character(:,SKG) , allocatable :: str
3074 end function
3075#endif
3076
3077#if CK3_ENABLED
3078 PURE module function getPolyStrDef_CK3(coef) result(str)
3079#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3080 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_CK3
3081#endif
3082 use pm_kind, only: SKG => SK, CKG => CK3
3083 complex(CKG) , intent(in) , contiguous :: coef(0:)
3084 character(:,SKG) , allocatable :: str
3085 end function
3086#endif
3087
3088#if CK2_ENABLED
3089 PURE module function getPolyStrDef_CK2(coef) result(str)
3090#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3091 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_CK2
3092#endif
3093 use pm_kind, only: SKG => SK, CKG => CK2
3094 complex(CKG) , intent(in) , contiguous :: coef(0:)
3095 character(:,SKG) , allocatable :: str
3096 end function
3097#endif
3098
3099#if CK1_ENABLED
3100 PURE module function getPolyStrDef_CK1(coef) result(str)
3101#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3102 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_CK1
3103#endif
3104 use pm_kind, only: SKG => SK, CKG => CK1
3105 complex(CKG) , intent(in) , contiguous :: coef(0:)
3106 character(:,SKG) , allocatable :: str
3107 end function
3108#endif
3109
3110 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3111
3112#if RK5_ENABLED
3113 PURE module function getPolyStrDef_RK5(coef) result(str)
3114#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3115 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_RK5
3116#endif
3117 use pm_kind, only: SKG => SK, RKG => RK5
3118 real(RKG) , intent(in) , contiguous :: coef(0:)
3119 character(:,SKG) , allocatable :: str
3120 end function
3121#endif
3122
3123#if RK4_ENABLED
3124 PURE module function getPolyStrDef_RK4(coef) result(str)
3125#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3126 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_RK4
3127#endif
3128 use pm_kind, only: SKG => SK, RKG => RK4
3129 real(RKG) , intent(in) , contiguous :: coef(0:)
3130 character(:,SKG) , allocatable :: str
3131 end function
3132#endif
3133
3134#if RK3_ENABLED
3135 PURE module function getPolyStrDef_RK3(coef) result(str)
3136#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3137 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_RK3
3138#endif
3139 use pm_kind, only: SKG => SK, RKG => RK3
3140 real(RKG) , intent(in) , contiguous :: coef(0:)
3141 character(:,SKG) , allocatable :: str
3142 end function
3143#endif
3144
3145#if RK2_ENABLED
3146 PURE module function getPolyStrDef_RK2(coef) result(str)
3147#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3148 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_RK2
3149#endif
3150 use pm_kind, only: SKG => SK, RKG => RK2
3151 real(RKG) , intent(in) , contiguous :: coef(0:)
3152 character(:,SKG) , allocatable :: str
3153 end function
3154#endif
3155
3156#if RK1_ENABLED
3157 PURE module function getPolyStrDef_RK1(coef) result(str)
3158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3159 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyStrDef_RK1
3160#endif
3161 use pm_kind, only: SKG => SK, RKG => RK1
3162 real(RKG) , intent(in) , contiguous :: coef(0:)
3163 character(:,SKG) , allocatable :: str
3164 end function
3165#endif
3166
3167 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3168
3169 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3170 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3171 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3172
3173 end interface
3174
3175!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3176
3200 type, abstract :: method_type
3201 end type
3202
3203!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3204
3247 type, extends(method_type) :: sgl_type
3248 logical(LK) :: polished = .true._LK
3249 logical(LK) :: reckoned = .false._LK
3250 end type
3251
3275 type(sgl_type), parameter :: sgl = sgl_type()
3276#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3277 !DIR$ ATTRIBUTES DLLEXPORT :: sgl
3278#endif
3279
3280!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3281
3311 type, extends(method_type) :: eigen_type
3312 end type
3313
3337 type(eigen_type), parameter :: eigen = eigen_type()
3338#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3339 !DIR$ ATTRIBUTES DLLEXPORT :: eigen
3340#endif
3341
3342!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3343
3373 type, extends(method_type) :: jenkins_type
3374 end type
3375
3399 type(jenkins_type), parameter :: jenkins = jenkins_type()
3400#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3401 !DIR$ ATTRIBUTES DLLEXPORT :: jenkins
3402#endif
3403
3404!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3405
3435 type, extends(method_type) :: laguerre_type
3436 end type
3437
3461 type(laguerre_type), parameter :: laguerre = laguerre_type()
3462#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3463 !DIR$ ATTRIBUTES DLLEXPORT :: laguerre
3464#endif
3465
3466!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3467
3468! !> \brief
3469! !> Return the coefficients of a polynomial of arbitrary degree specified by its roots `root`.<br>
3470! !>
3471! !> \details
3472! !> The strategy relies on the construction of the full polynomial by multiplying polynomial terms recursively.<br>
3473! !> Pure multiplication, however, is slow, and can be expedited by realizing that polynomial multiplication is equivalent to an FFT on the coefficients.<br>
3474! !>
3475! !> \param[in] root : The input `contiguous` vector of,<br>
3476! !> <ol>
3477! !> <li> type `complex` of kind \CKALL,<br>
3478! !> <li> type `real` of kind \RKALL,<br>
3479! !> </ol>
3480! !> and the same size as the degree of the polynomial (i.e., `size(coef) - 1`),
3481! !> containing the roots of the polynomial.<br>
3482! !> \param[out] coef : The output `contiguous` vector of the same type and kind as the input `root` of size `size(root) + 1`.<br>
3483! !> On output, it contains the coefficients of the polynomial in the order of **increasing power**.<br>
3484! !> By definition, the degree of the polynomial is `size(coef) - 1`.<br>
3485! !>
3486! !> \interface{setPolyCoef}
3487! !> \code{.F90}
3488! !>
3489! !> use pm_polynomial, only: setPolyCoef
3490! !>
3491! !> call setPolyCoef(root(1 : degree), coef(0 : degree))
3492! !>
3493! !> \endcode
3494! !>
3495! !> \warning
3496! !> The condition `1 < size(coef)` must hold for the corresponding input arguments.<br>
3497! !> The condition `size(root) == size(coef) - 1` must hold for the corresponding input arguments.<br>
3498! !> \vericons
3499! !>
3500! !> \impure
3501! !>
3502! !> \see
3503! !> [getRoot](@ref pm_mathRoot::getRoot)<br>
3504! !> [setRoot](@ref pm_mathRoot::setRoot)<br>
3505! !> [getPolyRoot](@ref pm_polynomial::getPolyRoot)<br>
3506! !> [setPolyCoef](@ref pm_polynomial::setPolyRoot)<br>
3507! !>
3508! !> \example{setPolyRoot}
3509! !> \include{lineno} example/pm_polynomial/setPolyRoot/main.F90
3510! !> \compilef{setPolyRoot}
3511! !> \output{setPolyRoot}
3512! !> \include{lineno} example/pm_polynomial/setPolyRoot/main.out.F90
3513! !>
3514! !> \test
3515! !> [test_pm_polynomial](@ref test_pm_polynomial)
3516! !>
3517! !> \author
3518! !> \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
3519!
3520! ! Eigenvalue method.
3521!
3522! interface setPolyRoot
3523!
3524! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3525!
3526!#if CK5_ENABLED
3527! module subroutine setPolyCoef_CK5_CK5(coef, root)
3528!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3529! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_CK5_CK5
3530!#endif
3531! use pm_kind, only: CKG => CK5
3532! complex(CKG) , intent(out) , contiguous :: coef(:)
3533! complex(CKG) , intent(in) , contiguous :: root(:)
3534! end subroutine
3535!#endif
3536!
3537!#if CK4_ENABLED
3538! module subroutine setPolyCoef_CK4_CK4(coef, root)
3539!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3540! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_CK4_CK4
3541!#endif
3542! use pm_kind, only: CKG => CK4
3543! complex(CKG) , intent(out) , contiguous :: coef(:)
3544! complex(CKG) , intent(in) , contiguous :: root(:)
3545! end subroutine
3546!#endif
3547!
3548!#if CK3_ENABLED
3549! module subroutine setPolyCoef_CK3_CK3(coef, root)
3550!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3551! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_CK3_CK3
3552!#endif
3553! use pm_kind, only: CKG => CK3
3554! complex(CKG) , intent(out) , contiguous :: coef(:)
3555! complex(CKG) , intent(in) , contiguous :: root(:)
3556! end subroutine
3557!#endif
3558!
3559!#if CK2_ENABLED
3560! module subroutine setPolyCoef_CK2_CK2(coef, root)
3561!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3562! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_CK2_CK2
3563!#endif
3564! use pm_kind, only: CKG => CK2
3565! complex(CKG) , intent(out) , contiguous :: coef(:)
3566! complex(CKG) , intent(in) , contiguous :: root(:)
3567! end subroutine
3568!#endif
3569!
3570!#if CK1_ENABLED
3571! module subroutine setPolyCoef_CK1_CK1(coef, root)
3572!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3573! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_CK1_CK1
3574!#endif
3575! use pm_kind, only: CKG => CK1
3576! complex(CKG) , intent(out) , contiguous :: coef(:)
3577! complex(CKG) , intent(in) , contiguous :: root(:)
3578! end subroutine
3579!#endif
3580!
3581! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3582!
3583!#if RK5_ENABLED
3584! module subroutine setPolyCoef_RK5_RK5(coef, root)
3585!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3586! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_RK5_RK5
3587!#endif
3588! use pm_kind, only: RKG => RK5
3589! real(RKG) , intent(out) , contiguous :: coef(:)
3590! real(RKG) , intent(in) , contiguous :: root(:)
3591! end subroutine
3592!#endif
3593!
3594!#if RK4_ENABLED
3595! module subroutine setPolyCoef_RK4_RK4(coef, root)
3596!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3597! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_RK4_RK4
3598!#endif
3599! use pm_kind, only: RKG => RK4
3600! real(RKG) , intent(out) , contiguous :: coef(:)
3601! real(RKG) , intent(in) , contiguous :: root(:)
3602! end subroutine
3603!#endif
3604!
3605!#if RK3_ENABLED
3606! module subroutine setPolyCoef_RK3_RK3(coef, root)
3607!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3608! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_RK3_RK3
3609!#endif
3610! use pm_kind, only: RKG => RK3
3611! real(RKG) , intent(out) , contiguous :: coef(:)
3612! real(RKG) , intent(in) , contiguous :: root(:)
3613! end subroutine
3614!#endif
3615!
3616!#if RK2_ENABLED
3617! module subroutine setPolyCoef_RK2_RK2(coef, root)
3618!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3619! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_RK2_RK2
3620!#endif
3621! use pm_kind, only: RKG => RK2
3622! real(RKG) , intent(out) , contiguous :: coef(:)
3623! real(RKG) , intent(in) , contiguous :: root(:)
3624! end subroutine
3625!#endif
3626!
3627!#if RK1_ENABLED
3628! module subroutine setPolyCoef_RK1_RK1(coef, root)
3629!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3630! !DEC$ ATTRIBUTES DLLEXPORT :: setPolyCoef_RK1_RK1
3631!#endif
3632! use pm_kind, only: RKG => RK1
3633! real(RKG) , intent(out) , contiguous :: coef(:)
3634! real(RKG) , intent(in) , contiguous :: root(:)
3635! end subroutine
3636!#endif
3637!
3638! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3639!
3640! end interface
3641
3642!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3643
3747
3748 ! Default method.
3749
3750 interface getPolyRoot
3751
3752 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3753 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3754 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3755
3756 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3757
3758#if CK5_ENABLED
3759 module function getPolyRootDef_CK5_CK5(coef) result(root)
3760#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3761 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_CK5_CK5
3762#endif
3763 use pm_kind, only: CKG => CK5
3764 complex(CKG) , allocatable :: root(:)
3765 complex(CKG) , intent(in) , contiguous :: coef(0:)
3766 end function
3767#endif
3768
3769#if CK4_ENABLED
3770 module function getPolyRootDef_CK4_CK4(coef) result(root)
3771#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3772 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_CK4_CK4
3773#endif
3774 use pm_kind, only: CKG => CK4
3775 complex(CKG) , allocatable :: root(:)
3776 complex(CKG) , intent(in) , contiguous :: coef(0:)
3777 end function
3778#endif
3779
3780#if CK3_ENABLED
3781 module function getPolyRootDef_CK3_CK3(coef) result(root)
3782#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3783 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_CK3_CK3
3784#endif
3785 use pm_kind, only: CKG => CK3
3786 complex(CKG) , allocatable :: root(:)
3787 complex(CKG) , intent(in) , contiguous :: coef(0:)
3788 end function
3789#endif
3790
3791#if CK2_ENABLED
3792 module function getPolyRootDef_CK2_CK2(coef) result(root)
3793#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3794 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_CK2_CK2
3795#endif
3796 use pm_kind, only: CKG => CK2
3797 complex(CKG) , allocatable :: root(:)
3798 complex(CKG) , intent(in) , contiguous :: coef(0:)
3799 end function
3800#endif
3801
3802#if CK1_ENABLED
3803 module function getPolyRootDef_CK1_CK1(coef) result(root)
3804#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3805 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_CK1_CK1
3806#endif
3807 use pm_kind, only: CKG => CK1
3808 complex(CKG) , allocatable :: root(:)
3809 complex(CKG) , intent(in) , contiguous :: coef(0:)
3810 end function
3811#endif
3812
3813 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3814
3815#if RK5_ENABLED
3816 module function getPolyRootDef_RK5_CK5(coef) result(root)
3817#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3818 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_RK5_CK5
3819#endif
3820 use pm_kind, only: RKG => RK5
3821 complex(RKG) , allocatable :: root(:)
3822 real(RKG) , intent(in) , contiguous :: coef(0:)
3823 end function
3824#endif
3825
3826#if RK4_ENABLED
3827 module function getPolyRootDef_RK4_CK4(coef) result(root)
3828#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3829 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_RK4_CK4
3830#endif
3831 use pm_kind, only: RKG => RK4
3832 complex(RKG) , allocatable :: root(:)
3833 real(RKG) , intent(in) , contiguous :: coef(0:)
3834 end function
3835#endif
3836
3837#if RK3_ENABLED
3838 module function getPolyRootDef_RK3_CK3(coef) result(root)
3839#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3840 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_RK3_CK3
3841#endif
3842 use pm_kind, only: RKG => RK3
3843 complex(RKG) , allocatable :: root(:)
3844 real(RKG) , intent(in) , contiguous :: coef(0:)
3845 end function
3846#endif
3847
3848#if RK2_ENABLED
3849 module function getPolyRootDef_RK2_CK2(coef) result(root)
3850#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3851 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_RK2_CK2
3852#endif
3853 use pm_kind, only: RKG => RK2
3854 complex(RKG) , allocatable :: root(:)
3855 real(RKG) , intent(in) , contiguous :: coef(0:)
3856 end function
3857#endif
3858
3859#if RK1_ENABLED
3860 module function getPolyRootDef_RK1_CK1(coef) result(root)
3861#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3862 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootDef_RK1_CK1
3863#endif
3864 use pm_kind, only: RKG => RK1
3865 complex(RKG) , allocatable :: root(:)
3866 real(RKG) , intent(in) , contiguous :: coef(0:)
3867 end function
3868#endif
3869
3870 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3871
3872 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3873 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3874 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3875
3876 end interface
3877
3878 ! Eigenvalue method.
3879
3880 interface getPolyRoot
3881
3882 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3883 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3884 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3885
3886 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3887
3888#if CK5_ENABLED
3889 module function getPolyRootEig_CK5_CK5(coef, method) result(root)
3890#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3891 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_CK5_CK5
3892#endif
3893 use pm_kind, only: CKG => CK5
3894 complex(CKG) , allocatable :: root(:)
3895 complex(CKG) , intent(in) , contiguous :: coef(0:)
3896 type(eigen_type) , intent(in) :: method
3897 end function
3898#endif
3899
3900#if CK4_ENABLED
3901 module function getPolyRootEig_CK4_CK4(coef, method) result(root)
3902#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3903 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_CK4_CK4
3904#endif
3905 use pm_kind, only: CKG => CK4
3906 complex(CKG) , allocatable :: root(:)
3907 complex(CKG) , intent(in) , contiguous :: coef(0:)
3908 type(eigen_type) , intent(in) :: method
3909 end function
3910#endif
3911
3912#if CK3_ENABLED
3913 module function getPolyRootEig_CK3_CK3(coef, method) result(root)
3914#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3915 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_CK3_CK3
3916#endif
3917 use pm_kind, only: CKG => CK3
3918 complex(CKG) , allocatable :: root(:)
3919 complex(CKG) , intent(in) , contiguous :: coef(0:)
3920 type(eigen_type) , intent(in) :: method
3921 end function
3922#endif
3923
3924#if CK2_ENABLED
3925 module function getPolyRootEig_CK2_CK2(coef, method) result(root)
3926#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3927 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_CK2_CK2
3928#endif
3929 use pm_kind, only: CKG => CK2
3930 complex(CKG) , allocatable :: root(:)
3931 complex(CKG) , intent(in) , contiguous :: coef(0:)
3932 type(eigen_type) , intent(in) :: method
3933 end function
3934#endif
3935
3936#if CK1_ENABLED
3937 module function getPolyRootEig_CK1_CK1(coef, method) result(root)
3938#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3939 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_CK1_CK1
3940#endif
3941 use pm_kind, only: CKG => CK1
3942 complex(CKG) , allocatable :: root(:)
3943 complex(CKG) , intent(in) , contiguous :: coef(0:)
3944 type(eigen_type) , intent(in) :: method
3945 end function
3946#endif
3947
3948 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3949
3950#if RK5_ENABLED
3951 module function getPolyRootEig_RK5_CK5(coef, method) result(root)
3952#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3953 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_RK5_CK5
3954#endif
3955 use pm_kind, only: RKG => RK5
3956 complex(RKG) , allocatable :: root(:)
3957 real(RKG) , intent(in) , contiguous :: coef(0:)
3958 type(eigen_type) , intent(in) :: method
3959 end function
3960#endif
3961
3962#if RK4_ENABLED
3963 module function getPolyRootEig_RK4_CK4(coef, method) result(root)
3964#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3965 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_RK4_CK4
3966#endif
3967 use pm_kind, only: RKG => RK4
3968 complex(RKG) , allocatable :: root(:)
3969 real(RKG) , intent(in) , contiguous :: coef(0:)
3970 type(eigen_type) , intent(in) :: method
3971 end function
3972#endif
3973
3974#if RK3_ENABLED
3975 module function getPolyRootEig_RK3_CK3(coef, method) result(root)
3976#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3977 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_RK3_CK3
3978#endif
3979 use pm_kind, only: RKG => RK3
3980 complex(RKG) , allocatable :: root(:)
3981 real(RKG) , intent(in) , contiguous :: coef(0:)
3982 type(eigen_type) , intent(in) :: method
3983 end function
3984#endif
3985
3986#if RK2_ENABLED
3987 module function getPolyRootEig_RK2_CK2(coef, method) result(root)
3988#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3989 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_RK2_CK2
3990#endif
3991 use pm_kind, only: RKG => RK2
3992 complex(RKG) , allocatable :: root(:)
3993 real(RKG) , intent(in) , contiguous :: coef(0:)
3994 type(eigen_type) , intent(in) :: method
3995 end function
3996#endif
3997
3998#if RK1_ENABLED
3999 module function getPolyRootEig_RK1_CK1(coef, method) result(root)
4000#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4001 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootEig_RK1_CK1
4002#endif
4003 use pm_kind, only: RKG => RK1
4004 complex(RKG) , allocatable :: root(:)
4005 real(RKG) , intent(in) , contiguous :: coef(0:)
4006 type(eigen_type) , intent(in) :: method
4007 end function
4008#endif
4009
4010 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4011
4012 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4013 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4014 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4015
4016 end interface
4017
4018 ! Jenkins-Traub method.
4019
4020 interface getPolyRoot
4021
4022 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4023 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4024 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4025
4026 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4027
4028#if CK5_ENABLED
4029 module function getPolyRootJen_CK5_CK5(coef, method) result(root)
4030#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4031 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_CK5_CK5
4032#endif
4033 use pm_kind, only: CKG => CK5
4034 complex(CKG) , allocatable :: root(:)
4035 complex(CKG) , intent(in) , contiguous :: coef(0:)
4036 type(jenkins_type) , intent(in) :: method
4037 end function
4038#endif
4039
4040#if CK4_ENABLED
4041 module function getPolyRootJen_CK4_CK4(coef, method) result(root)
4042#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4043 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_CK4_CK4
4044#endif
4045 use pm_kind, only: CKG => CK4
4046 complex(CKG) , allocatable :: root(:)
4047 complex(CKG) , intent(in) , contiguous :: coef(0:)
4048 type(jenkins_type) , intent(in) :: method
4049 end function
4050#endif
4051
4052#if CK3_ENABLED
4053 module function getPolyRootJen_CK3_CK3(coef, method) result(root)
4054#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4055 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_CK3_CK3
4056#endif
4057 use pm_kind, only: CKG => CK3
4058 complex(CKG) , allocatable :: root(:)
4059 complex(CKG) , intent(in) , contiguous :: coef(0:)
4060 type(jenkins_type) , intent(in) :: method
4061 end function
4062#endif
4063
4064#if CK2_ENABLED
4065 module function getPolyRootJen_CK2_CK2(coef, method) result(root)
4066#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4067 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_CK2_CK2
4068#endif
4069 use pm_kind, only: CKG => CK2
4070 complex(CKG) , allocatable :: root(:)
4071 complex(CKG) , intent(in) , contiguous :: coef(0:)
4072 type(jenkins_type) , intent(in) :: method
4073 end function
4074#endif
4075
4076#if CK1_ENABLED
4077 module function getPolyRootJen_CK1_CK1(coef, method) result(root)
4078#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4079 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_CK1_CK1
4080#endif
4081 use pm_kind, only: CKG => CK1
4082 complex(CKG) , allocatable :: root(:)
4083 complex(CKG) , intent(in) , contiguous :: coef(0:)
4084 type(jenkins_type) , intent(in) :: method
4085 end function
4086#endif
4087
4088 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4089
4090#if RK5_ENABLED
4091 module function getPolyRootJen_RK5_CK5(coef, method) result(root)
4092#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4093 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_RK5_CK5
4094#endif
4095 use pm_kind, only: RKG => RK5
4096 complex(RKG) , allocatable :: root(:)
4097 real(RKG) , intent(in) , contiguous :: coef(0:)
4098 type(jenkins_type) , intent(in) :: method
4099 end function
4100#endif
4101
4102#if RK4_ENABLED
4103 module function getPolyRootJen_RK4_CK4(coef, method) result(root)
4104#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4105 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_RK4_CK4
4106#endif
4107 use pm_kind, only: RKG => RK4
4108 complex(RKG) , allocatable :: root(:)
4109 real(RKG) , intent(in) , contiguous :: coef(0:)
4110 type(jenkins_type) , intent(in) :: method
4111 end function
4112#endif
4113
4114#if RK3_ENABLED
4115 module function getPolyRootJen_RK3_CK3(coef, method) result(root)
4116#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4117 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_RK3_CK3
4118#endif
4119 use pm_kind, only: RKG => RK3
4120 complex(RKG) , allocatable :: root(:)
4121 real(RKG) , intent(in) , contiguous :: coef(0:)
4122 type(jenkins_type) , intent(in) :: method
4123 end function
4124#endif
4125
4126#if RK2_ENABLED
4127 module function getPolyRootJen_RK2_CK2(coef, method) result(root)
4128#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4129 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_RK2_CK2
4130#endif
4131 use pm_kind, only: RKG => RK2
4132 complex(RKG) , allocatable :: root(:)
4133 real(RKG) , intent(in) , contiguous :: coef(0:)
4134 type(jenkins_type) , intent(in) :: method
4135 end function
4136#endif
4137
4138#if RK1_ENABLED
4139 module function getPolyRootJen_RK1_CK1(coef, method) result(root)
4140#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4141 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootJen_RK1_CK1
4142#endif
4143 use pm_kind, only: RKG => RK1
4144 complex(RKG) , allocatable :: root(:)
4145 real(RKG) , intent(in) , contiguous :: coef(0:)
4146 type(jenkins_type) , intent(in) :: method
4147 end function
4148#endif
4149
4150 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4151
4152 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4153 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4154 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4155
4156 end interface
4157
4158 ! Laguerre method.
4159
4160 interface getPolyRoot
4161
4162 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4163 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4164 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4165
4166 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4167
4168#if CK5_ENABLED
4169 module function getPolyRootLag_CK5_CK5(coef, method) result(root)
4170#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4171 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_CK5_CK5
4172#endif
4173 use pm_kind, only: CKG => CK5
4174 complex(CKG) , allocatable :: root(:)
4175 complex(CKG) , intent(in) , contiguous :: coef(0:)
4176 type(laguerre_type) , intent(in) :: method
4177 end function
4178#endif
4179
4180#if CK4_ENABLED
4181 module function getPolyRootLag_CK4_CK4(coef, method) result(root)
4182#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4183 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_CK4_CK4
4184#endif
4185 use pm_kind, only: CKG => CK4
4186 complex(CKG) , allocatable :: root(:)
4187 complex(CKG) , intent(in) , contiguous :: coef(0:)
4188 type(laguerre_type) , intent(in) :: method
4189 end function
4190#endif
4191
4192#if CK3_ENABLED
4193 module function getPolyRootLag_CK3_CK3(coef, method) result(root)
4194#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4195 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_CK3_CK3
4196#endif
4197 use pm_kind, only: CKG => CK3
4198 complex(CKG) , allocatable :: root(:)
4199 complex(CKG) , intent(in) , contiguous :: coef(0:)
4200 type(laguerre_type) , intent(in) :: method
4201 end function
4202#endif
4203
4204#if CK2_ENABLED
4205 module function getPolyRootLag_CK2_CK2(coef, method) result(root)
4206#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4207 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_CK2_CK2
4208#endif
4209 use pm_kind, only: CKG => CK2
4210 complex(CKG) , allocatable :: root(:)
4211 complex(CKG) , intent(in) , contiguous :: coef(0:)
4212 type(laguerre_type) , intent(in) :: method
4213 end function
4214#endif
4215
4216#if CK1_ENABLED
4217 module function getPolyRootLag_CK1_CK1(coef, method) result(root)
4218#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4219 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_CK1_CK1
4220#endif
4221 use pm_kind, only: CKG => CK1
4222 complex(CKG) , allocatable :: root(:)
4223 complex(CKG) , intent(in) , contiguous :: coef(0:)
4224 type(laguerre_type) , intent(in) :: method
4225 end function
4226#endif
4227
4228 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4229
4230#if RK5_ENABLED
4231 module function getPolyRootLag_RK5_CK5(coef, method) result(root)
4232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4233 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_RK5_CK5
4234#endif
4235 use pm_kind, only: RKG => RK5
4236 complex(RKG) , allocatable :: root(:)
4237 real(RKG) , intent(in) , contiguous :: coef(0:)
4238 type(laguerre_type) , intent(in) :: method
4239 end function
4240#endif
4241
4242#if RK4_ENABLED
4243 module function getPolyRootLag_RK4_CK4(coef, method) result(root)
4244#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4245 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_RK4_CK4
4246#endif
4247 use pm_kind, only: RKG => RK4
4248 complex(RKG) , allocatable :: root(:)
4249 real(RKG) , intent(in) , contiguous :: coef(0:)
4250 type(laguerre_type) , intent(in) :: method
4251 end function
4252#endif
4253
4254#if RK3_ENABLED
4255 module function getPolyRootLag_RK3_CK3(coef, method) result(root)
4256#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4257 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_RK3_CK3
4258#endif
4259 use pm_kind, only: RKG => RK3
4260 complex(RKG) , allocatable :: root(:)
4261 real(RKG) , intent(in) , contiguous :: coef(0:)
4262 type(laguerre_type) , intent(in) :: method
4263 end function
4264#endif
4265
4266#if RK2_ENABLED
4267 module function getPolyRootLag_RK2_CK2(coef, method) result(root)
4268#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4269 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_RK2_CK2
4270#endif
4271 use pm_kind, only: RKG => RK2
4272 complex(RKG) , allocatable :: root(:)
4273 real(RKG) , intent(in) , contiguous :: coef(0:)
4274 type(laguerre_type) , intent(in) :: method
4275 end function
4276#endif
4277
4278#if RK1_ENABLED
4279 module function getPolyRootLag_RK1_CK1(coef, method) result(root)
4280#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4281 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootLag_RK1_CK1
4282#endif
4283 use pm_kind, only: RKG => RK1
4284 complex(RKG) , allocatable :: root(:)
4285 real(RKG) , intent(in) , contiguous :: coef(0:)
4286 type(laguerre_type) , intent(in) :: method
4287 end function
4288#endif
4289
4290 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4291
4292 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4293 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4294 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4295
4296 end interface
4297
4298 ! Skowron-Gould method.
4299
4300 interface getPolyRoot
4301
4302 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4303 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4304 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4305
4306 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4307
4308#if CK5_ENABLED
4309 module function getPolyRootSGL_CK5_CK5(coef, method) result(root)
4310#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4311 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_CK5_CK5
4312#endif
4313 use pm_kind, only: CKG => CK5
4314 complex(CKG) , allocatable :: root(:)
4315 complex(CKG) , intent(in) , contiguous :: coef(:)
4316 type(sgl_type) , intent(in) :: method
4317 end function
4318#endif
4319
4320#if CK4_ENABLED
4321 module function getPolyRootSGL_CK4_CK4(coef, method) result(root)
4322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4323 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_CK4_CK4
4324#endif
4325 use pm_kind, only: CKG => CK4
4326 complex(CKG) , allocatable :: root(:)
4327 complex(CKG) , intent(in) , contiguous :: coef(:)
4328 type(sgl_type) , intent(in) :: method
4329 end function
4330#endif
4331
4332#if CK3_ENABLED
4333 module function getPolyRootSGL_CK3_CK3(coef, method) result(root)
4334#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4335 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_CK3_CK3
4336#endif
4337 use pm_kind, only: CKG => CK3
4338 complex(CKG) , allocatable :: root(:)
4339 complex(CKG) , intent(in) , contiguous :: coef(:)
4340 type(sgl_type) , intent(in) :: method
4341 end function
4342#endif
4343
4344#if CK2_ENABLED
4345 module function getPolyRootSGL_CK2_CK2(coef, method) result(root)
4346#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4347 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_CK2_CK2
4348#endif
4349 use pm_kind, only: CKG => CK2
4350 complex(CKG) , allocatable :: root(:)
4351 complex(CKG) , intent(in) , contiguous :: coef(:)
4352 type(sgl_type) , intent(in) :: method
4353 end function
4354#endif
4355
4356#if CK1_ENABLED
4357 module function getPolyRootSGL_CK1_CK1(coef, method) result(root)
4358#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4359 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_CK1_CK1
4360#endif
4361 use pm_kind, only: CKG => CK1
4362 complex(CKG) , allocatable :: root(:)
4363 complex(CKG) , intent(in) , contiguous :: coef(:)
4364 type(sgl_type) , intent(in) :: method
4365 end function
4366#endif
4367
4368 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4369
4370#if RK5_ENABLED
4371 module function getPolyRootSGL_RK5_CK5(coef, method) result(root)
4372#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4373 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_RK5_CK5
4374#endif
4375 use pm_kind, only: RKG => RK5
4376 complex(RKG) , allocatable :: root(:)
4377 real(RKG) , intent(in) , contiguous :: coef(:)
4378 type(sgl_type) , intent(in) :: method
4379 end function
4380#endif
4381
4382#if RK4_ENABLED
4383 module function getPolyRootSGL_RK4_CK4(coef, method) result(root)
4384#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4385 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_RK4_CK4
4386#endif
4387 use pm_kind, only: RKG => RK4
4388 complex(RKG) , allocatable :: root(:)
4389 real(RKG) , intent(in) , contiguous :: coef(:)
4390 type(sgl_type) , intent(in) :: method
4391 end function
4392#endif
4393
4394#if RK3_ENABLED
4395 module function getPolyRootSGL_RK3_CK3(coef, method) result(root)
4396#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4397 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_RK3_CK3
4398#endif
4399 use pm_kind, only: RKG => RK3
4400 complex(RKG) , allocatable :: root(:)
4401 real(RKG) , intent(in) , contiguous :: coef(:)
4402 type(sgl_type) , intent(in) :: method
4403 end function
4404#endif
4405
4406#if RK2_ENABLED
4407 module function getPolyRootSGL_RK2_CK2(coef, method) result(root)
4408#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4409 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_RK2_CK2
4410#endif
4411 use pm_kind, only: RKG => RK2
4412 complex(RKG) , allocatable :: root(:)
4413 real(RKG) , intent(in) , contiguous :: coef(:)
4414 type(sgl_type) , intent(in) :: method
4415 end function
4416#endif
4417
4418#if RK1_ENABLED
4419 module function getPolyRootSGL_RK1_CK1(coef, method) result(root)
4420#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4421 !DEC$ ATTRIBUTES DLLEXPORT :: getPolyRootSGL_RK1_CK1
4422#endif
4423 use pm_kind, only: RKG => RK1
4424 complex(RKG) , allocatable :: root(:)
4425 real(RKG) , intent(in) , contiguous :: coef(:)
4426 type(sgl_type) , intent(in) :: method
4427 end function
4428#endif
4429
4430 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4431
4432 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4433 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4434 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4435
4436 end interface
4437
4438!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4439
4440 ! \param[out] workspace : The output matrix of shape `(size(coef) - 1, size(coef) - 1)`,
4441 ! of the same type and kind as `coef` that is used exclusively for scratch work when the Eigenvalue root-finding method is used.<br>
4442 ! The specified storage will be used to construct the Upper Hessenberg Companion Matrix of the polynomial.<br>
4443 ! Specifying this argument can lead to faster runtimes for repeated calls to this generic interface.<br>
4444 ! On output, the companion matrix is completely destroyed before return.<br>
4445 ! As such, its contents are useless.<br>
4446 ! (**optional**, it can be present only if the input argument `method` is set to `eigen`.)
4447
4616
4617 ! Eigenvalue method.
4618
4619 interface setPolyRoot
4620
4621 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4622
4623#if CK5_ENABLED
4624 module subroutine setPolyRootEig_CK5_CK5(root, count, coef, method) !, workspace)
4625#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4626 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_CK5_CK5
4627#endif
4628 use pm_kind, only: CKG => CK5
4629 complex(CKG) , intent(in) , contiguous :: coef(0:)
4630 !complex(CKG) , intent(out) , contiguous :: workspace(:,:)
4631 complex(CKG) , intent(out) , contiguous :: root(:)
4632 integer(IK) , intent(out) :: count
4633 type(eigen_type) , intent(in) :: method
4634 end subroutine
4635#endif
4636
4637#if CK4_ENABLED
4638 module subroutine setPolyRootEig_CK4_CK4(root, count, coef, method) !, workspace)
4639#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4640 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_CK4_CK4
4641#endif
4642 use pm_kind, only: CKG => CK4
4643 complex(CKG) , intent(in) , contiguous :: coef(0:)
4644 !complex(CKG) , intent(out) , contiguous :: workspace(:,:)
4645 complex(CKG) , intent(out) , contiguous :: root(:)
4646 integer(IK) , intent(out) :: count
4647 type(eigen_type) , intent(in) :: method
4648 end subroutine
4649#endif
4650
4651#if CK3_ENABLED
4652 module subroutine setPolyRootEig_CK3_CK3(root, count, coef, method) !, workspace)
4653#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4654 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_CK3_CK3
4655#endif
4656 use pm_kind, only: CKG => CK3
4657 complex(CKG) , intent(in) , contiguous :: coef(0:)
4658 !complex(CKG) , intent(out) , contiguous :: workspace(:,:)
4659 complex(CKG) , intent(out) , contiguous :: root(:)
4660 integer(IK) , intent(out) :: count
4661 type(eigen_type) , intent(in) :: method
4662 end subroutine
4663#endif
4664
4665#if CK2_ENABLED
4666 module subroutine setPolyRootEig_CK2_CK2(root, count, coef, method) !, workspace)
4667#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4668 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_CK2_CK2
4669#endif
4670 use pm_kind, only: CKG => CK2
4671 complex(CKG) , intent(in) , contiguous :: coef(0:)
4672 !complex(CKG) , intent(out) , contiguous :: workspace(:,:)
4673 complex(CKG) , intent(out) , contiguous :: root(:)
4674 integer(IK) , intent(out) :: count
4675 type(eigen_type) , intent(in) :: method
4676 end subroutine
4677#endif
4678
4679#if CK1_ENABLED
4680 module subroutine setPolyRootEig_CK1_CK1(root, count, coef, method) !, workspace)
4681#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4682 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_CK1_CK1
4683#endif
4684 use pm_kind, only: CKG => CK1
4685 complex(CKG) , intent(in) , contiguous :: coef(0:)
4686 !complex(CKG) , intent(out) , contiguous :: workspace(:,:)
4687 complex(CKG) , intent(out) , contiguous :: root(:)
4688 integer(IK) , intent(out) :: count
4689 type(eigen_type) , intent(in) :: method
4690 end subroutine
4691#endif
4692
4693 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4694
4695#if RK5_ENABLED
4696 module subroutine setPolyRootEig_RK5_CK5(root, count, coef, method) !, workspace)
4697#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4698 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_RK5_CK5
4699#endif
4700 use pm_kind, only: RKG => RK5
4701 real(RKG) , intent(in) , contiguous :: coef(0:)
4702 !real(RKG) , intent(out) , contiguous :: workspace(:,:)
4703 complex(RKG) , intent(out) , contiguous :: root(:)
4704 integer(IK) , intent(out) :: count
4705 type(eigen_type) , intent(in) :: method
4706 end subroutine
4707#endif
4708
4709#if RK4_ENABLED
4710 module subroutine setPolyRootEig_RK4_CK4(root, count, coef, method) !, workspace)
4711#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4712 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_RK4_CK4
4713#endif
4714 use pm_kind, only: RKG => RK4
4715 real(RKG) , intent(in) , contiguous :: coef(0:)
4716 !real(RKG) , intent(out) , contiguous :: workspace(:,:)
4717 complex(RKG) , intent(out) , contiguous :: root(:)
4718 integer(IK) , intent(out) :: count
4719 type(eigen_type) , intent(in) :: method
4720 end subroutine
4721#endif
4722
4723#if RK3_ENABLED
4724 module subroutine setPolyRootEig_RK3_CK3(root, count, coef, method) !, workspace)
4725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4726 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_RK3_CK3
4727#endif
4728 use pm_kind, only: RKG => RK3
4729 real(RKG) , intent(in) , contiguous :: coef(0:)
4730 !real(RKG) , intent(out) , contiguous :: workspace(:,:)
4731 complex(RKG) , intent(out) , contiguous :: root(:)
4732 integer(IK) , intent(out) :: count
4733 type(eigen_type) , intent(in) :: method
4734 end subroutine
4735#endif
4736
4737#if RK2_ENABLED
4738 module subroutine setPolyRootEig_RK2_CK2(root, count, coef, method) !, workspace)
4739#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4740 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_RK2_CK2
4741#endif
4742 use pm_kind, only: RKG => RK2
4743 real(RKG) , intent(in) , contiguous :: coef(0:)
4744 !real(RKG) , intent(out) , contiguous :: workspace(:,:)
4745 complex(RKG) , intent(out) , contiguous :: root(:)
4746 integer(IK) , intent(out) :: count
4747 type(eigen_type) , intent(in) :: method
4748 end subroutine
4749#endif
4750
4751#if RK1_ENABLED
4752 module subroutine setPolyRootEig_RK1_CK1(root, count, coef, method) !, workspace)
4753#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4754 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootEig_RK1_CK1
4755#endif
4756 use pm_kind, only: RKG => RK1
4757 real(RKG) , intent(in) , contiguous :: coef(0:)
4758 !real(RKG) , intent(out) , contiguous :: workspace(:,:)
4759 complex(RKG) , intent(out) , contiguous :: root(:)
4760 integer(IK) , intent(out) :: count
4761 type(eigen_type) , intent(in) :: method
4762 end subroutine
4763#endif
4764
4765 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4766
4767 end interface
4768
4769 ! Jenkins-Traub method.
4770
4771 interface setPolyRoot
4772
4773 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4774
4775#if CK5_ENABLED
4776 module subroutine setPolyRootJen_CK5_CK5(root, count, coef, method) !, workspace)
4777#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4778 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_CK5_CK5
4779#endif
4780 use pm_kind, only: CKG => CK5
4781 complex(CKG) , intent(in) , contiguous :: coef(0:)
4782 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4783 complex(CKG) , intent(out) , contiguous :: root(:)
4784 integer(IK) , intent(out) :: count
4785 type(jenkins_type) , intent(in) :: method
4786 end subroutine
4787#endif
4788
4789#if CK4_ENABLED
4790 module subroutine setPolyRootJen_CK4_CK4(root, count, coef, method) !, workspace)
4791#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4792 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_CK4_CK4
4793#endif
4794 use pm_kind, only: CKG => CK4
4795 complex(CKG) , intent(in) , contiguous :: coef(0:)
4796 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4797 complex(CKG) , intent(out) , contiguous :: root(:)
4798 integer(IK) , intent(out) :: count
4799 type(jenkins_type) , intent(in) :: method
4800 end subroutine
4801#endif
4802
4803#if CK3_ENABLED
4804 module subroutine setPolyRootJen_CK3_CK3(root, count, coef, method) !, workspace)
4805#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4806 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_CK3_CK3
4807#endif
4808 use pm_kind, only: CKG => CK3
4809 complex(CKG) , intent(in) , contiguous :: coef(0:)
4810 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4811 complex(CKG) , intent(out) , contiguous :: root(:)
4812 integer(IK) , intent(out) :: count
4813 type(jenkins_type) , intent(in) :: method
4814 end subroutine
4815#endif
4816
4817#if CK2_ENABLED
4818 module subroutine setPolyRootJen_CK2_CK2(root, count, coef, method) !, workspace)
4819#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4820 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_CK2_CK2
4821#endif
4822 use pm_kind, only: CKG => CK2
4823 complex(CKG) , intent(in) , contiguous :: coef(0:)
4824 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4825 complex(CKG) , intent(out) , contiguous :: root(:)
4826 integer(IK) , intent(out) :: count
4827 type(jenkins_type) , intent(in) :: method
4828 end subroutine
4829#endif
4830
4831#if CK1_ENABLED
4832 module subroutine setPolyRootJen_CK1_CK1(root, count, coef, method) !, workspace)
4833#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4834 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_CK1_CK1
4835#endif
4836 use pm_kind, only: CKG => CK1
4837 complex(CKG) , intent(in) , contiguous :: coef(0:)
4838 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4839 complex(CKG) , intent(out) , contiguous :: root(:)
4840 integer(IK) , intent(out) :: count
4841 type(jenkins_type) , intent(in) :: method
4842 end subroutine
4843#endif
4844
4845 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4846
4847#if RK5_ENABLED
4848 module subroutine setPolyRootJen_RK5_CK5(root, count, coef, method) !, workspace)
4849#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4850 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_RK5_CK5
4851#endif
4852 use pm_kind, only: RKG => RK5
4853 real(RKG) , intent(in) , contiguous :: coef(0:)
4854 !real(RKG) , intent(out) , contiguous :: workspace(:)
4855 complex(RKG) , intent(out) , contiguous :: root(:)
4856 integer(IK) , intent(out) :: count
4857 type(jenkins_type) , intent(in) :: method
4858 end subroutine
4859#endif
4860
4861#if RK4_ENABLED
4862 module subroutine setPolyRootJen_RK4_CK4(root, count, coef, method) !, workspace)
4863#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4864 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_RK4_CK4
4865#endif
4866 use pm_kind, only: RKG => RK4
4867 real(RKG) , intent(in) , contiguous :: coef(0:)
4868 !real(RKG) , intent(out) , contiguous :: workspace(:)
4869 complex(RKG) , intent(out) , contiguous :: root(:)
4870 integer(IK) , intent(out) :: count
4871 type(jenkins_type) , intent(in) :: method
4872 end subroutine
4873#endif
4874
4875#if RK3_ENABLED
4876 module subroutine setPolyRootJen_RK3_CK3(root, count, coef, method) !, workspace)
4877#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4878 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_RK3_CK3
4879#endif
4880 use pm_kind, only: RKG => RK3
4881 real(RKG) , intent(in) , contiguous :: coef(0:)
4882 !real(RKG) , intent(out) , contiguous :: workspace(:)
4883 complex(RKG) , intent(out) , contiguous :: root(:)
4884 integer(IK) , intent(out) :: count
4885 type(jenkins_type) , intent(in) :: method
4886 end subroutine
4887#endif
4888
4889#if RK2_ENABLED
4890 module subroutine setPolyRootJen_RK2_CK2(root, count, coef, method) !, workspace)
4891#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4892 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_RK2_CK2
4893#endif
4894 use pm_kind, only: RKG => RK2
4895 real(RKG) , intent(in) , contiguous :: coef(0:)
4896 !real(RKG) , intent(out) , contiguous :: workspace(:)
4897 complex(RKG) , intent(out) , contiguous :: root(:)
4898 integer(IK) , intent(out) :: count
4899 type(jenkins_type) , intent(in) :: method
4900 end subroutine
4901#endif
4902
4903#if RK1_ENABLED
4904 module subroutine setPolyRootJen_RK1_CK1(root, count, coef, method) !, workspace)
4905#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4906 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootJen_RK1_CK1
4907#endif
4908 use pm_kind, only: RKG => RK1
4909 real(RKG) , intent(in) , contiguous :: coef(0:)
4910 !real(RKG) , intent(out) , contiguous :: workspace(:)
4911 complex(RKG) , intent(out) , contiguous :: root(:)
4912 integer(IK) , intent(out) :: count
4913 type(jenkins_type) , intent(in) :: method
4914 end subroutine
4915#endif
4916
4917 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4918
4919 end interface
4920
4921 ! Laguerre method.
4922
4923 interface setPolyRoot
4924
4925 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4926
4927#if CK5_ENABLED
4928 module subroutine setPolyRootLag_CK5_CK5(root, count, coef, method) !, workspace)
4929#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4930 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_CK5_CK5
4931#endif
4932 use pm_kind, only: CKG => CK5
4933 complex(CKG) , intent(in) , contiguous :: coef(0:)
4934 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4935 complex(CKG) , intent(out) , contiguous :: root(:)
4936 integer(IK) , intent(out) :: count
4937 type(laguerre_type) , intent(in) :: method
4938 end subroutine
4939#endif
4940
4941#if CK4_ENABLED
4942 module subroutine setPolyRootLag_CK4_CK4(root, count, coef, method) !, workspace)
4943#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4944 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_CK4_CK4
4945#endif
4946 use pm_kind, only: CKG => CK4
4947 complex(CKG) , intent(in) , contiguous :: coef(0:)
4948 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4949 complex(CKG) , intent(out) , contiguous :: root(:)
4950 integer(IK) , intent(out) :: count
4951 type(laguerre_type) , intent(in) :: method
4952 end subroutine
4953#endif
4954
4955#if CK3_ENABLED
4956 module subroutine setPolyRootLag_CK3_CK3(root, count, coef, method) !, workspace)
4957#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4958 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_CK3_CK3
4959#endif
4960 use pm_kind, only: CKG => CK3
4961 complex(CKG) , intent(in) , contiguous :: coef(0:)
4962 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4963 complex(CKG) , intent(out) , contiguous :: root(:)
4964 integer(IK) , intent(out) :: count
4965 type(laguerre_type) , intent(in) :: method
4966 end subroutine
4967#endif
4968
4969#if CK2_ENABLED
4970 module subroutine setPolyRootLag_CK2_CK2(root, count, coef, method) !, workspace)
4971#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4972 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_CK2_CK2
4973#endif
4974 use pm_kind, only: CKG => CK2
4975 complex(CKG) , intent(in) , contiguous :: coef(0:)
4976 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4977 complex(CKG) , intent(out) , contiguous :: root(:)
4978 integer(IK) , intent(out) :: count
4979 type(laguerre_type) , intent(in) :: method
4980 end subroutine
4981#endif
4982
4983#if CK1_ENABLED
4984 module subroutine setPolyRootLag_CK1_CK1(root, count, coef, method) !, workspace)
4985#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4986 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_CK1_CK1
4987#endif
4988 use pm_kind, only: CKG => CK1
4989 complex(CKG) , intent(in) , contiguous :: coef(0:)
4990 !complex(CKG) , intent(out) , contiguous :: workspace(:)
4991 complex(CKG) , intent(out) , contiguous :: root(:)
4992 integer(IK) , intent(out) :: count
4993 type(laguerre_type) , intent(in) :: method
4994 end subroutine
4995#endif
4996
4997 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4998
4999#if RK5_ENABLED
5000 module subroutine setPolyRootLag_RK5_CK5(root, count, coef, method) !, workspace)
5001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5002 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_RK5_CK5
5003#endif
5004 use pm_kind, only: RKG => RK5
5005 real(RKG) , intent(in) , contiguous :: coef(0:)
5006 !real(RKG) , intent(out) , contiguous :: workspace(:)
5007 complex(RKG) , intent(out) , contiguous :: root(:)
5008 integer(IK) , intent(out) :: count
5009 type(laguerre_type) , intent(in) :: method
5010 end subroutine
5011#endif
5012
5013#if RK4_ENABLED
5014 module subroutine setPolyRootLag_RK4_CK4(root, count, coef, method) !, workspace)
5015#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5016 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_RK4_CK4
5017#endif
5018 use pm_kind, only: RKG => RK4
5019 real(RKG) , intent(in) , contiguous :: coef(0:)
5020 !real(RKG) , intent(out) , contiguous :: workspace(:)
5021 complex(RKG) , intent(out) , contiguous :: root(:)
5022 integer(IK) , intent(out) :: count
5023 type(laguerre_type) , intent(in) :: method
5024 end subroutine
5025#endif
5026
5027#if RK3_ENABLED
5028 module subroutine setPolyRootLag_RK3_CK3(root, count, coef, method) !, workspace)
5029#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5030 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_RK3_CK3
5031#endif
5032 use pm_kind, only: RKG => RK3
5033 real(RKG) , intent(in) , contiguous :: coef(0:)
5034 !real(RKG) , intent(out) , contiguous :: workspace(:)
5035 complex(RKG) , intent(out) , contiguous :: root(:)
5036 integer(IK) , intent(out) :: count
5037 type(laguerre_type) , intent(in) :: method
5038 end subroutine
5039#endif
5040
5041#if RK2_ENABLED
5042 module subroutine setPolyRootLag_RK2_CK2(root, count, coef, method) !, workspace)
5043#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5044 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_RK2_CK2
5045#endif
5046 use pm_kind, only: RKG => RK2
5047 real(RKG) , intent(in) , contiguous :: coef(0:)
5048 !real(RKG) , intent(out) , contiguous :: workspace(:)
5049 complex(RKG) , intent(out) , contiguous :: root(:)
5050 integer(IK) , intent(out) :: count
5051 type(laguerre_type) , intent(in) :: method
5052 end subroutine
5053#endif
5054
5055#if RK1_ENABLED
5056 module subroutine setPolyRootLag_RK1_CK1(root, count, coef, method) !, workspace)
5057#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5058 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootLag_RK1_CK1
5059#endif
5060 use pm_kind, only: RKG => RK1
5061 real(RKG) , intent(in) , contiguous :: coef(0:)
5062 !real(RKG) , intent(out) , contiguous :: workspace(:)
5063 complex(RKG) , intent(out) , contiguous :: root(:)
5064 integer(IK) , intent(out) :: count
5065 type(laguerre_type) , intent(in) :: method
5066 end subroutine
5067#endif
5068
5069 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5070
5071 end interface
5072
5073 ! Skowron-Gould method.
5074
5075 interface setPolyRoot
5076
5077 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5078
5079#if CK5_ENABLED
5080 module subroutine setPolyRootSGL_CK5_CK5(root, count, coef, method)
5081#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5082 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_CK5_CK5
5083#endif
5084 use pm_kind, only: CKG => CK5
5085 complex(CKG) , intent(in) , contiguous :: coef(:)
5086 complex(CKG) , intent(inout) , contiguous :: root(:)
5087 integer(IK) , intent(out) :: count
5088 type(sgl_type) , intent(in) :: method
5089 end subroutine
5090#endif
5091
5092#if CK4_ENABLED
5093 module subroutine setPolyRootSGL_CK4_CK4(root, count, coef, method)
5094#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5095 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_CK4_CK4
5096#endif
5097 use pm_kind, only: CKG => CK4
5098 complex(CKG) , intent(in) , contiguous :: coef(:)
5099 complex(CKG) , intent(inout) , contiguous :: root(:)
5100 integer(IK) , intent(out) :: count
5101 type(sgl_type) , intent(in) :: method
5102 end subroutine
5103#endif
5104
5105#if CK3_ENABLED
5106 module subroutine setPolyRootSGL_CK3_CK3(root, count, coef, method)
5107#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5108 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_CK3_CK3
5109#endif
5110 use pm_kind, only: CKG => CK3
5111 complex(CKG) , intent(in) , contiguous :: coef(:)
5112 complex(CKG) , intent(inout) , contiguous :: root(:)
5113 integer(IK) , intent(out) :: count
5114 type(sgl_type) , intent(in) :: method
5115 end subroutine
5116#endif
5117
5118#if CK2_ENABLED
5119 module subroutine setPolyRootSGL_CK2_CK2(root, count, coef, method)
5120#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5121 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_CK2_CK2
5122#endif
5123 use pm_kind, only: CKG => CK2
5124 complex(CKG) , intent(in) , contiguous :: coef(:)
5125 complex(CKG) , intent(inout) , contiguous :: root(:)
5126 integer(IK) , intent(out) :: count
5127 type(sgl_type) , intent(in) :: method
5128 end subroutine
5129#endif
5130
5131#if CK1_ENABLED
5132 module subroutine setPolyRootSGL_CK1_CK1(root, count, coef, method)
5133#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5134 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_CK1_CK1
5135#endif
5136 use pm_kind, only: CKG => CK1
5137 complex(CKG) , intent(in) , contiguous :: coef(:)
5138 complex(CKG) , intent(inout) , contiguous :: root(:)
5139 integer(IK) , intent(out) :: count
5140 type(sgl_type) , intent(in) :: method
5141 end subroutine
5142#endif
5143
5144 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5145
5146#if RK5_ENABLED
5147 module subroutine setPolyRootSGL_RK5_CK5(root, count, coef, method)
5148#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5149 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_RK5_CK5
5150#endif
5151 use pm_kind, only: RKG => RK5
5152 real(RKG) , intent(in) , contiguous :: coef(:)
5153 complex(RKG) , intent(inout) , contiguous :: root(:)
5154 integer(IK) , intent(out) :: count
5155 type(sgl_type) , intent(in) :: method
5156 end subroutine
5157#endif
5158
5159#if RK4_ENABLED
5160 module subroutine setPolyRootSGL_RK4_CK4(root, count, coef, method)
5161#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5162 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_RK4_CK4
5163#endif
5164 use pm_kind, only: RKG => RK4
5165 real(RKG) , intent(in) , contiguous :: coef(:)
5166 complex(RKG) , intent(inout) , contiguous :: root(:)
5167 integer(IK) , intent(out) :: count
5168 type(sgl_type) , intent(in) :: method
5169 end subroutine
5170#endif
5171
5172#if RK3_ENABLED
5173 module subroutine setPolyRootSGL_RK3_CK3(root, count, coef, method)
5174#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5175 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_RK3_CK3
5176#endif
5177 use pm_kind, only: RKG => RK3
5178 real(RKG) , intent(in) , contiguous :: coef(:)
5179 complex(RKG) , intent(inout) , contiguous :: root(:)
5180 integer(IK) , intent(out) :: count
5181 type(sgl_type) , intent(in) :: method
5182 end subroutine
5183#endif
5184
5185#if RK2_ENABLED
5186 module subroutine setPolyRootSGL_RK2_CK2(root, count, coef, method)
5187#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5188 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_RK2_CK2
5189#endif
5190 use pm_kind, only: RKG => RK2
5191 real(RKG) , intent(in) , contiguous :: coef(:)
5192 complex(RKG) , intent(inout) , contiguous :: root(:)
5193 integer(IK) , intent(out) :: count
5194 type(sgl_type) , intent(in) :: method
5195 end subroutine
5196#endif
5197
5198#if RK1_ENABLED
5199 module subroutine setPolyRootSGL_RK1_CK1(root, count, coef, method)
5200#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5201 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootSGL_RK1_CK1
5202#endif
5203 use pm_kind, only: RKG => RK1
5204 real(RKG) , intent(in) , contiguous :: coef(:)
5205 complex(RKG) , intent(inout) , contiguous :: root(:)
5206 integer(IK) , intent(out) :: count
5207 type(sgl_type) , intent(in) :: method
5208 end subroutine
5209#endif
5210
5211 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5212
5213 end interface
5214
5215!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5216
5289
5291
5292 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5293
5294#if CK5_ENABLED
5295 PURE module subroutine setPolyRootPolishedLag_CK5_CK5(root, niter, coef)
5296#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5297 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_CK5_CK5
5298#endif
5299 use pm_kind, only: CKG => CK5
5300 complex(CKG) , intent(in) , contiguous :: coef(0:)
5301 complex(CKG) , intent(inout) :: root
5302 integer(IK) , intent(out) :: niter
5303 end subroutine
5304#endif
5305
5306#if CK4_ENABLED
5307 PURE module subroutine setPolyRootPolishedLag_CK4_CK4(root, niter, coef)
5308#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5309 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_CK4_CK4
5310#endif
5311 use pm_kind, only: CKG => CK4
5312 complex(CKG) , intent(in) , contiguous :: coef(0:)
5313 complex(CKG) , intent(inout) :: root
5314 integer(IK) , intent(out) :: niter
5315 end subroutine
5316#endif
5317
5318#if CK3_ENABLED
5319 PURE module subroutine setPolyRootPolishedLag_CK3_CK3(root, niter, coef)
5320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5321 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_CK3_CK3
5322#endif
5323 use pm_kind, only: CKG => CK3
5324 complex(CKG) , intent(in) , contiguous :: coef(0:)
5325 complex(CKG) , intent(inout) :: root
5326 integer(IK) , intent(out) :: niter
5327 end subroutine
5328#endif
5329
5330#if CK2_ENABLED
5331 PURE module subroutine setPolyRootPolishedLag_CK2_CK2(root, niter, coef)
5332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5333 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_CK2_CK2
5334#endif
5335 use pm_kind, only: CKG => CK2
5336 complex(CKG) , intent(in) , contiguous :: coef(0:)
5337 complex(CKG) , intent(inout) :: root
5338 integer(IK) , intent(out) :: niter
5339 end subroutine
5340#endif
5341
5342#if CK1_ENABLED
5343 PURE module subroutine setPolyRootPolishedLag_CK1_CK1(root, niter, coef)
5344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5345 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_CK1_CK1
5346#endif
5347 use pm_kind, only: CKG => CK1
5348 complex(CKG) , intent(in) , contiguous :: coef(0:)
5349 complex(CKG) , intent(inout) :: root
5350 integer(IK) , intent(out) :: niter
5351 end subroutine
5352#endif
5353
5354 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5355
5356#if RK5_ENABLED
5357 PURE module subroutine setPolyRootPolishedLag_RK5_CK5(root, niter, coef)
5358#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5359 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK5_CK5
5360#endif
5361 use pm_kind, only: RKG => RK5
5362 real(RKG) , intent(in) , contiguous :: coef(0:)
5363 complex(RKG) , intent(inout) :: root
5364 integer(IK) , intent(out) :: niter
5365 end subroutine
5366#endif
5367
5368#if RK4_ENABLED
5369 PURE module subroutine setPolyRootPolishedLag_RK4_CK4(root, niter, coef)
5370#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5371 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK4_CK4
5372#endif
5373 use pm_kind, only: RKG => RK4
5374 real(RKG) , intent(in) , contiguous :: coef(0:)
5375 complex(RKG) , intent(inout) :: root
5376 integer(IK) , intent(out) :: niter
5377 end subroutine
5378#endif
5379
5380#if RK3_ENABLED
5381 PURE module subroutine setPolyRootPolishedLag_RK3_CK3(root, niter, coef)
5382#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5383 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK3_CK3
5384#endif
5385 use pm_kind, only: RKG => RK3
5386 real(RKG) , intent(in) , contiguous :: coef(0:)
5387 complex(RKG) , intent(inout) :: root
5388 integer(IK) , intent(out) :: niter
5389 end subroutine
5390#endif
5391
5392#if RK2_ENABLED
5393 PURE module subroutine setPolyRootPolishedLag_RK2_CK2(root, niter, coef)
5394#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5395 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK2_CK2
5396#endif
5397 use pm_kind, only: RKG => RK2
5398 real(RKG) , intent(in) , contiguous :: coef(0:)
5399 complex(RKG) , intent(inout) :: root
5400 integer(IK) , intent(out) :: niter
5401 end subroutine
5402#endif
5403
5404#if RK1_ENABLED
5405 PURE module subroutine setPolyRootPolishedLag_RK1_CK1(root, niter, coef)
5406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5407 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK1_CK1
5408#endif
5409 use pm_kind, only: RKG => RK1
5410 real(RKG) , intent(in) , contiguous :: coef(0:)
5411 complex(RKG) , intent(inout) :: root
5412 integer(IK) , intent(out) :: niter
5413 end subroutine
5414#endif
5415
5416 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5417
5418#if RK5_ENABLED
5419 PURE module subroutine setPolyRootPolishedLag_RK5_RK5(root, niter, coef)
5420#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5421 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK5_RK5
5422#endif
5423 use pm_kind, only: RKG => RK5
5424 real(RKG) , intent(in) , contiguous :: coef(0:)
5425 real(RKG) , intent(inout) :: root
5426 integer(IK) , intent(out) :: niter
5427 end subroutine
5428#endif
5429
5430#if RK4_ENABLED
5431 PURE module subroutine setPolyRootPolishedLag_RK4_RK4(root, niter, coef)
5432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5433 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK4_RK4
5434#endif
5435 use pm_kind, only: RKG => RK4
5436 real(RKG) , intent(in) , contiguous :: coef(0:)
5437 real(RKG) , intent(inout) :: root
5438 integer(IK) , intent(out) :: niter
5439 end subroutine
5440#endif
5441
5442#if RK3_ENABLED
5443 PURE module subroutine setPolyRootPolishedLag_RK3_RK3(root, niter, coef)
5444#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5445 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK3_RK3
5446#endif
5447 use pm_kind, only: RKG => RK3
5448 real(RKG) , intent(in) , contiguous :: coef(0:)
5449 real(RKG) , intent(inout) :: root
5450 integer(IK) , intent(out) :: niter
5451 end subroutine
5452#endif
5453
5454#if RK2_ENABLED
5455 PURE module subroutine setPolyRootPolishedLag_RK2_RK2(root, niter, coef)
5456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5457 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK2_RK2
5458#endif
5459 use pm_kind, only: RKG => RK2
5460 real(RKG) , intent(in) , contiguous :: coef(0:)
5461 real(RKG) , intent(inout) :: root
5462 integer(IK) , intent(out) :: niter
5463 end subroutine
5464#endif
5465
5466#if RK1_ENABLED
5467 PURE module subroutine setPolyRootPolishedLag_RK1_RK1(root, niter, coef)
5468#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5469 !DEC$ ATTRIBUTES DLLEXPORT :: setPolyRootPolishedLag_RK1_RK1
5470#endif
5471 use pm_kind, only: RKG => RK1
5472 real(RKG) , intent(in) , contiguous :: coef(0:)
5473 real(RKG) , intent(inout) :: root
5474 integer(IK) , intent(out) :: niter
5475 end subroutine
5476#endif
5477
5478 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5479
5480 end interface
5481
5482!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5483
5484end module pm_polynomial ! LCOV_EXCL_LINE
Generate and return the vector of coefficients of the polynomial resulting from the addition of a pol...
Generate and return the vector of coefficients of the polynomial resulting from the th-order differen...
Generate and return the vector of coefficients of the polynomial resulting from the multiplication of...
Generate and return the roots of a polynomial of arbitrary degree specified by its coefficients coef.
Generate and return a string containing the polynomial expression corresponding to the input polynomi...
Generate and return the vector of coefficients of the polynomial resulting from the subtraction of a ...
Generate and return the value of the polynomial of arbitrary degree whose coefficients are specified ...
Return the vector of coefficients of the polynomial resulting from the addition of a polynomial to an...
Return the vector of coefficients of the polynomial resulting from the th-order differentiation of a ...
Return the quotient and remainder of dividing a polynomial with another polynomial of arbitrary degre...
Return the vector of coefficients of the polynomial resulting from the multiplication of a polynomial...
Return the polished (refined) root of a polynomial of arbitrary degree specified by its coefficients ...
Return the roots of a polynomial of arbitrary degree specified by its coefficients coef.
Return the vector of coefficients of the polynomial resulting from the subtraction of a polynomial to...
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 procedures and generic interfaces for performing various mathematical operations...
type(eigen_type), parameter eigen
This is a scalar parameter object of type eigen_type that is exclusively used to signify the use of E...
character(*, SK), parameter MODULE_NAME
type(jenkins_type), parameter jenkins
This is a scalar parameter object of type jenkins_type that is exclusively used to signify the use of...
type(laguerre_type), parameter laguerre
This is a scalar parameter object of type laguerre_type that is exclusively used to signify the use o...
type(sgl_type), parameter sgl
This is a scalar parameter object of type sgl_type that is exclusively used to signify the use of Sko...
This is a concrete derived type whose instances are exclusively used to signify the use of the Eigenv...
This is a concrete derived type whose instances are exclusively used to signify the use of Jenkins-Tr...
This is a concrete derived type whose instances are exclusively used to signify the use of Laguerre m...
This is an abstract derived type for constructing concrete derived types to distinguish various proce...
This is a concrete derived type whose instances are exclusively used to signify the use of Skowron-Go...