1031{
1033
1034#if MYTEST
1035 PrintS(
"<gnc_gr_bba>\n");
1036#endif
1037
1038#ifdef HAVE_PLURAL
1039#if MYTEST
1042#ifdef RDEBUG
1044#endif
1045
1050#endif
1051#endif
1052
1054
1055
1056
1057 int olddeg,reduc;
1058 int red_result=1;
1059 int hilbcount=0;
1060
1062
1063
1067 {
1069 }
1070
1073 reduc = olddeg = 0;
1074
1075
1076 while (strat->
Ll >= 0)
1077 {
1079
1085 {
1086
1087
1088
1089
1090
1092 break;
1093 }
1094
1095 strat->
P = strat->
L[strat->
Ll];
1097
1098
1099 if (strat->
P.p !=
NULL)
1101 {
1102
1103 pLmFree(strat->
P.p);
1104
1105
1106
1107
1108
1109
1110
1111
1112
1114 {
1115 strat->
P.p = nc_CreateSpoly(strat->
P.p1,strat->
P.p2,
currRing);
1116 }
1117#ifdef HAVE_RATGRING
1118 else
1119 {
1120
1122 }
1123#endif
1124
1125
1126#ifdef PDEBUG
1128#endif
1129
1130#if MYTEST
1132 {
1136 }
1137#endif
1138 }
1139
1140
1141 if (strat->
P.p !=
NULL)
1142 {
1145 &olddeg,&reduc,strat, red_result);
1146
1147#if MYTEST
1149 {
1153 }
1154#endif
1155
1156
1157 strat->
red(&strat->
P,strat);
1158
1159#if MYTEST
1161 {
1163 }
1164#endif
1165 }
1166 if (strat->
P.p !=
NULL)
1167 {
1169 {
1171 }
1172
1173 {
1174
1175#ifdef HAVE_RATGRING
1177 {
1179 {
1180#ifdef PDEBUG
1181 PrintS(
"unit element detected:");
1183#endif
1185 strat->
P.p =
pOne();
1186 }
1187 }
1188#endif
1190 int pos=
posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart);
1191 {
1193 {
1195 {
1196 #ifdef HAVE_RATGRING
1198 #endif
1200 }
1201
1203 }
1204 else
1205 {
1208 {
1210 }
1211 }
1213 {
1216#if MYTEST
1218#endif
1219
1220 }
1221
1222
1224
1225 if (strat->
sl==-1) pos=0;
1226 else pos=
posInS(strat,strat->
sl,strat->
P.p,strat->
P.ecart);
1227
1228 strat->
enterS(&strat->
P,pos,strat,-1);
1229 }
1230
1231 }
1232 kDeleteLcm(&strat->
P);
1233 }
1234
1235 }
1237
1238
1240 {
1244 {
1247 {
1251 }
1253 }
1254 }
1255
1258
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1272
1273
1274#if MYTEST
1275 PrintS(
"</gnc_gr_bba>\n");
1276#endif
1277
1279
1280 return (strat->
Shdl);
1281}
int(*) posInL(const LSet set, const int length, LObject *L, const kStrategy strat)
int(*) posInT(const TSet T, const int tl, LObject &h)
void(*) enterS(LObject *h, int pos, kStrategy strat, int atR)
int(*) red(LObject *L, kStrategy strat)
void nc_gr_initBba(ideal F, kStrategy strat)
nc_gr_initBba is needed for sca_gr_bba and gr_bba.
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
KINLINE void clearS(poly p, unsigned long p_sev, int *at, int *k, kStrategy strat)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
void message(int i, int *olddeg, int *reduc, kStrategy strat, int red_result)
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
void initBuchMoraPos(kStrategy strat)
int posInL0(const LSet set, const int length, LObject *p, const kStrategy)
void exitBuchMora(kStrategy strat)
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
int posInT110(const TSet set, const int length, LObject &p)
void updateResult(ideal r, ideal Q, kStrategy strat)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
void initBuchMoraCrit(kStrategy strat)
void completeReduce(kStrategy strat, BOOLEAN withT)
void messageSets(kStrategy strat)
void messageStat(int hilbcount, kStrategy strat)
#define TEST_OPT_INTSTRATEGY
#define TEST_OPT_DEGBOUND
poly p_Cleardenom(poly p, const ring r)
void p_wrp(poly p, ring lmRing, ring tailRing)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
BOOLEAN p_LmIsConstantRat(const poly p, const ring r)
void PrintS(const char *s)
void rWrite(ring r, BOOLEAN details)
void rDebugPrint(const ring r)