My Project
wrapper.cc
Go to the documentation of this file.
1 #include "kernel/mod2.h"
2 #include "polys/monomials/ring.h"
3 
4 #include "kernel/polys.h"
6 #include "kernel/ideals.h"
8 
9 #include "Singular/subexpr.h"
10 
11 //extern int (*ListGreatMove)(jList *,jList *,poly);
12 
13 static BOOLEAN jInitBasis(ideal v, jList **TT,jList **QQ)
14 {
16  {
17  WerrorS("janet only for well-orderings");
18  return TRUE;
19  }
20 
22 
23  jList *Q=(jList *)GCM(sizeof(jList));
24  Q->root=NULL;
25 
26  jList *T=(jList *)GCM(sizeof(jList));
27  T->root=NULL;
28 
29  for (int i=0; i < IDELEMS(v); i++)
30  {
31  if (v->m[i]!=NULL)
32  {
33  Poly *beg=NewPoly(pCopy(v->m[i]));
34 
35  InitHistory(beg);
36  InitProl(beg);
37  InitLead(beg);
38 
39  InsertInCount(Q,beg);
40  }
41  }
42 
43  BOOLEAN r= !(ComputeBasis(T,Q));
44  *TT=T;
45  *QQ=Q;
46  return r;
47 }
48 
49 /// flag: 0: JB, 1: SB
51 {
52  ideal result;
53 
54  jList *T;
55  jList *Q;
56  ideal I=(ideal)v->Data();
57  BOOLEAN is_zero=TRUE;
58  for (int i=0; i < IDELEMS(I); i++)
59  {
60  if ((I->m[i]!=NULL)&& (pIsConstant(I->m[i])))
61  {
62  goto zero;
63  }
64  else
65  is_zero=FALSE;
66  }
67  if (is_zero)
68  goto zero;
69  if (!jInitBasis(I,&T,&Q))
70  {
71  int dpO=(strstr(rOrdStr(currRing),"dp")!=NULL);
72  int ideal_length;
73  if (flag==1)
74  ideal_length= dpO ? GB_length() : CountList(T);
75  else
76  ideal_length=CountList(T);
77 
78  result=idInit(ideal_length,1);
79 
80  int ideal_index=0;
81 
82  LCI iT=T->root;
83 
84  while(iT)
85  {
86  pTest(iT->info->root);
87  if ((flag==1) && dpO)
88  {
89  //if (pTotaldegree(iT->info->lead) == pTotaldegree(iT->info->history))
90  if (p_Deg(iT->info->lead,currRing) == p_Deg(iT->info->history,currRing))
91  {
92  result->m[ideal_length-ideal_index-1]=pCopy(iT->info->root);
93  if (!nGreaterZero(pGetCoeff(iT->info->root)))
94  result->m[ideal_length-ideal_index-1]
95  =pNeg(result->m[ideal_length-ideal_index-1]);
96 
97  ideal_index++;
98  }
99  }
100  else
101  {
102  result->m[ideal_length-ideal_index-1]=pCopy(iT->info->root);
103  if (!nGreaterZero(pGetCoeff(iT->info->root)))
104  result->m[ideal_length-ideal_index-1]
105  =pNeg(result->m[ideal_length-ideal_index-1]);
106 
107  ideal_index++;
108  }
109  iT=iT->next;
110  }
111 
112  if ((flag==1) && (dpO==0))
113  {
114  //Print ("interred\n");
117  }
118  res->data = (char *)result;
119  res->rtyp = IDEAL_CMD;
120  DestroyList(Q);
121  DestroyList(T);
122  return FALSE;
123  }
124  else
125  return TRUE;
126 
127 zero:
128  result=idInit(1,1);
129  if (!is_zero) result->m[0]=pOne();
130  res->data = (char *)result;
131  res->rtyp = IDEAL_CMD;
132  return FALSE;
133 }
int BOOLEAN
Definition: auxiliary.h:87
#define TRUE
Definition: auxiliary.h:100
#define FALSE
Definition: auxiliary.h:96
int i
Definition: cfEzgcd.cc:132
Class used for (list of) interpreter objects.
Definition: subexpr.h:83
return result
Definition: facAbsBiFact.cc:75
CanonicalForm res
Definition: facAbsFact.cc:60
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:39
void WerrorS(const char *s)
Definition: feFopen.cc:24
@ IDEAL_CMD
Definition: grammar.cc:284
void InitLead(Poly *p)
Definition: janet.cc:409
STATIC_VAR jList * T
Definition: janet.cc:30
void InitHistory(Poly *p)
Definition: janet.cc:402
int ComputeBasis(jList *_lT, jList *_lQ)
Definition: janet.cc:1000
void DestroyList(jList *x)
Definition: janet.cc:714
int CountList(jList *Q)
Definition: janet.cc:617
void InitProl(Poly *p)
Definition: janet.cc:416
Poly * NewPoly(poly p)
Definition: janet.cc:361
STATIC_VAR jList * Q
Definition: janet.cc:30
void InsertInCount(jList *x, Poly *y)
Definition: janet.cc:571
void Initialization(char *Ord)
Definition: janet.cc:952
int GB_length()
Definition: janet.cc:740
ListNode * root
Definition: janet.h:36
ListNode * LCI
Definition: janet.h:48
#define GCM(sz)
Definition: janet.h:6
Definition: janet.h:35
ideal kInterRedOld(ideal F, ideal Q)
Definition: kstd1.cc:3409
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
Definition: monomials.h:44
#define nGreaterZero(n)
Definition: numbers.h:27
#define NULL
Definition: omList.c:12
long p_Deg(poly a, const ring r)
Definition: p_polys.cc:587
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:13
Compatibility layer for legacy polynomial operations (over currRing)
#define pTest(p)
Definition: polys.h:414
#define pIsConstant(p)
like above, except that Comp must be 0
Definition: polys.h:238
#define pNeg(p)
Definition: polys.h:198
#define pCopy(p)
return a copy of the poly
Definition: polys.h:185
#define pOne()
Definition: polys.h:315
char * rOrdStr(ring r)
Definition: ring.cc:521
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
Definition: ring.h:760
ideal idInit(int idsize, int rank)
initialise an ideal / module
Definition: simpleideals.cc:35
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
#define IDELEMS(i)
Definition: simpleideals.h:23
Definition: janet.h:15
static BOOLEAN jInitBasis(ideal v, jList **TT, jList **QQ)
Definition: wrapper.cc:13
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
Definition: wrapper.cc:50