Changeset e95eaa7 in git for Singular/polys-impl.cc
- Timestamp:
- Mar 21, 2000, 5:21:43 PM (24 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38dfc5131670d387a89455159ed1e071997eec94')
- Children:
- 0146cecb1a3707a7b3ebc3149e2710be6a42f53d
- Parents:
- f6460fc7a087a223a21ebcc2dbe20ecd54a3a0cc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/polys-impl.cc
rf6460f re95eaa7 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: polys-impl.cc,v 1.3 5 2000-02-07 17:21:48Singular Exp $ */4 /* $Id: polys-impl.cc,v 1.36 2000-03-21 16:21:41 Singular Exp $ */ 5 5 6 6 /*************************************************************** … … 30 30 #include "polys-impl.h" 31 31 32 #ifdef HAVE_SHIFTED_EXPONENTS 33 #ifdef PDEBUG 34 int pDBsyzComp=0; 35 #endif 36 #endif 37 32 38 /*************************************************************** 33 39 * … … 745 751 { 746 752 int i; 747 753 748 754 for (i = 1; i<=pVariables; i++) 749 755 { … … 763 769 ring old_ring = NULL; 764 770 BOOLEAN res; 765 771 766 772 if (r != currRing) 767 773 { … … 919 925 return TRUE; 920 926 } 927 928 #ifdef HAVE_SHIFTED_EXPONENTS 929 int rComp_a(poly p1, poly p2, int i, int rr) 930 { 931 int j; 932 int o1=0; 933 int o2=0; 934 for(j=currRing->block0[i];j<=currRing->block1[i];j++) 935 { 936 o1+=pGetExp(p1,j)*currRing->wvhdl[i][j-currRing->block0[i]]; 937 o2+=pGetExp(p2,j)*currRing->wvhdl[i][j-currRing->block0[i]]; 938 } 939 if (o1>o2) 940 { 941 assume(rr==1); 942 return 1; 943 } 944 if (o1<o2) 945 { 946 assume(rr==-1); 947 return -1; 948 } 949 return 0; 950 } 951 int rComp_deg(poly p1, poly p2, int i, int rr) 952 { 953 int j; 954 int o1=0; 955 int o2=0; 956 for(j=currRing->block0[i];j<=currRing->block1[i];j++) 957 { 958 o1+=pGetExp(p1,j); 959 o2+=pGetExp(p2,j); 960 } 961 if (o1>o2) 962 { 963 assume(rr==1); 964 return 1; 965 } 966 if (o1<o2) 967 { 968 assume(rr==-1); 969 return -1; 970 } 971 return 0; 972 } 973 int rComp_lex(poly p1, poly p2, int i, int rr) 974 { 975 int j; 976 for(j=currRing->block0[i];j<=currRing->block1[i];j++) 977 { 978 if (pGetExp(p1,j) > pGetExp(p2,j)) 979 { 980 assume(rr==1); 981 return 1; 982 } 983 else if (pGetExp(p1,j) < pGetExp(p2,j)) 984 { 985 assume(rr==-1); 986 return -1; 987 } 988 } 989 return 0; 990 } 991 int rComp_revlex(poly p1, poly p2, int i, int rr) 992 { 993 int j; 994 int e1,e2; 995 for(j=currRing->block1[i];j>=currRing->block0[i];j--) 996 { 997 e1=pGetExp(p1,j); 998 e2=pGetExp(p2,j); 999 if (e1 < e2) 1000 { 1001 assume(rr== 1); 1002 return 1; 1003 } 1004 else if (e1 > e2) 1005 { 1006 assume(rr== -1); 1007 return -1; 1008 } 1009 } 1010 return 0; 1011 } 1012 int rComp0(poly p1, poly p2) 1013 { 1014 int rr,r; 1015 _prMonCmp(p1, p2, currRing, {rr=0;goto next_after_comp;}, {rr=1;goto next_after_comp;}, {rr=-1;goto next_after_comp;}); 1016 next_after_comp: 1017 int n=rBlocks(currRing)-1; 1018 int i,j; 1019 for(i=0;i<n;i++) 1020 { 1021 switch (currRing->order[i]) 1022 { 1023 case ringorder_a: 1024 r=rComp_a(p1,p2,i,rr); 1025 if (r!=0) return r; 1026 break; 1027 1028 case ringorder_c: 1029 if (pGetComp(p1) < pGetComp(p2)) 1030 { 1031 assume(rr==1); 1032 return 1; 1033 } 1034 if (pGetComp(p1) > pGetComp(p2)) 1035 { 1036 assume(rr==-1); 1037 return -1; 1038 } 1039 break; 1040 1041 case ringorder_C: 1042 if (pGetComp(p1) > pGetComp(p2)) 1043 { 1044 assume(rr==1); 1045 return 1; 1046 } 1047 if (pGetComp(p1) < pGetComp(p2)) 1048 { 1049 assume(rr==-1); 1050 return -1; 1051 } 1052 break; 1053 1054 case ringorder_M: 1055 { 1056 assume(0); // not yet implemented 1057 break; 1058 } 1059 1060 case ringorder_lp: 1061 r=rComp_lex(p1,p2,i,rr); 1062 if (r!=0) return r; 1063 break; 1064 1065 case ringorder_ls: 1066 r=rComp_lex(p1,p2,i,-rr); 1067 if (r!=0) return -r; 1068 break; 1069 1070 case ringorder_dp: 1071 r=rComp_deg(p1,p2,i,rr); 1072 if (r!=0) return r; 1073 r=rComp_revlex(p1,p2,i,rr); 1074 if (r!=0) return r; 1075 break; 1076 1077 case ringorder_Dp: 1078 r=rComp_deg(p1,p2,i,rr); 1079 if (r!=0) return r; 1080 r=rComp_lex(p1,p2,i,rr); 1081 if (r!=0) return r; 1082 break; 1083 1084 case ringorder_ds: 1085 r=rComp_deg(p1,p2,i,-rr); 1086 if (r!=0) return -r; 1087 r=rComp_revlex(p1,p2,i,rr); 1088 if (r!=0) return r; 1089 break; 1090 1091 case ringorder_Ds: 1092 r=rComp_deg(p1,p2,i,-rr); 1093 if (r!=0) return -r; 1094 r=rComp_lex(p1,p2,i,rr); 1095 if (r!=0) return r; 1096 break; 1097 1098 case ringorder_wp: 1099 r=rComp_a(p1,p2,i,rr); 1100 if (r!=0) return r; 1101 r=rComp_revlex(p1,p2,i,rr); 1102 if (r!=0) return r; 1103 break; 1104 1105 case ringorder_Wp: 1106 r=rComp_a(p1,p2,i,rr); 1107 if (r!=0) return r; 1108 r=rComp_lex(p1,p2,i,rr); 1109 if (r!=0) return r; 1110 break; 1111 1112 case ringorder_ws: 1113 r=rComp_a(p1,p2,i,-rr); 1114 if (r!=0) return -r; 1115 r=rComp_revlex(p1,p2,i,rr); 1116 if (r!=0) return r; 1117 break; 1118 1119 case ringorder_Ws: 1120 r=rComp_a(p1,p2,i,-rr); 1121 if (r!=0) return -r; 1122 r=rComp_lex(p1,p2,i,rr); 1123 if (r!=0) return r; 1124 break; 1125 1126 case ringorder_S: 1127 assume(0); 1128 break; 1129 1130 case ringorder_s: 1131 /* ro_syz */ 1132 if ((pGetComp(p1) > pDBsyzComp) && (pGetComp(p2) > pDBsyzComp)) break; 1133 if ((pGetComp(p1) <= pDBsyzComp) && (pGetComp(p2) <= pDBsyzComp)) break; 1134 if (pGetComp(p1) <= pDBsyzComp) return 1; 1135 /* if (pGetComp(p2) <= pDBsyzComp) */ return -1; 1136 break; 1137 1138 case ringorder_unspec: 1139 case ringorder_no: 1140 default: 1141 Print("undef. ringorder used\n"); 1142 break; 1143 } 1144 } 1145 return rr; 1146 } 1147 #endif 921 1148 #endif // PDEBUG 922 1149
Note: See TracChangeset
for help on using the changeset viewer.