My Project
Functions
kstdfac.h File Reference
#include "kernel/structs.h"
#include "polys/simpleideals.h"

Go to the source code of this file.

Functions

ideal_list kStdfac (ideal F, ideal Q, tHomog h, intvec **w, ideal D=NULL)
 

Function Documentation

◆ kStdfac()

ideal_list kStdfac ( ideal  F,
ideal  Q,
tHomog  h,
intvec **  w,
ideal  D = NULL 
)

Definition at line 798 of file kstdfac.cc.

799 {
800  ideal r;
801  BOOLEAN b=currRing->pLexOrder,toReset=FALSE;
802  BOOLEAN delete_w=(w==NULL);
803  kStrategy strat=new skStrategy;
804  kStrategy orgstrat=strat;
805  ideal_list L=NULL;
806 
808  strat->LazyPass=20;
809  else
810  strat->LazyPass=2;
811  strat->LazyDegree = 1;
812  strat->ak = id_RankFreeModule(F,currRing);
813  if (h==testHomog)
814  {
815  if (strat->ak==0)
816  {
817  h = (tHomog)idHomIdeal(F,Q);
818  w=NULL;
819  }
820  else
821  h = (tHomog)idHomModule(F,Q,w);
822  }
823  if (h==isHomog)
824  {
825  if ((w!=NULL) && (*w!=NULL))
826  {
827  kModW = *w;
828  strat->kModW = *w;
829  strat->pOrigFDeg = currRing->pFDeg;
830  strat->pOrigLDeg = currRing->pLDeg;
832  toReset = TRUE;
833  }
834  currRing->pLexOrder = TRUE;
835  strat->LazyPass*=2;
836  }
837  strat->homog=h;
838  initBuchMoraCrit(strat); /*set Gebauer, honey, sugarCrit*/
839  initBuchMoraPos(strat);
840  initBba(strat);
841  initBuchMora(F, Q,strat);
842  if (D!=NULL)
843  {
844  strat->D=idCopy(D);
845  }
846 // Ende der Initalisierung
847  while (strat!=NULL)
848  {
849  if (TEST_OPT_DEBUG)
850  PrintS("====================================\n");
851  if (w!=NULL)
852  r=bbafac(F,Q,*w,strat,L);
853  else
854  r=bbafac(F,Q,NULL,strat,L);
855 #ifdef KDEBUG
856  int i;
857  for (i=0; i<IDELEMS(r); i++) pTest(r->m[i]);
858 #endif
859  idSkipZeroes(r);
860  // Testausgabe:
861  //if (!idIs0(r))
862  //{
863  // PrintS("===================================================\n");
864  // iiWriteMatrix((matrix)r,"S",1,currRing,0);
865  // PrintS("\n===================================================\n");
866  //}
867  //else
868  //{
869  // PrintS("=========empty============================\n");
870  //}
871  if(!idIs0(r))
872  {
873  ideal_list LL=(ideal_list)omAlloc(sizeof(*LL));
874  LL->d=r;
875 #ifndef SING_NDEBUG
876  LL->nr=strat->nr;
877 #endif
878  LL->next=L;
879  L=LL;
880  }
881  strat=strat->next;
882  }
883  /* check for empty sets */
884  if (L!=NULL)
885  {
886  ideal_list Lj=L->next;
887  ideal_list Lj_prev=L;
888  while (Lj!=NULL)
889  {
890  ideal_list Li=L;
891  while(Li!=Lj)
892  {
893  ideal r=kNF(Lj->d,NULL,Li->d,0,KSTD_NF_LAZY | KSTD_NF_NONORM);
894  if (idIs0(r))
895  {
896 #ifdef KDEBUG
897  if (TEST_OPT_DEBUG)
898  {
899  Print("empty set L[%p] because:L[%p]\n",(void*)Lj,(void*)Li);
900  }
901 #endif
902  // delete L[j],
903  Li=L;
904  if (Lj_prev!=NULL)
905  {
906  Lj=Lj_prev;
907  if (Lj==L) Lj_prev=NULL;
908  else
909  {
910  Lj_prev=L;
911  while(Lj_prev->next!=Lj) Lj_prev=Lj_prev->next;
912  }
913  }
914  else Lj=NULL;
915  }
916  else
917  {
918  Li=Li->next;
919  }
920  idDelete (&r);
921  }
922  if (Lj!=NULL) Lj=Lj->next;
923  }
924  }
925 // Ende: aufraeumen
926  if (toReset)
927  {
929  kModW = NULL;
930  }
931  currRing->pLexOrder = b;
932  delete(strat);
933  strat=orgstrat;
934  while (strat!=NULL)
935  {
936  orgstrat=strat->next;
937  delete(strat);
938  strat=orgstrat;
939  }
940  if ((delete_w)&&(w!=NULL)&&(*w!=NULL)) delete *w;
941  return L;
942 }
int BOOLEAN
Definition: auxiliary.h:87
#define TRUE
Definition: auxiliary.h:100
#define FALSE
Definition: auxiliary.h:96
int i
Definition: cfEzgcd.cc:132
CanonicalForm b
Definition: cfModGcd.cc:4103
kStrategy next
Definition: kutil.h:277
intvec * kModW
Definition: kutil.h:335
ideal D
Definition: kutil.h:304
int ak
Definition: kutil.h:353
int nr
Definition: kutil.h:346
pFDegProc pOrigFDeg
Definition: kutil.h:296
int LazyPass
Definition: kutil.h:353
int LazyDegree
Definition: kutil.h:353
char homog
Definition: kutil.h:372
pLDegProc pOrigLDeg
Definition: kutil.h:297
#define Print
Definition: emacs.cc:80
const CanonicalForm & w
Definition: facAbsFact.cc:51
#define D(A)
Definition: gentable.cc:131
#define idDelete(H)
delete an ideal
Definition: ideals.h:29
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
Definition: ideals.h:96
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
Definition: ideals.h:91
ideal idCopy(ideal A)
Definition: ideals.h:60
STATIC_VAR Poly * h
Definition: janet.cc:971
STATIC_VAR jList * Q
Definition: janet.cc:30
long kModDeg(poly p, ring r)
Definition: kstd1.cc:2410
void initBba(kStrategy strat)
Definition: kstd1.cc:1676
VAR intvec * kModW
Definition: kstd1.cc:2408
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
Definition: kstd1.cc:3167
#define KSTD_NF_LAZY
Definition: kstd1.h:17
#define KSTD_NF_NONORM
Definition: kstd1.h:21
ideal bbafac(ideal, ideal Q, intvec *, kStrategy strat, ideal_list FL)
Definition: kstdfac.cc:480
void initBuchMora(ideal F, ideal Q, kStrategy strat)
Definition: kutil.cc:10019
void initBuchMoraPos(kStrategy strat)
Definition: kutil.cc:9846
void initBuchMoraCrit(kStrategy strat)
Definition: kutil.cc:9694
#define omAlloc(size)
Definition: omAllocDecl.h:210
#define NULL
Definition: omList.c:12
#define TEST_OPT_DEBUG
Definition: options.h:108
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
Definition: p_polys.cc:3723
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
Definition: p_polys.cc:3711
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:13
#define pTest(p)
Definition: polys.h:415
void PrintS(const char *s)
Definition: reporter.cc:284
static BOOLEAN rField_has_simple_inverse(const ring r)
Definition: ring.h:549
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
#define IDELEMS(i)
Definition: simpleideals.h:23
tHomog
Definition: structs.h:39
@ isHomog
Definition: structs.h:41
@ testHomog
Definition: structs.h:42