165 int basisMax = basisBS;
167 int * weights =
NULL;
168 int * lengthes =
NULL;
181 for ( k= 0; k < numMonoms; k++ ) {
192 #ifndef HAVE_EXPLICIT_CONSTR 198 #ifndef HAVE_EXPLICIT_CONSTR 209 for ( k= 0; k <
IDELEMS( source ); k++ ) {
210 poly temp= (source->m)[k];
212 while ( temp !=
NULL ) {
220 lengthes= (
int *)
omAlloc( numMonoms *
sizeof(
int ) );
221 order= (
int *)
omAlloc( numMonoms *
sizeof(
int ) );
224 for ( k= 0; k < numMonoms; k++ )
230 fglmReduce( & current, currV, m, numMonoms, source, weights );
233 while ( temp !=
NULL )
236 for ( b= 0; (b < basisSize) && (found ==
FALSE); b++ )
243 if ( found ==
FALSE )
245 if ( basisSize == basisMax )
254 basis[basisSize]=
pLmInit(temp);
261 #ifndef HAVE_EXPLICIT_CONSTR 262 mv[
k].mac_constr( currV );
269 for ( k= 0; k < numMonoms; k++ ) {
272 #ifndef HAVE_EXPLICIT_CONSTR 273 v[
k].mac_constr_i( basisSize );
278 while ( mon !=
NULL ) {
281 while ( found ==
FALSE ) {
301 for ( k= 0; k < basisSize; k++ )
310 for ( k= 0; k < numMonoms; k++ ) {
317 while ( (isZero ==
FALSE) && (act < numMonoms) ) {
319 for ( k= numMonoms - 1; k >= 0; k-- ) {
320 if ( lengthes[k] > 0 ) {
325 if ( lengthes[k] < lengthes[best-1] ) {
334 if ( ( isZero= gauss.reduce( v[best-1] )) ==
TRUE ) {
335 p= gauss.getDependence();
342 #ifndef HAVE_EXPLICIT_CONSTR 343 v[best-1].clearelems();
349 if ( isZero ==
TRUE ) {
356 for ( k= 0; k < p.
size(); k++ ) {
370 for ( k= 1; k <= numMonoms; k++ ) {
371 if ( ! temp.elemIsZero( k ) ) {
372 if ( result ==
NULL ) {
373 result=
pCopy( m[k-1] );
377 sum->next=
pCopy( m[k-1] );
391 #ifndef HAVE_EXPLICIT_CONSTR 397 for ( k= 0; k < basisSize; k++ )
401 #ifndef HAVE_EXPLICIT_CONSTR 404 for ( k= 0; k < numMonoms; k++ )
409 for ( k= 0; k < numMonoms; k++ )
int numNonZeroElems() const
fglmVector(fglmVectorRep *rep)
Implementation of class fglmVector
number getconstelem(int i) const
#define omFreeSize(addr, size)
static void fglmReduce(poly *pptr, fglmVector &v, polyset m, int numMonoms, ideal source, int *w)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
static int pLength(poly a)
#define omReallocSize(addr, o_size, size)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
void p_Content(poly ph, const ring r)
const Variable & v
< [in] a sqrfree bivariate poly
void setelem(int i, number &n)
bool isZero(const CFArray &A)
checks if entries of A are zero
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
#define pCopy(p)
return a copy of the poly
#define STICKYPROT2(msg, arg)