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
1104
1105
1106
1107
1108
1109
1110
1111
1112
1114 {
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 }
1233 }
1234
1235 }
1237
1238
1240 {
1243 while(k<=strat->sl)
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)
void(* enterS)(LObject &h, int pos, kStrategy strat, int atR)
int(* posInT)(const TSet T, const int tl, LObject &h)
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 message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
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)
static void kDeleteLcm(LObject *P)
static poly nc_CreateSpoly(const poly p1, const poly p2, const ring r)
#define TEST_OPT_INTSTRATEGY
#define TEST_OPT_DEGBOUND
poly p_Cleardenom(poly p, const ring r)
static void p_Delete(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 ...
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
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)
static BOOLEAN rIsRatGRing(const ring r)