Functions | Variables
kstdfac.cc File Reference
#include <kernel/mod2.h>
#include <omalloc/omalloc.h>
#include <misc/options.h>
#include <kernel/polys.h>
#include <kernel/ideals.h>
#include <kernel/GBEngine/kutil.h>
#include <kernel/GBEngine/kstd1.h>
#include <kernel/GBEngine/khstd.h>
#include <polys/weight.h>
#include <misc/intvec.h>
#include <polys/clapsing.h>
#include <kernel/GBEngine/kstdfac.h>

Go to the source code of this file.

Functions

static void copyT (kStrategy o, kStrategy n)
 
static void copyL (kStrategy o, kStrategy n)
 
kStrategy kStratCopy (kStrategy o)
 
BOOLEAN k_factorize (poly p, ideal &rfac, ideal &fac_copy)
 
static void completeReduceFac (kStrategy strat, ideal_list FL)
 
ideal bbafac (ideal, ideal Q, intvec *, kStrategy strat, ideal_list FL)
 
ideal_list kStdfac (ideal F, ideal Q, tHomog h, intvec **w, ideal D)
 

Variables

int strat_nr =0
 
int strat_fac_debug =0
 

Function Documentation

ideal bbafac ( ideal  ,
ideal  Q,
intvec ,
kStrategy  strat,
ideal_list  FL 
)

Definition at line 541 of file kstdfac.cc.

542 {
543  int olddeg,reduc=0;
544  int red_result = 1;
545  reduc = olddeg = 0;
546  /* compute------------------------------------------------------- */
547  if ((strat->Ll==-1) && (strat->sl>=0))
548  {
549  if (TEST_OPT_REDSB) completeReduceFac(strat,FL);
550  }
551  kTest_TS(strat);
552  while (strat->Ll >= 0)
553  {
554  if (TEST_OPT_DEBUG) messageSets(strat);
555  if (strat->Ll== 0) strat->interpt=TRUE;
557  && ((strat->honey
558  && (strat->L[strat->Ll].ecart+currRing->pFDeg(strat->L[strat->Ll].p,currRing)>Kstd1_deg))
559  || ((!strat->honey) && (currRing->pFDeg(strat->L[strat->Ll].p,currRing)>Kstd1_deg))))
560  {
561  /*
562  *stops computation if
563  * 24 IN test and the degree +ecart of L[strat->Ll] is bigger then
564  *a predefined number Kstd1_deg
565  */
566  while (strat->Ll >= 0) deleteInL(strat->L,&strat->Ll,strat->Ll,strat);
567  break;
568  }
569  /* picks the last element from the lazyset L */
570  strat->P = strat->L[strat->Ll];
571  strat->Ll--;
572  if (pNext(strat->P.p) == strat->tail)
573  {
574  /* deletes the short spoly and computes */
575  pLmFree(strat->P.p);
576  /* the real one */
577  strat->P.p = ksOldCreateSpoly(strat->P.p1,
578  strat->P.p2,
579  strat->kNoether);
580  }
581  if (strat->honey)
582  {
583  if (TEST_OPT_PROT)
584  message(strat->P.ecart+currRing->pFDeg(strat->P.p,currRing),&olddeg,&reduc,strat, red_result);
585  }
586  else
587  {
588  if (TEST_OPT_PROT)
589  message(currRing->pFDeg(strat->P.p,currRing),&olddeg,&reduc,strat, red_result);
590  }
591  /* reduction of the element chosen from L */
592  kTest_TS(strat);
593  red_result = strat->red(&strat->P,strat);
594  if (strat->P.p != NULL)
595  {
596  /* statistic */
597  if (TEST_OPT_PROT) PrintS("s");
598  ideal fac;
599  ideal fac_copy;
600 
601  if (!k_factorize(strat->P.p,fac,fac_copy))
602  {
604  {
605  strat->P.p = redtailBba(strat->P.p,strat->sl,strat);
606  if (strat->redTailChange) strat->P.pCleardenom();
607  }
608  else
609  {
610  pNorm(strat->P.p);
611  strat->P.p = redtailBba(strat->P.p,strat->sl,strat);
612  }
613  if (strat->redTailChange)
614  {
615  idDelete(&fac);
616  idDelete(&fac_copy);
617  if (!k_factorize(strat->P.p,fac,fac_copy))
618  {
619  pDelete(&(fac->m[0]));
620  fac->m[0]=strat->P.p;
621  strat->P.p=NULL;
622  }
623  else
624  {
625  pDelete(&strat->P.p);
626  }
627  }
628  }
629  if (strat->P.lcm!=NULL) pLmFree(strat->P.lcm);
630  int i;
631 
632  for(i=IDELEMS(fac)-1;i>=0;i--)
633  {
634  int ii;
635  kStrategy n=strat;
636  if (i>=1)
637  {
638  n=kStratCopy(strat); // includes memset(&n->P,0,sizeof(n->P));
639  kTest_TS(n);
640  n->next=strat->next;
641  strat->next=n;
642  }
643  else
644  {
645  n->P.Init(strat->tailRing);
646  }
647 
648  n->P.pLength=0;
649  n->P.p=fac->m[i];
650  n->initEcart(&n->P);
651  kTest_TS(n);
652 
653  /* enter P.p into s and L */
654  int pos;
655  if (n->sl==-1) pos=0;
656  else pos=posInS(n,n->sl,n->P.p,n->P.ecart);
657 
658  // we have already reduced all elements from fac....
660  {
661  n->P.p = redtailBba(n->P.p,pos-1,n);
662  if (n->redTailChange)
663  {
664  n->P.pCleardenom();
665  n->P.pLength=0;
666  }
667  }
668  else
669  {
670  pNorm(n->P.p);
671  n->P.p = redtailBba(n->P.p,pos-1,n);
672  if (n->redTailChange)
673  {
674  n->P.pLength=0;
675  }
676  }
677  kTest_TS(n);
678 
679  if (TEST_OPT_DEBUG)
680  {
681  PrintS("new s:");
682  wrp(n->P.p);
683  PrintLn();
684  }
685  enterpairs(n->P.p,n->sl,n->P.ecart,pos,n);
686  enterT(n->P,n);
687  n->enterS(n->P,pos,n, n->tl);
688  {
689  int i=n->Ll;
690  for(;i>=0;i--)
691  {
692  n->L[i].i_r1= -1;
693  for(ii=0; ii<=n->tl; ii++)
694  {
695  if (n->R[ii]->p==n->L[i].p1) { n->L[i].i_r1=ii;break; }
696  }
697  n->L[i].i_r2= -1;
698  for(ii=0; ii<=n->tl; ii++)
699  {
700  if (n->R[ii]->p==n->L[i].p2) { n->L[i].i_r2=ii;break; }
701  }
702  }
703  }
704  kTest_TS(n);
705  /* construct D */
706  if (IDELEMS(fac)>1)
707  {
708  if (n->D==NULL)
709  {
710  n->D=idCopy(fac_copy);
711  idSkipZeroes(n->D);
712  }
713  else
714  {
715  idTest(n->D);
716  ideal r=idAdd(n->D,fac_copy);
717  idDelete(&n->D);
718  n->D=r;
719  }
720  if (TEST_OPT_DEBUG)
721  {
722  PrintS("new D:\n");
723  iiWriteMatrix((matrix)n->D,"D",1,currRing,0);
724  PrintLn();
725  }
726  }
727 #ifndef SING_NDEBUG
728  if(strat_fac_debug)
729  {
730  int ii;
731  Print("-------------------------------------------------------------\ns(%d), set S\n",n->nr);
732  for(ii=0;ii<n->sl;ii++)
733  { Print("s(%d->S[%d]= ",n->nr,ii);pWrite(n->S[ii]);}
734  Print("s(%d), set D\n",n->nr);
735  if (n->D!=NULL)
736  {
737  for(ii=0;ii<IDELEMS(n->D);ii++)
738  { Print("s(%d->D[%d]= ",n->nr,ii);pWrite(n->D->m[ii]);}
739  }
740  else PrintS(" empty\n");
741  }
742 #endif
743 
744  fac_copy->m[i]=pCopy(fac->m[i]);
745  fac->m[i]=NULL;
746 
747  /* check for empty sets */
748  if (n->D!=NULL)
749  {
750  int j=IDELEMS(n->D)-1;
751  while(j>=0)
752  {
753  if (n->D->m[j]!=NULL)
754  {
755  poly r=kNF(n->Shdl,NULL,n->D->m[j],0,KSTD_NF_LAZY | KSTD_NF_NONORM);
756  if (r==NULL)
757  {
758 #ifndef SING_NDEBUG
759  if(strat_fac_debug)
760  {
761  Print("empty set s(%d) because: D[%d] -> 0\n",
762  n->nr, j);
763  Print("s(%d)->D[%d]= ",n->nr,j);pWrite(n->D->m[j]);
764  }
765 #endif
766  if (TEST_OPT_DEBUG)
767  {
768  PrintS("empty set because:");
769  wrp(n->D->m[j]);
770  PrintLn();
771  messageSets(n);
772  }
773  //if (n->Ll >=0) Print("Ll:%d|",n->Ll);
774  while (n->Ll >= 0) deleteInL(n->L,&n->Ll,n->Ll,n);
775  //if (n->tl >=0) Print("tl:%d|",n->tl);
776  while (n->tl >= 0)
777  {
778  int i=n->sl;
779  while (i>=0)
780  {
781  if (n->S[i]==n->T[n->tl].p)
782  {
783  n->T[n->tl].p=NULL; n->S[i]=NULL;
784  break;
785  }
786  i--;
787  }
788  pDelete(&n->T[n->tl].p);
789  n->tl--;
790  }
791  memset(n->Shdl->m,0,IDELEMS(n->Shdl)*sizeof(poly));
792  n->sl=-1;
793  break;
794  }
795  else
796  {
797  pDelete(&r);
798  }
799  }
800  j--;
801  }
802  }
803 
804  /* check for empty sets */
805  {
806  ideal_list Lj=FL;
807  while (Lj!=NULL)
808  {
809  if ((n->sl>=0)&&(n->S[0]!=NULL))
810  {
811  ideal r=kNF(n->Shdl,NULL,Lj->d,0,KSTD_NF_LAZY | KSTD_NF_NONORM);
812  if (idIs0(r))
813  {
814 #ifndef SING_NDEBUG
815  if(strat_fac_debug)
816  {
817  Print("empty set s(%d) because:L[%d]\n",n->nr,Lj->nr);
818  PrintS("L:\n");
819  iiWriteMatrix((matrix)Lj->d,"L",1,currRing,0);
820  }
821 #endif
822  if (TEST_OPT_DEBUG)
823  {
824  Print("empty set because:L[%p]\n",(void*)Lj);
825  }
826  while (n->Ll >= 0) deleteInL(n->L,&n->Ll,n->Ll,n);
827  while (n->tl >= 0)
828  {
829  int i=n->sl;
830  while (i>=0)
831  {
832  if (n->S[i]==n->T[n->tl].p)
833  {
834  n->T[n->tl].p=NULL; n->S[i]=NULL;
835  break;
836  }
837  i--;
838  }
839  pDelete(&n->T[n->tl].p);
840  n->tl--;
841  }
842  memset(n->Shdl->m,0,IDELEMS(n->Shdl)*sizeof(poly));
843  n->sl=-1;
844  idDelete(&r);
845  break;
846  }
847  idDelete(&r);
848  }
849  Lj=Lj->next;
850  }
851  }
852  } /* for */
853  for(i=0;i<IDELEMS(fac);i++) fac->m[i]=NULL;
854  idDelete(&fac);
855  idDelete(&fac_copy);
856  }
857 #ifdef KDEBUG
858  strat->P.lcm=NULL;
859 #endif
860  kTest_TS(strat);
861  if ((strat->Ll==-1) && (strat->sl>=0))
862  {
863  if (TEST_OPT_REDSB) completeReduceFac(strat,FL);
864  }
865  kTest_TS(strat);
866  }
867  if (TEST_OPT_DEBUG) messageSets(strat);
868  /* complete reduction of the standard basis--------- */
869  /* release temp data-------------------------------- */
870  if (TEST_OPT_WEIGHTM)
871  {
873  if (ecartWeights)
874  {
875  omFreeSize((ADDRESS)ecartWeights,((currRing->N)+1)*sizeof(short));
876  ecartWeights=NULL;
877  }
878  }
879  exitBuchMora(strat);
880  if (TEST_OPT_PROT) { PrintLn(); messageStat(0,strat); }
881  if (Q!=NULL) updateResult(strat->Shdl,Q,strat);
882  return (strat->Shdl);
883 }
int nr
Definition: kutil.h:347
BOOLEAN honey
Definition: kutil.h:371
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
Definition: kstd1.cc:2598
void PrintLn()
Definition: reporter.cc:322
#define Print
Definition: emacs.cc:83
#define TEST_OPT_DEGBOUND
Definition: options.h:108
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
Definition: kutil.cc:5628
void messageStat(int hilbcount, kStrategy strat)
Definition: kutil.cc:5669
#define TEST_OPT_PROT
Definition: options.h:98
int Ll
Definition: kutil.h:354
short * ecartWeights
Definition: weight0.c:32
void enterT(LObject p, kStrategy strat, int atT)
Definition: kutil.cc:7161
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
const ideal
Definition: gb_hack.h:42
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
Definition: kutil.cc:3671
poly kNoether
Definition: kutil.h:328
KINLINE poly ksOldCreateSpoly(poly p1, poly p2, poly spNoether, ring r)
Definition: kInline.h:1102
int tl
Definition: kutil.h:353
#define TRUE
Definition: auxiliary.h:144
#define TEST_OPT_REDSB
Definition: options.h:99
void * ADDRESS
Definition: auxiliary.h:161
void pWrite(poly p)
Definition: polys.h:279
ideal idAdd(ideal h1, ideal h2, const ring R=currRing)
h1 + h2
Definition: ideals.h:84
#define TEST_OPT_DEBUG
Definition: options.h:103
#define Q
Definition: sirandom.c:25
int(* red)(LObject *L, kStrategy strat)
Definition: kutil.h:277
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
Definition: kInline.h:1120
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
Definition: matpol.cc:738
pFDegProc pOrigFDeg
Definition: kutil.h:295
void deleteInL(LSet set, int *length, int j, kStrategy strat)
Definition: kutil.cc:1039
BOOLEAN interpt
Definition: kutil.h:365
void(* initEcart)(TObject *L)
Definition: kutil.h:279
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
const ring r
Definition: syzextra.cc:208
pLDegProc pOrigLDeg
Definition: kutil.h:296
#define KSTD_NF_LAZY
Definition: kstd1.h:15
#define TEST_OPT_INTSTRATEGY
Definition: options.h:105
#define kTest_TS(A)
Definition: kutil.h:616
int j
Definition: myNF.cc:70
polyrec * poly
Definition: hilb.h:10
#define messageSets(s)
Definition: kutil.h:506
kStrategy kStratCopy(kStrategy o)
Definition: kstdfac.cc:157
void idDelete(ideal *h, ring r=currRing)
delete an ideal
Definition: ideals.h:31
LObject P
Definition: kutil.h:300
int i
Definition: cfEzgcd.cc:123
void PrintS(const char *s)
Definition: reporter.cc:294
poly tail
Definition: kutil.h:334
TObject ** R
Definition: kutil.h:340
polyset S
Definition: kutil.h:304
#define IDELEMS(i)
Definition: simpleideals.h:19
void idSkipZeroes(ideal ide)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
Definition: p_polys.cc:3464
kStrategy strat
Definition: myNF.cc:319
#define KSTD_NF_NONORM
Definition: kstd1.h:19
#define TEST_OPT_WEIGHTM
Definition: options.h:115
LSet L
Definition: kutil.h:325
#define NULL
Definition: omList.c:10
ring tailRing
Definition: kutil.h:343
static void completeReduceFac(kStrategy strat, ideal_list FL)
Definition: kstdfac.cc:299
void pNorm(poly p, const ring R=currRing)
Definition: polys.h:334
ideal D
Definition: kutil.h:302
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
Definition: kutil.cc:3860
#define pDelete(p_ptr)
Definition: polys.h:157
#define pNext(p)
Definition: monomials.h:43
void updateResult(ideal r, ideal Q, kStrategy strat)
Definition: kutil.cc:7864
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced ...
Definition: polys.h:70
int sl
Definition: kutil.h:351
ideal idCopy(ideal A, const ring R=currRing)
Definition: ideals.h:76
TSet T
Definition: kutil.h:324
BOOLEAN k_factorize(poly p, ideal &rfac, ideal &fac_copy)
Definition: kstdfac.cc:248
void wrp(poly p)
Definition: polys.h:281
int strat_fac_debug
Definition: kstdfac.cc:29
int Kstd1_deg
Definition: kutil.cc:228
ideal Shdl
Definition: kutil.h:301
void(* enterS)(LObject h, int pos, kStrategy strat, int atR)
Definition: kutil.h:285
kStrategy next
Definition: kutil.h:276
BOOLEAN idIs0(ideal h)
char redTailChange
Definition: kutil.h:394
void exitBuchMora(kStrategy strat)
Definition: kutil.cc:7637
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156
#define idTest(id)
Definition: ideals.h:63
static void completeReduceFac ( kStrategy  strat,
ideal_list  FL 
)
static

Definition at line 299 of file kstdfac.cc.

300 {
301  int si;
302 
303  strat->noTailReduction = FALSE;
304  if (TEST_OPT_PROT)
305  {
306  PrintLn();
307 // if (timerv) writeTime("standard base computed:");
308  }
309  if (TEST_OPT_PROT)
310  {
311  Print("(S:%d)",strat->sl);mflush();
312  }
313  for (si=strat->sl; si>0; si--)
314  {
315  strat->S[si] = redtailBba(strat->S[si],si-1,strat);
317  {
318  strat->S[si]=p_Cleardenom(strat->S[si], currRing);
319  }
320  if (TEST_OPT_PROT)
321  {
322  PrintS("-");mflush();
323  }
324  int i;
325  if (strat->redTailChange)
326  {
327  for(i=strat->tl;i>=0;i--)
328  {
329  strat->initEcart(&strat->T[i]);
330  }
331  }
332  ideal fac;
333  ideal fac_copy;
334 
335  if (!k_factorize(strat->S[si],fac,fac_copy))
336  {
337  idDelete(&fac);
338  idDelete(&fac_copy);
339  continue;
340  }
341 
342  deleteInS(si,strat);
343 
344  for(i=IDELEMS(fac)-1;i>=0;i--)
345  {
346  kStrategy n=strat;
347  if (i>=1)
348  {
349  n=kStratCopy(strat); // includes: memset(&n->P,0,sizeof(n->P));
350  n->next=strat->next;
351  strat->next=n;
352  }
353  else
354  {
355  n->P.Init(strat->tailRing);
356  }
357 
358  n->P.p=fac->m[i];
359  n->P.pLength=0;
360  n->initEcart(&n->P);
361  /* enter P.p into s and L */
362  int pos;
363  if (n->sl==-1) pos=0;
364  else pos=posInS(n,n->sl,n->P.p,n->P.ecart);
366  {
367  n->P.p = redtailBba(n->P.p,pos-1,n);
368  n->P.pCleardenom();
369  }
370  else
371  {
372  pNorm(n->P.p);
373  n->P.p = redtailBba(n->P.p,pos-1,n);
374  }
375  n->P.pLength=0;
376  if (TEST_OPT_DEBUG)
377  {
378  PrintS("new s:");
379  wrp(n->P.p);
380  PrintLn();
381  }
382  enterpairs(n->P.p,n->sl,n->P.ecart,pos,n);
383  enterT(n->P,n);
384  n->enterS(n->P,pos,n, n->tl);
385 
386  /* construct D */
387  if (IDELEMS(fac)>1)
388  {
389  if (n->D==NULL)
390  {
391  n->D=idCopy(fac_copy);
392  idSkipZeroes(n->D);
393  }
394  else
395  {
396  idTest(n->D);
397  ideal r=idAdd(n->D,fac_copy);
398  idDelete(&n->D);
399  n->D=r;
400  }
401  if (TEST_OPT_DEBUG)
402  {
403  PrintS("new D:\n");
404  iiWriteMatrix((matrix)n->D,"D",1,currRing,0);
405  PrintLn();
406  }
407  }
408 #ifndef SING_NDEBUG
409  if(strat_fac_debug)
410  {
411  int ii;
412  Print("---------------------------------------------------------------\ns(%d), set S\n",n->nr);
413  for(ii=0;ii<n->sl;ii++)
414  { Print("s(%d->S[%d]= ",n->nr,ii);pWrite(n->S[ii]);}
415  Print("s(%d), set D\n",n->nr);
416  if (n->D!=NULL)
417  {
418  for(ii=0;ii<IDELEMS(n->D);ii++)
419  { Print("s(%d->D[%d]= ",n->nr,ii);pWrite(n->D->m[ii]);}
420  }
421  else PrintS(" empty\n");
422  }
423 #endif
424 
425  fac_copy->m[i]=pCopy(fac->m[i]);
426  fac->m[i]=NULL;
427 
428  /* check for empty sets */
429  if (n->D!=NULL)
430  {
431  int j=IDELEMS(n->D)-1;
432  while(j>=0)
433  {
434  if (n->D->m[j]!=NULL)
435  {
436  poly r=kNF(n->Shdl,NULL,n->D->m[j],0,KSTD_NF_LAZY | KSTD_NF_NONORM);
437  if (r==NULL)
438  {
439 #ifndef SING_NDEBUG
440  if(strat_fac_debug)
441  {
442  Print("empty set s(%d) because: D[%d] -> 0\n",
443  n->nr, j);
444  Print("s(%d)->D[%d]= ",n->nr,j);pWrite(n->D->m[j]);
445  }
446 #endif
447  if (TEST_OPT_DEBUG)
448  {
449  PrintS("empty set because:");
450  wrp(n->D->m[j]);
451  PrintLn();
452  messageSets(n);
453  }
454  while (n->Ll >= 0) deleteInL(n->L,&n->Ll,n->Ll,n);
455  while (n->tl >= 0)
456  {
457  int i=n->sl;
458  while (i>=0)
459  {
460  if (n->S[i]==n->T[n->tl].p)
461  {
462  n->T[n->tl].p=NULL; n->S[i]=NULL;
463  break;
464  }
465  i--;
466  }
467  pDelete(&n->T[n->tl].p);
468  n->tl--;
469  }
470  memset(n->Shdl->m,0,IDELEMS(n->Shdl)*sizeof(poly));
471  n->sl=-1;
472  if (strat==n) si=-1;
473  break;
474  }
475  else
476  {
477  pDelete(&r);
478  }
479  }
480  j--;
481  }
482  }
483  /* check for empty sets */
484  {
485  ideal_list Lj=FL;
486  while (Lj!=NULL)
487  {
488  if ((n->sl>=0)&&(n->S[0]!=NULL))
489  {
490  ideal r=kNF(n->Shdl,NULL,Lj->d,0,KSTD_NF_LAZY | KSTD_NF_NONORM);
491 #ifndef SING_NDEBUG
492  if(strat_fac_debug)
493  {
494  Print("empty set s(%d) because:L[%d]\n",n->nr,Lj->nr);
495  PrintS("L:\n");
496  iiWriteMatrix((matrix)Lj->d,"L",1,currRing,0);
497  }
498 #endif
499  if (idIs0(r))
500  {
501  if (TEST_OPT_DEBUG)
502  {
503  Print("empty set because:L[%p]\n",(void *)Lj);
504  }
505  while (n->Ll >= 0) deleteInL(n->L,&n->Ll,n->Ll,n);
506  while (n->tl >= 0)
507  {
508  int i=n->sl;
509  while (i>=0)
510  {
511  if (n->S[i]==n->T[n->tl].p)
512  {
513  n->T[n->tl].p=NULL; n->S[i]=NULL;
514  break;
515  }
516  i--;
517  }
518  pDelete(&n->T[n->tl].p);
519  n->tl--;
520  }
521  memset(n->Shdl->m,0,IDELEMS(n->Shdl)*sizeof(poly));
522  n->sl=-1;
523  if (strat==n) si=-1;
524  idDelete(&r);
525  break;
526  }
527  idDelete(&r);
528  }
529  Lj=Lj->next;
530  }
531  }
532  } /* for */
533  for(i=0;i<IDELEMS(fac);i++) fac->m[i]=NULL;
534  idDelete(&fac);
535  idDelete(&fac_copy);
536  if ((strat->Ll>=0) && (strat->sl>=0)) break;
537  else si=strat->sl+1;
538  }
539 }
int nr
Definition: kutil.h:347
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
Definition: kstd1.cc:2598
void PrintLn()
Definition: reporter.cc:322
#define Print
Definition: emacs.cc:83
#define TEST_OPT_PROT
Definition: options.h:98
int Ll
Definition: kutil.h:354
#define FALSE
Definition: auxiliary.h:140
BOOLEAN noTailReduction
Definition: kutil.h:372
void enterT(LObject p, kStrategy strat, int atT)
Definition: kutil.cc:7161
const ideal
Definition: gb_hack.h:42
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
Definition: kutil.cc:3671
int tl
Definition: kutil.h:353
void deleteInS(int i, kStrategy strat)
Definition: kutil.cc:932
void pWrite(poly p)
Definition: polys.h:279
ideal idAdd(ideal h1, ideal h2, const ring R=currRing)
h1 + h2
Definition: ideals.h:84
#define TEST_OPT_DEBUG
Definition: options.h:103
KINLINE poly redtailBba(poly p, int pos, kStrategy strat, BOOLEAN normalize)
Definition: kInline.h:1120
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
Definition: matpol.cc:738
#define mflush()
Definition: reporter.h:42
void deleteInL(LSet set, int *length, int j, kStrategy strat)
Definition: kutil.cc:1039
void(* initEcart)(TObject *L)
Definition: kutil.h:279
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
const ring r
Definition: syzextra.cc:208
#define KSTD_NF_LAZY
Definition: kstd1.h:15
#define TEST_OPT_INTSTRATEGY
Definition: options.h:105
int j
Definition: myNF.cc:70
polyrec * poly
Definition: hilb.h:10
#define messageSets(s)
Definition: kutil.h:506
kStrategy kStratCopy(kStrategy o)
Definition: kstdfac.cc:157
void idDelete(ideal *h, ring r=currRing)
delete an ideal
Definition: ideals.h:31
LObject P
Definition: kutil.h:300
int i
Definition: cfEzgcd.cc:123
void PrintS(const char *s)
Definition: reporter.cc:294
polyset S
Definition: kutil.h:304
#define IDELEMS(i)
Definition: simpleideals.h:19
void idSkipZeroes(ideal ide)
kStrategy strat
Definition: myNF.cc:319
#define KSTD_NF_NONORM
Definition: kstd1.h:19
LSet L
Definition: kutil.h:325
#define NULL
Definition: omList.c:10
ring tailRing
Definition: kutil.h:343
void pNorm(poly p, const ring R=currRing)
Definition: polys.h:334
ideal D
Definition: kutil.h:302
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
Definition: kutil.cc:3860
#define pDelete(p_ptr)
Definition: polys.h:157
int sl
Definition: kutil.h:351
ideal idCopy(ideal A, const ring R=currRing)
Definition: ideals.h:76
TSet T
Definition: kutil.h:324
BOOLEAN k_factorize(poly p, ideal &rfac, ideal &fac_copy)
Definition: kstdfac.cc:248
void wrp(poly p)
Definition: polys.h:281
int strat_fac_debug
Definition: kstdfac.cc:29
ideal Shdl
Definition: kutil.h:301
void(* enterS)(LObject h, int pos, kStrategy strat, int atR)
Definition: kutil.h:285
kStrategy next
Definition: kutil.h:276
BOOLEAN idIs0(ideal h)
poly p_Cleardenom(poly p, const ring r)
Definition: p_polys.cc:2655
char redTailChange
Definition: kutil.h:394
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156
#define idTest(id)
Definition: ideals.h:63
static void copyL ( kStrategy  o,
kStrategy  n 
)
static

Definition at line 72 of file kstdfac.cc.

73 {
74  int i,j;
75  poly p;
76  LSet l=(LSet)omAlloc(o->Lmax*sizeof(LObject));
77 
78  for (j=0; j<=o->Ll; j++)
79  {
80  l[j] = o->L[j];
81  // copy .p ----------------------------------------------
82  if (pNext(o->L[j].p)!=o->tail)
83  l[j].p=pCopy(o->L[j].p);
84  else
85  {
86  l[j].p=pHead(o->L[j].p);
87  pNext(l[j].p)=n->tail;
88  }
89  // copy .lcm ----------------------------------------------
90  if (o->L[j].lcm!=NULL)
91  l[j].lcm=pLmInit(o->L[j].lcm);
92  else
93  l[j].lcm=NULL;
94  l[j].p1=NULL;
95  l[j].p2=NULL;
96  l[j].t_p = NULL;
97 
98  // copy .p1 , i_r1----------------------------------------------
99  p = o->L[j].p1;
100  i = -1;
101  loop
102  {
103  if(p==NULL) break;
104  i++;
105  if(i>o->tl)
106  {
107  Warn("poly p1 not found in T:");wrp(p);PrintLn();
108  l[j].p1=pCopy(p);
109  l[j].i_r1=-1;
110  break;
111  }
112  if (p == o->T[i].p)
113  {
114  l[j].p1=n->T[i].p;
115  l[j].i_r1=n->T[i].i_r;
116  break;
117  }
118  }
119 
120  // copy .p2 , i_r2----------------------------------------------
121  p = o->L[j].p2;
122  i = -1;
123  loop
124  {
125  if(p==NULL) break;
126  i++;
127  if(i>o->tl)
128  {
129  Warn("poly p2 not found in T:");wrp(p);PrintLn();
130  l[j].p2=pCopy(p);
131  l[j].i_r2=-1;
132  break;
133  }
134  if (p == o->T[i].p)
135  {
136  l[j].p2=n->T[i].p;
137  l[j].i_r2=n->T[i].i_r;
138  break;
139  }
140  }
141 
142  // copy .ecart ---------------------------------------------
143  l[j].ecart=o->L[j].ecart;
144  // copy .length --------------------------------------------
145  l[j].length=o->L[j].length;
146  // copy .pLength -------------------------------------------
147  l[j].pLength=o->L[j].pLength;
148  // copy .sev -----------------------------------------------
149  l[j].sev=o->L[j].sev;
150  l[j].i_r = o->L[j].i_r;
151  //l[j].i_r1 = o->L[j].i_r1;
152  //l[j].i_r2 = o->L[j].i_r2;
153  }
154  n->L=l;
155 }
void PrintLn()
Definition: reporter.cc:322
class sLObject LObject
Definition: kutil.h:58
loop
Definition: myNF.cc:98
int Ll
Definition: kutil.h:354
return P p
Definition: myNF.cc:203
int tl
Definition: kutil.h:353
#define omAlloc(size)
Definition: omAllocDecl.h:210
int j
Definition: myNF.cc:70
polyrec * poly
Definition: hilb.h:10
LObject * LSet
Definition: kutil.h:60
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
Definition: polys.h:64
int i
Definition: cfEzgcd.cc:123
poly tail
Definition: kutil.h:334
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
Definition: polys.h:67
LSet L
Definition: kutil.h:325
#define NULL
Definition: omList.c:10
int Lmax
Definition: kutil.h:354
#define pNext(p)
Definition: monomials.h:43
TSet T
Definition: kutil.h:324
void wrp(poly p)
Definition: polys.h:281
int l
Definition: cfEzgcd.cc:94
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156
#define Warn
Definition: emacs.cc:80
static void copyT ( kStrategy  o,
kStrategy  n 
)
static

Definition at line 34 of file kstdfac.cc.

35 {
36  int i,j;
37  poly p;
38  TSet t=(TSet)omAlloc0(o->tmax*sizeof(TObject));
39  TObject** r = (TObject**)omAlloc0(o->tmax*sizeof(TObject*));
40 
41  for (j=0; j<=o->tl; j++)
42  {
43  t[j] = o->T[j];
44  r[t[j].i_r] = &t[j];
45  p = o->T[j].p;
46  i = -1;
47  loop
48  {
49  i++;
50  if (i>o->sl)
51  {
52  t[j].p=pCopy(p);
53  break;
54  }
55  if (p == o->S[i])
56  {
57  t[j].p=n->S[i];
58  break;
59  }
60  }
61  t[j].t_p = NULL; // ?? or t[j].p ??
62  t[j].max = NULL; // ?? or p_GetMaxExpP(t[j].t_p,o->tailRing); ??
63  t[j].pLength = pLength(p);
64  }
65  n->T=t;
66  n->R=r;
67 }
TObject * TSet
Definition: kutil.h:59
loop
Definition: myNF.cc:98
return P p
Definition: myNF.cc:203
int tl
Definition: kutil.h:353
static int pLength(poly a)
Definition: p_polys.h:189
const ring r
Definition: syzextra.cc:208
int j
Definition: myNF.cc:70
polyrec * poly
Definition: hilb.h:10
int i
Definition: cfEzgcd.cc:123
TObject ** R
Definition: kutil.h:340
polyset S
Definition: kutil.h:304
int tmax
Definition: kutil.h:353
#define NULL
Definition: omList.c:10
int sl
Definition: kutil.h:351
TSet T
Definition: kutil.h:324
#define omAlloc0(size)
Definition: omAllocDecl.h:211
class sTObject TObject
Definition: kutil.h:57
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156
BOOLEAN k_factorize ( poly  p,
ideal rfac,
ideal fac_copy 
)

Definition at line 248 of file kstdfac.cc.

249 {
250  int facdeg=currRing->pFDeg(p,currRing);
252  int fac_elems;
253  fac_elems=IDELEMS(fac);
254  rfac=fac;
255  fac_copy=idInit(fac_elems,1);
256 
257  if ((fac_elems!=1)||(facdeg!=currRing->pFDeg(fac->m[0],currRing)))
258  {
259  if (TEST_OPT_DEBUG)
260  {
261  Print("-> %d factors\n",fac_elems);
262  if (fac_elems!=1)
263  {
264  pWrite(p); PrintS(" ->\n");
265  int ii=fac_elems;
266  while(ii>0) { ii--;pWrite(fac->m[ii]); }
267  }
268  }
269  else if (TEST_OPT_PROT)
270  {
271  int ii=fac_elems;
272  if (ii>1)
273  {
274  while(ii>0) { PrintS("F"); ii--; }
275  }
276  }
277 #ifndef SING_NDEBUG
278  else if (strat_fac_debug)
279  {
280  pWrite(p);
281  Print("-> %d factors\n",fac_elems);
282  if (fac_elems!=1)
283  {
284  int ii=fac_elems;
285  while(ii>0) { ii--;pWrite(fac->m[ii]); }
286  }
287  }
288 #endif
289  return TRUE;
290  }
291  else
292  {
293  pDelete(&(fac->m[0]));
294  fac->m[0]=pCopy(p);
295  }
296  return FALSE;
297 }
#define Print
Definition: emacs.cc:83
#define TEST_OPT_PROT
Definition: options.h:98
#define FALSE
Definition: auxiliary.h:140
return P p
Definition: myNF.cc:203
const ideal
Definition: gb_hack.h:42
#define TRUE
Definition: auxiliary.h:144
void pWrite(poly p)
Definition: polys.h:279
#define TEST_OPT_DEBUG
Definition: options.h:103
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
void PrintS(const char *s)
Definition: reporter.cc:294
#define IDELEMS(i)
Definition: simpleideals.h:19
ideal idInit(int idsize, int rank)
Definition: simpleideals.cc:40
#define NULL
Definition: omList.c:10
#define pDelete(p_ptr)
Definition: polys.h:157
ideal singclap_factorize(poly f, intvec **v, int with_exps, const ring r)
Definition: clapsing.cc:784
int strat_fac_debug
Definition: kstdfac.cc:29
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156
ideal_list kStdfac ( ideal  F,
ideal  Q,
tHomog  h,
intvec **  w,
ideal  D 
)

Definition at line 885 of file kstdfac.cc.

886 {
887  ideal r;
888  BOOLEAN b=currRing->pLexOrder,toReset=FALSE;
889  BOOLEAN delete_w=(w==NULL);
891  kStrategy orgstrat=strat;
892  ideal_list L=NULL;
893 
895  strat->LazyPass=20;
896  else
897  strat->LazyPass=2;
898  strat->LazyDegree = 1;
899  strat->ak = id_RankFreeModule(F,currRing);
900  if (h==testHomog)
901  {
902  if (strat->ak==0)
903  {
904  h = (tHomog)idHomIdeal(F,Q);
905  w=NULL;
906  }
907  else
908  h = (tHomog)idHomModule(F,Q,w);
909  }
910  if (h==isHomog)
911  {
912  if ((w!=NULL) && (*w!=NULL))
913  {
914  kModW = *w;
915  strat->kModW = *w;
916  strat->pOrigFDeg = currRing->pFDeg;
917  strat->pOrigLDeg = currRing->pLDeg;
919  toReset = TRUE;
920  }
921  currRing->pLexOrder = TRUE;
922  strat->LazyPass*=2;
923  }
924  strat->homog=h;
925  initBuchMoraCrit(strat); /*set Gebauer, honey, sugarCrit*/
926  initBuchMoraPos(strat);
927  initBba(F,strat);
928  initBuchMora(F, Q,strat);
929  if (D!=NULL)
930  {
931  strat->D=idCopy(D);
932  }
933 // Ende der Initalisierung
934  while (strat!=NULL)
935  {
936  if (TEST_OPT_DEBUG)
937  PrintS("====================================\n");
938  if (w!=NULL)
939  r=bbafac(F,Q,*w,strat,L);
940  else
941  r=bbafac(F,Q,NULL,strat,L);
942 #ifdef KDEBUG
943  int i;
944  for (i=0; i<IDELEMS(r); i++) pTest(r->m[i]);
945 #endif
946  idSkipZeroes(r);
947  // Testausgabe:
948  //if (!idIs0(r))
949  //{
950  // PrintS("===================================================\n");
951  // iiWriteMatrix((matrix)r,"S",1,currRing,0);
952  // PrintS("\n===================================================\n");
953  //}
954  //else
955  //{
956  // PrintS("=========empty============================\n");
957  //}
958  if(!idIs0(r))
959  {
960  ideal_list LL=(ideal_list)omAlloc(sizeof(*LL));
961  LL->d=r;
962 #ifndef SING_NDEBUG
963  LL->nr=strat->nr;
964 #endif
965  LL->next=L;
966  L=LL;
967  }
968  strat=strat->next;
969  }
970  /* check for empty sets */
971  if (L!=NULL)
972  {
973  ideal_list Lj=L->next;
974  ideal_list Lj_prev=L;
975  while (Lj!=NULL)
976  {
977  ideal_list Li=L;
978  while(Li!=Lj)
979  {
980  ideal r=kNF(Lj->d,NULL,Li->d,0,KSTD_NF_LAZY | KSTD_NF_NONORM);
981  if (idIs0(r))
982  {
983 #ifndef SING_NDEBUG
984  if(strat_fac_debug)
985  {
986  Print("empty set L(%d) because:L(%d)\n",Lj->nr,Li->nr);
987  }
988 #endif
989  if (TEST_OPT_DEBUG)
990  {
991  Print("empty set L[%p] because:L[%p]\n",(void*)Lj,(void*)Li);
992  }
993  // delete L[j],
994  Li=L;
995  if (Lj_prev!=NULL)
996  {
997  Lj=Lj_prev;
998  if (Lj==L) Lj_prev=NULL;
999  else
1000  {
1001  Lj_prev=L;
1002  while(Lj_prev->next!=Lj) Lj_prev=Lj_prev->next;
1003  }
1004  }
1005  else Lj=NULL;
1006  }
1007  else
1008  {
1009  Li=Li->next;
1010  }
1011  idDelete (&r);
1012  }
1013  if (Lj!=NULL) Lj=Lj->next;
1014  }
1015  }
1016 // Ende: aufraeumen
1017  if (toReset)
1018  {
1019  pRestoreDegProcs(currRing,strat->pOrigFDeg, strat->pOrigLDeg);
1020  kModW = NULL;
1021  }
1022  currRing->pLexOrder = b;
1023  delete(strat);
1024  strat=orgstrat;
1025  while (strat!=NULL)
1026  {
1027  orgstrat=strat->next;
1028  delete(strat);
1029  strat=orgstrat;
1030  }
1031  if ((delete_w)&&(w!=NULL)&&(*w!=NULL)) delete *w;
1032  return L;
1033 }
BOOLEAN idHomIdeal(ideal id, ideal Q=NULL, const ring R=currRing)
Definition: ideals.h:109
int nr
Definition: kutil.h:347
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
Definition: kstd1.cc:2598
#define Print
Definition: emacs.cc:83
void initBuchMoraPos(kStrategy strat)
Definition: kutil.cc:7466
#define FALSE
Definition: auxiliary.h:140
void initBuchMora(ideal F, ideal Q, kStrategy strat)
Definition: kutil.cc:7558
#define pTest(p)
Definition: polys.h:387
const ideal
Definition: gb_hack.h:42
#define TRUE
Definition: auxiliary.h:144
int ak
Definition: kutil.h:356
#define TEST_OPT_DEBUG
Definition: options.h:103
#define Q
Definition: sirandom.c:25
BOOLEAN idHomModule(ideal m, ideal Q, intvec **w, const ring R=currRing)
Definition: ideals.h:114
#define omAlloc(size)
Definition: omAllocDecl.h:210
static BOOLEAN rField_has_simple_inverse(const ring r)
Definition: ring.h:488
pFDegProc pOrigFDeg
Definition: kutil.h:295
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
const ring r
Definition: syzextra.cc:208
pLDegProc pOrigLDeg
Definition: kutil.h:296
#define KSTD_NF_LAZY
Definition: kstd1.h:15
intvec * kModW
Definition: kstd1.cc:2042
BOOLEAN homog
Definition: kutil.h:366
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
tHomog
Definition: structs.h:37
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
Definition: p_polys.cc:3452
void initBba(ideal, kStrategy strat)
Definition: kstd1.cc:1279
D(ideal gnc_gr_bba(const ideal, const ideal, const intvec *, const intvec *, kStrategy, const ring _currRing)) D(ideal gnc_gr_mora(const ideal
Modified Plural's Buchberger's algorithmus.
void idDelete(ideal *h, ring r=currRing)
delete an ideal
Definition: ideals.h:31
void initBuchMoraCrit(kStrategy strat)
Definition: kutil.cc:7325
int i
Definition: cfEzgcd.cc:123
void PrintS(const char *s)
Definition: reporter.cc:294
#define IDELEMS(i)
Definition: simpleideals.h:19
void idSkipZeroes(ideal ide)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
Definition: p_polys.cc:3464
kStrategy strat
Definition: myNF.cc:319
#define KSTD_NF_NONORM
Definition: kstd1.h:19
#define NULL
Definition: omList.c:10
ideal D
Definition: kutil.h:302
const CanonicalForm & w
Definition: facAbsFact.cc:55
intvec * kModW
Definition: kutil.h:335
long kModDeg(poly p, ring r)
Definition: kstd1.cc:2044
ideal idCopy(ideal A, const ring R=currRing)
Definition: ideals.h:76
int strat_fac_debug
Definition: kstdfac.cc:29
int LazyPass
Definition: kutil.h:356
ideal bbafac(ideal, ideal Q, intvec *, kStrategy strat, ideal_list FL)
Definition: kstdfac.cc:541
static Poly * h
Definition: janet.cc:978
int BOOLEAN
Definition: auxiliary.h:131
kStrategy next
Definition: kutil.h:276
BOOLEAN idIs0(ideal h)
const poly b
Definition: syzextra.cc:213
int LazyDegree
Definition: kutil.h:356
kStrategy kStratCopy ( kStrategy  o)

Definition at line 157 of file kstdfac.cc.

158 {
159  // int i;
160  kTest_TS(o);
161  kStrategy s=new skStrategy;
162  s->next=NULL;
163  s->red=o->red;
164  s->initEcart=o->initEcart;
165  s->posInT=o->posInT;
166  s->posInL=o->posInL;
167  s->enterS=o->enterS;
169  s->posInLOld=o->posInLOld;
171  s->chainCrit=o->chainCrit;
172  s->Shdl=idCopy(o->Shdl);
173  s->S=s->Shdl->m;
174  s->tailRing = o->tailRing;
175  if (o->D!=NULL) s->D=idCopy(o->D);
176  else s->D=NULL;
177  s->ecartS=(int *)omAlloc(IDELEMS(o->Shdl)*sizeof(int));
178  memcpy(s->ecartS,o->ecartS,IDELEMS(o->Shdl)*sizeof(int));
179  s->sevS=(unsigned long *)omAlloc(IDELEMS(o->Shdl)*sizeof(unsigned long));
180  memcpy(s->sevS,o->sevS,IDELEMS(o->Shdl)*sizeof(unsigned long));
181  s->S_2_R=(int*)omAlloc(IDELEMS(o->Shdl)*sizeof(int));
182  memcpy(s->S_2_R,o->S_2_R,IDELEMS(o->Shdl)*sizeof(int));
183  s->sevT=(unsigned long *)omAlloc(o->tmax*sizeof(unsigned long));
184  memcpy(s->sevT,o->sevT,o->tmax*sizeof(unsigned long));
185  if(o->fromQ!=NULL)
186  {
187  s->fromQ=(int *)omAlloc(IDELEMS(o->Shdl)*sizeof(int));
188  memcpy(s->fromQ,o->fromQ,IDELEMS(o->Shdl)*sizeof(int));
189  }
190  else
191  s->fromQ=NULL;
192  copyT(o,s);//s->T=...
193  s->tail = pInit();
194  copyL(o,s);//s->L=...
195  s->B=initL();
196  s->kHEdge=pCopy(o->kHEdge);
197  s->kNoether=pCopy(o->kNoether);
198  if (o->NotUsedAxis!=NULL)
199  {
200  s->NotUsedAxis=(BOOLEAN *)omAlloc(currRing->N*sizeof(BOOLEAN));
201  memcpy(s->NotUsedAxis,o->NotUsedAxis,currRing->N*sizeof(BOOLEAN));
202  }
203  //s->P=s->L[s->Ll+1];
204  s->P.Init(o->tailRing);
205  s->update=o->update;
207  s->kModW = o->kModW;
208 // if (o->kModW!=NULL)
209 // s->kModW=ivCopy(o->kModW);
210 // else
211 // s->kModW=NULL;
212  s->pairtest=NULL;
213  s->sl=o->sl;
214  s->mu=o->mu;
215  s->tl=o->tl;
216  s->tmax=o->tmax;
217  s->Ll=o->Ll;
218  s->Lmax=o->Lmax;
219  s->Bl=-1;
220  s->Bmax=setmaxL;
221  s->ak=o->ak;
222  s->syzComp=o->syzComp;
223  s->LazyPass=o->LazyPass;
224  s->LazyDegree=o->LazyDegree;
225  s->HCord=o->HCord;
226  s->lastAxis=o->lastAxis;
227  s->interpt=o->interpt;
228  s->homog=o->homog;
229  s->news=o->news;
230  s->newt=o->newt;
231  s->kHEdgeFound=o->kHEdgeFound;
232  s->honey=o->honey;
233  s->sugarCrit=o->sugarCrit;
234  s->Gebauer=o->Gebauer;
236  s->fromT=o->fromT;
237  s->noetherSet=o->noetherSet;
238 #ifdef HAVE_SHIFTBBA
239  s->lV=o->lV;
240 #endif
241 #ifdef HAVE_PLURAL
243 #endif
244  kTest_TS(s);
245  return s;
246 }
const const intvec const intvec const ring _currRing const const intvec const intvec const ring _currRing int
Definition: gb_hack.h:53
int(* posInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
Definition: kutil.h:283
const CanonicalForm int s
Definition: facAbsFact.cc:55
BOOLEAN honey
Definition: kutil.h:371
#define setmaxL
Definition: kutil.h:27
int syzComp
Definition: kutil.h:357
poly kHEdge
Definition: kutil.h:327
int Ll
Definition: kutil.h:354
BOOLEAN noTailReduction
Definition: kutil.h:372
int * S_2_R
Definition: kutil.h:342
char news
Definition: kutil.h:395
char newt
Definition: kutil.h:396
BOOLEAN * NotUsedAxis
Definition: kutil.h:332
BOOLEAN noetherSet
Definition: kutil.h:374
BOOLEAN * pairtest
Definition: kutil.h:333
poly kNoether
Definition: kutil.h:328
int tl
Definition: kutil.h:353
int Bl
Definition: kutil.h:355
unsigned long * sevT
Definition: kutil.h:323
void(* initEcartPair)(LObject *h, poly f, poly g, int ecartF, int ecartG)
Definition: kutil.h:286
int ak
Definition: kutil.h:356
int(* red)(LObject *L, kStrategy strat)
Definition: kutil.h:277
#define omAlloc(size)
Definition: omAllocDecl.h:210
int(* posInT)(const TSet T, const int tl, LObject &h)
Definition: kutil.h:280
int Bmax
Definition: kutil.h:355
int lastAxis
Definition: kutil.h:359
int HCord
Definition: kutil.h:358
BOOLEAN interpt
Definition: kutil.h:365
void(* initEcart)(TObject *L)
Definition: kutil.h:279
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
void(* enterOnePair)(int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR)
Definition: kutil.h:289
int lV
Definition: kutil.h:363
BOOLEAN fromT
Definition: kutil.h:373
BOOLEAN homog
Definition: kutil.h:366
#define kTest_TS(A)
Definition: kutil.h:616
BOOLEAN Gebauer
Definition: kutil.h:372
intset fromQ
Definition: kutil.h:319
static void copyL(kStrategy o, kStrategy n)
Definition: kstdfac.cc:72
LObject P
Definition: kutil.h:300
BOOLEAN update
Definition: kutil.h:375
poly tail
Definition: kutil.h:334
int(* posInLOld)(const LSet Ls, const int Ll, LObject *Lo, const kStrategy strat)
Definition: kutil.h:287
polyset S
Definition: kutil.h:304
#define IDELEMS(i)
Definition: simpleideals.h:19
BOOLEAN sugarCrit
Definition: kutil.h:371
int tmax
Definition: kutil.h:353
BOOLEAN kHEdgeFound
Definition: kutil.h:370
intset ecartS
Definition: kutil.h:307
void(* chainCrit)(poly p, int ecart, kStrategy strat)
Definition: kutil.h:290
#define NULL
Definition: omList.c:10
LSet B
Definition: kutil.h:326
int Lmax
Definition: kutil.h:354
int mu
Definition: kutil.h:351
ring tailRing
Definition: kutil.h:343
#define pInit()
allocates a new monomial and initializes everything to 0
Definition: polys.h:61
ideal D
Definition: kutil.h:302
intvec * kModW
Definition: kutil.h:335
BOOLEAN no_prod_crit
Definition: kutil.h:389
unsigned long * sevS
Definition: kutil.h:320
BOOLEAN posInLOldFlag
Definition: kutil.h:376
int sl
Definition: kutil.h:351
ideal idCopy(ideal A, const ring R=currRing)
Definition: ideals.h:76
int LazyPass
Definition: kutil.h:356
static LSet initL(int nr=setmaxL)
Definition: kutil.h:416
ideal Shdl
Definition: kutil.h:301
void(* enterS)(LObject h, int pos, kStrategy strat, int atR)
Definition: kutil.h:285
int BOOLEAN
Definition: auxiliary.h:131
kStrategy next
Definition: kutil.h:276
int LazyDegree
Definition: kutil.h:356
static void copyT(kStrategy o, kStrategy n)
Definition: kstdfac.cc:34
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156

Variable Documentation

int strat_fac_debug =0

Definition at line 29 of file kstdfac.cc.

int strat_nr =0

Definition at line 28 of file kstdfac.cc.