Changeset aef8bb in git for kernel/ringgb.cc
- Timestamp:
- May 19, 2007, 3:59:03 PM (17 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 8de151f9727ea85227080d62f49717e27a4472c7
- Parents:
- d681e8e1731aab445ce81a84c0c6d90e0ab546bb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/ringgb.cc
rd681e8 raef8bb 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ringgb.cc,v 1.1 4 2007-05-11 11:40:28wienand Exp $ */4 /* $Id: ringgb.cc,v 1.15 2007-05-19 13:59:03 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: ringgb interface … … 173 173 } 174 174 175 /*2 176 * Generates spoly(0, h) if applicable. Assumes ring in Z/2^n. 177 */ 178 poly plain_zero_spoly(poly h) 179 { 180 poly p = NULL; 181 number gcd = nGcd((number) 0, pGetCoeff(h), currRing); 182 if ((NATNUMBER) gcd > 1) 183 { 184 p = p_Copy(h->next, currRing); 185 p = p_Mult_nn(p, nIntDiv(0, gcd), currRing); 186 } 187 return p; 188 } 189 175 190 poly ringNF(poly f, ideal G, ring r) { 176 191 // If f = 0, then normal form is also 0 177 192 if (f == NULL) { return NULL; } 193 poly tmp = NULL; 178 194 poly h = pCopy(f); 179 195 int i = findRingSolver(h, G, r); … … 186 202 // wrp(G->m[i]); 187 203 // PrintLn(); 204 tmp = h; 188 205 h = plain_spoly(h, G->m[i]); 206 pDelete(&tmp); 189 207 // PrintS("=> h="); 190 208 // wrp(h); … … 197 215 198 216 int testGB(ideal I, ideal GI) { 199 poly f, g, h ;217 poly f, g, h, nf; 200 218 int i = 0; 201 219 int j = 0; 202 Print("I ");220 Print("I included?"); 203 221 for (i = 0; i < IDELEMS(I); i++) { 204 222 if (ringNF(I->m[i], GI, currRing) != NULL) { … … 212 230 Print("-"); 213 231 } 214 Print(" G");232 Print(" Yes!\nspoly --> 0?"); 215 233 for (i = 0; i < IDELEMS(GI); i++) { 216 234 for (j = i + 1; j < IDELEMS(GI); j++) { … … 218 236 g = pCopy(GI->m[j]); 219 237 h = plain_spoly(f, g); 220 if (ringNF(h, GI, currRing) != NULL) { 238 nf = ringNF(h, GI, currRing); 239 if (nf != NULL) { 221 240 Print("spoly("); 222 241 wrp(GI->m[i]); … … 226 245 wrp(h); 227 246 Print(" --> "); 228 wrp( ringNF(h, GI, currRing));247 wrp(nf); 229 248 PrintLn(); 230 249 return(0); 231 250 } 251 pDelete(&f); 252 pDelete(&g); 232 253 pDelete(&h); 254 pDelete(&nf); 233 255 Print("-"); 234 256 } 235 257 } 236 // Print("Fine."); 237 // PrintLn(); 258 Print(" Yes!\nzero-spoly --> 0?"); 259 for (i = 0; i < IDELEMS(GI); i++) 260 { 261 f = plain_zero_spoly(GI->m[i]); 262 nf = ringNF(f, GI, currRing); 263 if (nf != NULL) { 264 Print("spoly("); 265 wrp(GI->m[i]); 266 Print(", "); 267 wrp(0); 268 Print(") = "); 269 wrp(h); 270 Print(" --> "); 271 wrp(nf); 272 PrintLn(); 273 return(0); 274 } 275 pDelete(&f); 276 pDelete(&nf); 277 Print("-"); 278 } 279 Print(" Yes!"); 280 PrintLn(); 238 281 return(1); 239 282 }
Note: See TracChangeset
for help on using the changeset viewer.