348{
349
351 {
355 }
356
359 int lsmod=0;
360 if (
k==0) { lsmod=1;
k=1;}
361
365
366 ideal s_quot;
367 ideal s_A;
368 if (orig_ring != syz_ring)
369 {
372 }
373 else
374 {
377 }
378
380 {
381 p_Shift(&s_quot->m[
i],lsmod,syz_ring);
385 s_quot->m[
i]=
p_Add_q(s_quot->m[
i],
p,syz_ring);
386 }
388
389 if (lsmod==1)
390 {
392 {
394 }
395 }
397 {
400 {
405 }
407 }
408
409 ideal rest=
kNF(s_quot,syz_ring->qideal,s_A,0,lazyReduce);
410
413
416 {
420 {
424 {
426 }
427 else
428 {
430 }
431 }
434 }
435
438 {
440 {
446 }
447 }
448 else
449 {
451
454 {
459 {
463 {
466 }
467 else
468 {
470 }
471 }
473
476 }
477 }
479 if (orig_ring != syz_ring)
480 {
485 {
486 *unit=
idrMoveR(*unit, syz_ring, orig_ring);
487 }
489 }
491}
ideal id_Copy(ideal h1, const ring r)
copy an ideal
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
static void setUnit(int e, ideal *unit)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
void p_Shift(poly *p, int i, const ring r)
shifts components of the vector p by i
static poly p_Neg(poly p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
static unsigned long p_SetComp(poly p, unsigned long c, ring r)
static void p_Setm(poly p, const ring r)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
ideal idrMoveR(ideal &id, ring src_r, ring dest_r)
ideal idrMoveR_NoSort(ideal &id, ring src_r, ring dest_r)
ideal idrCopyR_NoSort(ideal id, ring src_r, ring dest_r)
ring rAssure_SyzOrder(const ring r, BOOLEAN complete)
void rDelete(ring r)
unconditionally deletes fields in r
void rSetSyzComp(int k, const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s