Functions
wrapper.cc File Reference
#include <kernel/mod2.h>
#include <polys/monomials/ring.h>
#include <kernel/polys.h>
#include <kernel/GBEngine/kstd1.h>
#include <kernel/ideals.h>
#include <kernel/GBEngine/janet.h>
#include <Singular/subexpr.h>
#include <string.h>

Go to the source code of this file.

Functions

static BOOLEAN jInitBasis (ideal v, jList **TT, jList **QQ)
 
BOOLEAN jjStdJanetBasis (leftv res, leftv v, int flag)
 flag: 0: JB, 1: SB More...
 

Function Documentation

static BOOLEAN jInitBasis ( ideal  v,
jList **  TT,
jList **  QQ 
)
static

Definition at line 15 of file wrapper.cc.

16 {
18  {
19  WerrorS("janet only for well-orderings");
20  return TRUE;
21  }
22 
24 
25  jList *Q=(jList *)GCM(sizeof(jList));
26  Q->root=NULL;
27 
28  jList *T=(jList *)GCM(sizeof(jList));
29  T->root=NULL;
30 
31  for (int i=0; i < IDELEMS(v); i++)
32  {
33  if (v->m[i]!=NULL)
34  {
35  Poly *beg=NewPoly(pCopy(v->m[i]));
36 
37  InitHistory(beg);
38  InitProl(beg);
39  InitLead(beg);
40 
41  InsertInCount(Q,beg);
42  }
43  }
44 
45  BOOLEAN r= !(ComputeBasis(T,Q));
46  *TT=T;
47  *QQ=Q;
48  return r;
49 }
ListNode * root
Definition: janet.h:36
void InitProl(Poly *p)
Definition: janet.cc:423
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:24
#define Q
Definition: sirandom.c:25
Definition: janet.h:34
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
Poly * NewPoly(poly p)
Definition: janet.cc:368
Definition: janet.h:14
int i
Definition: cfEzgcd.cc:123
void InitLead(Poly *p)
Definition: janet.cc:416
#define GCM(sz)
Definition: janet.h:6
#define IDELEMS(i)
Definition: simpleideals.h:24
#define rHasLocalOrMixedOrdering_currRing()
Definition: ring.h:757
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
void InsertInCount(jList *x, Poly *y)
Definition: janet.cc:578
#define NULL
Definition: omList.c:10
void Initialization(char *Ord)
Definition: janet.cc:959
void InitHistory(Poly *p)
Definition: janet.cc:409
int ComputeBasis(jList *_lT, jList *_lQ)
Definition: janet.cc:1007
static jList * T
Definition: janet.cc:37
int BOOLEAN
Definition: auxiliary.h:131
char * rOrdStr(ring r)
Definition: ring.cc:522
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156
BOOLEAN jjStdJanetBasis ( leftv  res,
leftv  v,
int  flag 
)

flag: 0: JB, 1: SB

Definition at line 52 of file wrapper.cc.

53 {
54  ideal result;
55 
56  jList *T;
57  jList *Q;
58  ideal I=(ideal)v->Data();
59  BOOLEAN is_zero=TRUE;
60  for (int i=0; i < IDELEMS(I); i++)
61  {
62  if ((I->m[i]!=NULL)&& (pIsConstant(I->m[i])))
63  {
64  goto zero;
65  }
66  else
67  is_zero=FALSE;
68  }
69  if (is_zero)
70  goto zero;
71  if (!jInitBasis(I,&T,&Q))
72  {
73  int dpO=(strstr(rOrdStr(currRing),"dp")!=NULL);
74  int ideal_length;
75  if (flag==1)
76  ideal_length= dpO ? GB_length() : CountList(T);
77  else
78  ideal_length=CountList(T);
79 
80  result=idInit(ideal_length,1);
81 
82  int ideal_index=0;
83 
84  LCI iT=T->root;
85 
86  while(iT)
87  {
88  pTest(iT->info->root);
89  if ((flag==1) && dpO)
90  {
91  //if (pTotaldegree(iT->info->lead) == pTotaldegree(iT->info->history))
92  if (p_Deg(iT->info->lead,currRing) == p_Deg(iT->info->history,currRing))
93  {
94  result->m[ideal_length-ideal_index-1]=pCopy(iT->info->root);
95  if (!nGreaterZero(pGetCoeff(iT->info->root)))
96  result->m[ideal_length-ideal_index-1]
97  =pNeg(result->m[ideal_length-ideal_index-1]);
98 
99  ideal_index++;
100  }
101  }
102  else
103  {
104  result->m[ideal_length-ideal_index-1]=pCopy(iT->info->root);
105  if (!nGreaterZero(pGetCoeff(iT->info->root)))
106  result->m[ideal_length-ideal_index-1]
107  =pNeg(result->m[ideal_length-ideal_index-1]);
108 
109  ideal_index++;
110  }
111  iT=iT->next;
112  }
113 
114  if ((flag==1) && (dpO==0))
115  {
116  //Print ("interred\n");
117  result=kInterRedOld(result);
118  idSkipZeroes(result);
119  }
120  res->data = (char *)result;
121  res->rtyp = IDEAL_CMD;
122  DestroyList(Q);
123  DestroyList(T);
124  return FALSE;
125  }
126  else
127  return TRUE;
128 
129 zero:
130  result=idInit(1,1);
131  if (!is_zero) result->m[0]=pOne();
132  res->data = (char *)result;
133  res->rtyp = IDEAL_CMD;
134  return FALSE;
135 }
ListNode * root
Definition: janet.h:36
ListNode * LCI
Definition: janet.h:48
static BOOLEAN jInitBasis(ideal v, jList **TT, jList **QQ)
Definition: wrapper.cc:15
#define FALSE
Definition: auxiliary.h:140
#define pTest(p)
Definition: polys.h:387
#define pNeg(p)
Definition: polys.h:169
void DestroyList(jList *x)
Definition: janet.cc:721
#define TRUE
Definition: auxiliary.h:144
#define Q
Definition: sirandom.c:25
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
Definition: monomials.h:51
Definition: janet.h:34
void * data
Definition: subexpr.h:89
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:12
int CountList(jList *Q)
Definition: janet.cc:624
long p_Deg(poly a, const ring r)
Definition: p_polys.cc:586
#define nGreaterZero(n)
Definition: numbers.h:27
#define pIsConstant(p)
like above, except that Comp might be != 0
Definition: polys.h:209
int i
Definition: cfEzgcd.cc:123
ideal kInterRedOld(ideal F, ideal Q)
Definition: kstd1.cc:2932
#define pOne()
Definition: polys.h:286
#define IDELEMS(i)
Definition: simpleideals.h:24
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
ideal idInit(int idsize, int rank)
initialise an ideal / module
Definition: simpleideals.cc:38
#define NULL
Definition: omList.c:10
int rtyp
Definition: subexpr.h:92
void * Data()
Definition: subexpr.cc:1118
int GB_length()
Definition: janet.cc:747
static jList * T
Definition: janet.cc:37
int BOOLEAN
Definition: auxiliary.h:131
char * rOrdStr(ring r)
Definition: ring.cc:522
return result
Definition: facAbsBiFact.cc:76
#define pCopy(p)
return a copy of the poly
Definition: polys.h:156