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