Changeset aef8bb in git for kernel/ringgb.cc


Ignore:
Timestamp:
May 19, 2007, 3:59:03 PM (17 years ago)
Author:
Oliver Wienand <wienand@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
8de151f9727ea85227080d62f49717e27a4472c7
Parents:
d681e8e1731aab445ce81a84c0c6d90e0ab546bb
Message:
ringgb.cc:
besseres testGB


git-svn-id: file:///usr/local/Singular/svn/trunk@10052 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/ringgb.cc

    rd681e8 raef8bb  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ringgb.cc,v 1.14 2007-05-11 11:40:28 wienand Exp $ */
     4/* $Id: ringgb.cc,v 1.15 2007-05-19 13:59:03 wienand Exp $ */
    55/*
    66* ABSTRACT: ringgb interface
     
    173173}
    174174
     175/*2
     176* Generates spoly(0, h) if applicable. Assumes ring in Z/2^n.
     177*/
     178poly 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
    175190poly ringNF(poly f, ideal G, ring r) {
    176191  // If f = 0, then normal form is also 0
    177192  if (f == NULL) { return NULL; }
     193  poly tmp = NULL;
    178194  poly h = pCopy(f);
    179195  int i = findRingSolver(h, G, r);
     
    186202//    wrp(G->m[i]);
    187203//    PrintLn();
     204    tmp = h;
    188205    h = plain_spoly(h, G->m[i]);
     206    pDelete(&tmp);
    189207//    PrintS("=> h=");
    190208//    wrp(h);
     
    197215
    198216int testGB(ideal I, ideal GI) {
    199   poly f, g, h;
     217  poly f, g, h, nf;
    200218  int i = 0;
    201219  int j = 0;
    202   Print("I");
     220  Print("I included?");
    203221  for (i = 0; i < IDELEMS(I); i++) {
    204222    if (ringNF(I->m[i], GI, currRing) != NULL) {
     
    212230    Print("-");
    213231  }
    214   Print("G");
     232  Print(" Yes!\nspoly --> 0?");
    215233  for (i = 0; i < IDELEMS(GI); i++) {
    216234    for (j = i + 1; j < IDELEMS(GI); j++) {
     
    218236      g = pCopy(GI->m[j]);
    219237      h = plain_spoly(f, g);
    220       if (ringNF(h, GI, currRing) != NULL) {
     238      nf = ringNF(h, GI, currRing);
     239      if (nf != NULL) {
    221240        Print("spoly(");
    222241        wrp(GI->m[i]);
     
    226245        wrp(h);
    227246        Print(" --> ");
    228         wrp(ringNF(h, GI, currRing));
     247        wrp(nf);
    229248        PrintLn();
    230249        return(0);
    231250      }
     251      pDelete(&f);
     252      pDelete(&g);
    232253      pDelete(&h);
     254      pDelete(&nf);
    233255      Print("-");
    234256    }
    235257  }
    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();
    238281  return(1);
    239282}
Note: See TracChangeset for help on using the changeset viewer.