Public Member Functions | Private Member Functions | Private Attributes
mp_permmatrix Class Reference

Public Member Functions

 mp_permmatrix ()
 
 mp_permmatrix (matrix, const ring)
 
 mp_permmatrix (mp_permmatrix *)
 
 ~mp_permmatrix ()
 
int mpGetRow ()
 
int mpGetCol ()
 
int mpGetRdim ()
 
int mpGetCdim ()
 
int mpGetSign ()
 
void mpSetSearch (int s)
 
void mpSaveArray ()
 
poly mpGetElem (int, int)
 
void mpSetElem (poly, int, int)
 
void mpDelElem (int, int)
 
void mpElimBareiss (poly)
 
int mpPivotBareiss (row_col_weight *)
 
int mpPivotRow (row_col_weight *, int)
 
void mpToIntvec (intvec *)
 
void mpRowReorder ()
 
void mpColReorder ()
 
 mp_permmatrix ()
 
 mp_permmatrix (matrix, ring)
 
 mp_permmatrix (mp_permmatrix *)
 
 ~mp_permmatrix ()
 
int mpGetRow ()
 
int mpGetCol ()
 
int mpGetRdim ()
 
int mpGetCdim ()
 
int mpGetSign ()
 
void mpSetSearch (int s)
 
void mpSaveArray ()
 
poly mpGetElem (int, int)
 
void mpSetElem (poly, int, int)
 
void mpDelElem (int, int)
 
void mpElimBareiss (poly)
 
int mpPivotBareiss (row_col_weight *)
 
int mpPivotRow (row_col_weight *, int)
 
void mpToIntvec (intvec *)
 
void mpRowReorder ()
 
void mpColReorder ()
 

Private Member Functions

void mpInitMat ()
 
polympRowAdr (int)
 
polympColAdr (int)
 
void mpRowWeight (float *)
 
void mpColWeight (float *)
 
void mpRowSwap (int, int)
 
void mpColSwap (int, int)
 
void mpInitMat ()
 
polympRowAdr (int r)
 
polympColAdr (int c)
 
void mpRowWeight (float *)
 
void mpColWeight (float *)
 
void mpRowSwap (int, int)
 
void mpColSwap (int, int)
 

Private Attributes

int a_m
 
int a_n
 
int s_m
 
int s_n
 
int sign
 
int piv_s
 
int * qrow
 
int * qcol
 
polyXarray
 
ring R
 
ring _R
 

Detailed Description

Definition at line 193 of file linalg_from_matpol.cc.

Constructor & Destructor Documentation

◆ mp_permmatrix() [1/6]

mp_permmatrix::mp_permmatrix ( )
inline

Definition at line 209 of file linalg_from_matpol.cc.

209 : a_m(0), R(NULL) {}
#define NULL
Definition: omList.c:10

◆ mp_permmatrix() [2/6]

mp_permmatrix::mp_permmatrix ( matrix  A,
const ring  r 
)

Definition at line 372 of file linalg_from_matpol.cc.

372  : sign(1), R(r)
373 {
374  a_m = A->nrows;
375  a_n = A->ncols;
376  this->mpInitMat();
377  Xarray = A->m;
378 }
int ncols
Definition: matpol.h:22
poly * m
Definition: matpol.h:19
const ring r
Definition: syzextra.cc:208
int nrows
Definition: matpol.h:21

◆ mp_permmatrix() [3/6]

mp_permmatrix::mp_permmatrix ( mp_permmatrix M)

Definition at line 380 of file linalg_from_matpol.cc.

381 {
382  poly p, *athis, *aM;
383  int i, j;
384 
385  a_m = M->s_m;
386  a_n = M->s_n;
387  sign = M->sign;
388  R = M->R;
389 
390  this->mpInitMat();
391  Xarray = (poly *)omAlloc0(a_m*a_n*sizeof(poly));
392  for (i=a_m-1; i>=0; i--)
393  {
394  athis = this->mpRowAdr(i);
395  aM = M->mpRowAdr(i);
396  for (j=a_n-1; j>=0; j--)
397  {
398  p = aM[M->qcol[j]];
399  if (p)
400  {
401  athis[j] = p_Copy(p, R);
402  }
403  }
404  }
405 }
return P p
Definition: myNF.cc:203
static poly p_Copy(poly p, const ring r)
returns a copy of p
Definition: p_polys.h:804
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123
poly * mpRowAdr(int)
polyrec * poly
Definition: hilb.h:10
#define omAlloc0(size)
Definition: omAllocDecl.h:211

◆ ~mp_permmatrix() [1/2]

mp_permmatrix::~mp_permmatrix ( )

Definition at line 407 of file linalg_from_matpol.cc.

408 {
409  int k;
410 
411  if (a_m != 0)
412  {
413  omFreeSize((ADDRESS)qrow,a_m*sizeof(int));
414  omFreeSize((ADDRESS)qcol,a_n*sizeof(int));
415  if (Xarray != NULL)
416  {
417  for (k=a_m*a_n-1; k>=0; k--)
418  p_Delete(&Xarray[k], R);
419  omFreeSize((ADDRESS)Xarray,a_m*a_n*sizeof(poly));
420  }
421  }
422 }
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:115
int k
Definition: cfEzgcd.cc:93
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:843
#define NULL
Definition: omList.c:10
polyrec * poly
Definition: hilb.h:10

◆ mp_permmatrix() [4/6]

mp_permmatrix::mp_permmatrix ( )
inline

Definition at line 854 of file matpol.cc.

854 : a_m(0) {}

◆ mp_permmatrix() [5/6]

mp_permmatrix::mp_permmatrix ( matrix  ,
ring   
)

◆ mp_permmatrix() [6/6]

mp_permmatrix::mp_permmatrix ( mp_permmatrix )

◆ ~mp_permmatrix() [2/2]

mp_permmatrix::~mp_permmatrix ( )

Member Function Documentation

◆ mpColAdr() [1/2]

poly * mp_permmatrix::mpColAdr ( int  c)
private

Definition at line 733 of file linalg_from_matpol.cc.

734 {
735  return &(Xarray[qcol[c]]);
736 }

◆ mpColAdr() [2/2]

poly* mp_permmatrix::mpColAdr ( int  c)
inlineprivate

Definition at line 847 of file matpol.cc.

848  { return &(Xarray[qcol[c]]); }

◆ mpColReorder() [1/2]

void mp_permmatrix::mpColReorder ( )

Definition at line 693 of file linalg_from_matpol.cc.

694 {
695  int k, j, j1, j2;
696 
697  if (a_n > a_m)
698  k = a_n - a_m;
699  else
700  k = 0;
701  for (j=a_n-1; j>=k; j--)
702  {
703  j1 = qcol[j];
704  if (j1 != j)
705  {
706  this->mpColSwap(j1, j);
707  j2 = 0;
708  while (qcol[j2] != j) j2++;
709  qcol[j2] = j1;
710  }
711  }
712 }
int k
Definition: cfEzgcd.cc:93
int j
Definition: myNF.cc:70
void mpColSwap(int, int)

◆ mpColReorder() [2/2]

void mp_permmatrix::mpColReorder ( )

◆ mpColSwap() [1/2]

void mp_permmatrix::mpColSwap ( int  j1,
int  j2 
)
private

Definition at line 793 of file linalg_from_matpol.cc.

794 {
795  poly p, *a1, *a2;
796  int i, k = a_n*a_m;
797 
798  a1 = &(Xarray[j1]);
799  a2 = &(Xarray[j2]);
800  for (i=0; i< k; i+=a_n)
801  {
802  p = a1[i];
803  a1[i] = a2[i];
804  a2[i] = p;
805  }
806 }
return P p
Definition: myNF.cc:203
int k
Definition: cfEzgcd.cc:93
int i
Definition: cfEzgcd.cc:123
polyrec * poly
Definition: hilb.h:10

◆ mpColSwap() [2/2]

void mp_permmatrix::mpColSwap ( int  ,
int   
)
private

◆ mpColWeight() [1/2]

void mp_permmatrix::mpColWeight ( float *  wcol)
private

Definition at line 758 of file linalg_from_matpol.cc.

759 {
760  poly p, *a;
761  int i, j;
762  float count;
763 
764  for (j=s_n; j>=0; j--)
765  {
766  a = this->mpColAdr(j);
767  count = 0.0;
768  for(i=s_m; i>=0; i--)
769  {
770  p = a[a_n*qrow[i]];
771  if (p)
772  count += mp_PolyWeight(p, R);
773  }
774  wcol[j] = count;
775  }
776 }
int status int void size_t count
Definition: si_signals.h:59
const poly a
Definition: syzextra.cc:212
return P p
Definition: myNF.cc:203
int j
Definition: myNF.cc:70
poly * mpColAdr(int)
int i
Definition: cfEzgcd.cc:123
static float mp_PolyWeight(poly, const ring)
polyrec * poly
Definition: hilb.h:10

◆ mpColWeight() [2/2]

void mp_permmatrix::mpColWeight ( float *  )
private

◆ mpDelElem() [1/2]

void mp_permmatrix::mpDelElem ( int  r,
int  c 
)

Definition at line 444 of file linalg_from_matpol.cc.

445 {
446  p_Delete(&Xarray[a_n*qrow[r]+qcol[c]], R);
447 }
const ring r
Definition: syzextra.cc:208
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:843

◆ mpDelElem() [2/2]

void mp_permmatrix::mpDelElem ( int  ,
int   
)

◆ mpElimBareiss() [1/2]

void mp_permmatrix::mpElimBareiss ( poly  div)

Definition at line 452 of file linalg_from_matpol.cc.

453 {
454  poly piv, elim, q1, q2, *ap, *a;
455  int i, j, jj;
456 
457  ap = this->mpRowAdr(s_m);
458  piv = ap[qcol[s_n]];
459  for(i=s_m-1; i>=0; i--)
460  {
461  a = this->mpRowAdr(i);
462  elim = a[qcol[s_n]];
463  if (elim != NULL)
464  {
465  elim = p_Neg(elim, R);
466  for (j=s_n-1; j>=0; j--)
467  {
468  q2 = NULL;
469  jj = qcol[j];
470  if (ap[jj] != NULL)
471  {
472  q2 = SM_MULT(ap[jj], elim, div, R);
473  if (a[jj] != NULL)
474  {
475  q1 = SM_MULT(a[jj], piv, div, R);
476  p_Delete(&a[jj], R);
477  q2 = p_Add_q(q2, q1, R);
478  }
479  }
480  else if (a[jj] != NULL)
481  {
482  q2 = SM_MULT(a[jj], piv, div, R);
483  }
484  if ((q2!=NULL) && div)
485  SM_DIV(q2, div, R);
486  a[jj] = q2;
487  }
488  p_Delete(&a[qcol[s_n]], R);
489  }
490  else
491  {
492  for (j=s_n-1; j>=0; j--)
493  {
494  jj = qcol[j];
495  if (a[jj] != NULL)
496  {
497  q2 = SM_MULT(a[jj], piv, div, R);
498  p_Delete(&a[jj], R);
499  if (div)
500  SM_DIV(q2, div, R);
501  a[jj] = q2;
502  }
503  }
504  }
505  }
506 }
const poly a
Definition: syzextra.cc:212
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:843
CF_NO_INLINE CanonicalForm div(const CanonicalForm &, const CanonicalForm &)
CF_INLINE CanonicalForm div, mod ( const CanonicalForm & lhs, const CanonicalForm & rhs ) ...
Definition: cf_inline.cc:553
#define NULL
Definition: omList.c:10
#define SM_MULT
Definition: sparsmat.h:23
#define SM_DIV
Definition: sparsmat.h:24
poly * mpRowAdr(int)
static poly p_Neg(poly p, const ring r)
Definition: p_polys.h:1013
polyrec * poly
Definition: hilb.h:10
static poly p_Add_q(poly p, poly q, const ring r)
Definition: p_polys.h:877

◆ mpElimBareiss() [2/2]

void mp_permmatrix::mpElimBareiss ( poly  )

◆ mpGetCdim() [1/2]

int mp_permmatrix::mpGetCdim ( )

Definition at line 426 of file linalg_from_matpol.cc.

426 { return s_n; }

◆ mpGetCdim() [2/2]

int mp_permmatrix::mpGetCdim ( )
inline

Definition at line 861 of file matpol.cc.

861 { return s_n; }

◆ mpGetCol() [1/2]

int mp_permmatrix::mpGetCol ( )

Definition at line 813 of file linalg_from_matpol.cc.

814 {
815  return qcol[s_n];
816 }

◆ mpGetCol() [2/2]

int mp_permmatrix::mpGetCol ( )

◆ mpGetElem() [1/2]

poly mp_permmatrix::mpGetElem ( int  r,
int  c 
)

Definition at line 434 of file linalg_from_matpol.cc.

435 {
436  return Xarray[a_n*qrow[r]+qcol[c]];
437 }
const ring r
Definition: syzextra.cc:208

◆ mpGetElem() [2/2]

poly mp_permmatrix::mpGetElem ( int  ,
int   
)

◆ mpGetRdim() [1/2]

int mp_permmatrix::mpGetRdim ( )

Definition at line 424 of file linalg_from_matpol.cc.

424 { return s_m; }

◆ mpGetRdim() [2/2]

int mp_permmatrix::mpGetRdim ( )
inline

Definition at line 860 of file matpol.cc.

860 { return s_m; }

◆ mpGetRow() [1/2]

int mp_permmatrix::mpGetRow ( )

Definition at line 808 of file linalg_from_matpol.cc.

809 {
810  return qrow[s_m];
811 }

◆ mpGetRow() [2/2]

int mp_permmatrix::mpGetRow ( )

◆ mpGetSign() [1/2]

int mp_permmatrix::mpGetSign ( )

Definition at line 428 of file linalg_from_matpol.cc.

428 { return sign; }

◆ mpGetSign() [2/2]

int mp_permmatrix::mpGetSign ( )
inline

Definition at line 862 of file matpol.cc.

862 { return sign; }

◆ mpInitMat() [1/2]

void mp_permmatrix::mpInitMat ( )
private

Definition at line 715 of file linalg_from_matpol.cc.

716 {
717  int k;
718 
719  s_m = a_m;
720  s_n = a_n;
721  piv_s = 0;
722  qrow = (int *)omAlloc(a_m*sizeof(int));
723  qcol = (int *)omAlloc(a_n*sizeof(int));
724  for (k=a_m-1; k>=0; k--) qrow[k] = k;
725  for (k=a_n-1; k>=0; k--) qcol[k] = k;
726 }
int k
Definition: cfEzgcd.cc:93
#define omAlloc(size)
Definition: omAllocDecl.h:210

◆ mpInitMat() [2/2]

void mp_permmatrix::mpInitMat ( )
private

◆ mpPivotBareiss() [1/2]

int mp_permmatrix::mpPivotBareiss ( row_col_weight C)

Definition at line 511 of file linalg_from_matpol.cc.

512 {
513  poly p, *a;
514  int i, j, iopt, jopt;
515  float sum, f1, f2, fo, r, ro, lp;
516  float *dr = C->wrow, *dc = C->wcol;
517 
518  fo = 1.0e20;
519  ro = 0.0;
520  iopt = jopt = -1;
521 
522  s_n--;
523  s_m--;
524  if (s_m == 0)
525  return 0;
526  if (s_n == 0)
527  {
528  for(i=s_m; i>=0; i--)
529  {
530  p = this->mpRowAdr(i)[qcol[0]];
531  if (p)
532  {
533  f1 = mp_PolyWeight(p, R);
534  if (f1 < fo)
535  {
536  fo = f1;
537  if (iopt >= 0)
538  p_Delete(&(this->mpRowAdr(iopt)[qcol[0]]), R);
539  iopt = i;
540  }
541  else
542  p_Delete(&(this->mpRowAdr(i)[qcol[0]]), R);
543  }
544  }
545  if (iopt >= 0)
546  mpReplace(iopt, s_m, sign, qrow);
547  return 0;
548  }
549  this->mpRowWeight(dr);
550  this->mpColWeight(dc);
551  sum = 0.0;
552  for(i=s_m; i>=0; i--)
553  sum += dr[i];
554  for(i=s_m; i>=0; i--)
555  {
556  r = dr[i];
557  a = this->mpRowAdr(i);
558  for(j=s_n; j>=0; j--)
559  {
560  p = a[qcol[j]];
561  if (p)
562  {
563  lp = mp_PolyWeight(p, R);
564  ro = r - lp;
565  f1 = ro * (dc[j]-lp);
566  if (f1 != 0.0)
567  {
568  f2 = lp * (sum - ro - dc[j]);
569  f2 += f1;
570  }
571  else
572  f2 = lp-r-dc[j];
573  if (f2 < fo)
574  {
575  fo = f2;
576  iopt = i;
577  jopt = j;
578  }
579  }
580  }
581  }
582  if (iopt < 0)
583  return 0;
584  mpReplace(iopt, s_m, sign, qrow);
585  mpReplace(jopt, s_n, sign, qcol);
586  return 1;
587 }
const poly a
Definition: syzextra.cc:212
return P p
Definition: myNF.cc:203
void mpColWeight(float *)
void mpRowWeight(float *)
const ring r
Definition: syzextra.cc:208
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123
static float mp_PolyWeight(poly, const ring)
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:843
poly * mpRowAdr(int)
static void mpReplace(int j, int n, int &sign, int *perm)
perform replacement for pivot strategy in Bareiss algorithm change sign of determinant ...
polyrec * poly
Definition: hilb.h:10

◆ mpPivotBareiss() [2/2]

int mp_permmatrix::mpPivotBareiss ( row_col_weight )

◆ mpPivotRow() [1/2]

int mp_permmatrix::mpPivotRow ( row_col_weight C,
int  row 
)

Definition at line 592 of file linalg_from_matpol.cc.

593 {
594  poly p, *a;
595  int j, iopt, jopt;
596  float sum, f1, f2, fo, r, ro, lp;
597  float *dr = C->wrow, *dc = C->wcol;
598 
599  fo = 1.0e20;
600  ro = 0.0;
601  iopt = jopt = -1;
602 
603  s_n--;
604  s_m--;
605  if (s_m == 0)
606  return 0;
607  if (s_n == 0)
608  {
609  p = this->mpRowAdr(row)[qcol[0]];
610  if (p)
611  {
612  f1 = mp_PolyWeight(p, R);
613  if (f1 < fo)
614  {
615  fo = f1;
616  if (iopt >= 0)
617  p_Delete(&(this->mpRowAdr(iopt)[qcol[0]]), R);
618  iopt = row;
619  }
620  else
621  p_Delete(&(this->mpRowAdr(row)[qcol[0]]), R);
622  }
623  if (iopt >= 0)
624  mpReplace(iopt, s_m, sign, qrow);
625  return 0;
626  }
627  this->mpRowWeight(dr);
628  this->mpColWeight(dc);
629  sum = 0.0;
630  for(j=s_m; j>=0; j--)
631  sum += dr[j];
632  r = dr[row];
633  a = this->mpRowAdr(row);
634  for(j=s_n; j>=0; j--)
635  {
636  p = a[qcol[j]];
637  if (p)
638  {
639  lp = mp_PolyWeight(p, R);
640  ro = r - lp;
641  f1 = ro * (dc[j]-lp);
642  if (f1 != 0.0)
643  {
644  f2 = lp * (sum - ro - dc[j]);
645  f2 += f1;
646  }
647  else
648  f2 = lp-r-dc[j];
649  if (f2 < fo)
650  {
651  fo = f2;
652  iopt = row;
653  jopt = j;
654  }
655  }
656  }
657  if (iopt < 0)
658  return 0;
659  mpReplace(iopt, s_m, sign, qrow);
660  mpReplace(jopt, s_n, sign, qcol);
661  return 1;
662 }
const poly a
Definition: syzextra.cc:212
return P p
Definition: myNF.cc:203
void mpColWeight(float *)
void mpRowWeight(float *)
const ring r
Definition: syzextra.cc:208
int j
Definition: myNF.cc:70
static float mp_PolyWeight(poly, const ring)
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:843
poly * mpRowAdr(int)
static void mpReplace(int j, int n, int &sign, int *perm)
perform replacement for pivot strategy in Bareiss algorithm change sign of determinant ...
polyrec * poly
Definition: hilb.h:10

◆ mpPivotRow() [2/2]

int mp_permmatrix::mpPivotRow ( row_col_weight ,
int   
)

◆ mpRowAdr() [1/2]

poly * mp_permmatrix::mpRowAdr ( int  r)
private

Definition at line 728 of file linalg_from_matpol.cc.

729 {
730  return &(Xarray[a_n*qrow[r]]);
731 }
const ring r
Definition: syzextra.cc:208

◆ mpRowAdr() [2/2]

poly* mp_permmatrix::mpRowAdr ( int  r)
inlineprivate

Definition at line 845 of file matpol.cc.

846  { return &(Xarray[a_n*qrow[r]]); }
const ring r
Definition: syzextra.cc:208

◆ mpRowReorder() [1/2]

void mp_permmatrix::mpRowReorder ( )

Definition at line 672 of file linalg_from_matpol.cc.

673 {
674  int k, i, i1, i2;
675 
676  if (a_m > a_n)
677  k = a_m - a_n;
678  else
679  k = 0;
680  for (i=a_m-1; i>=k; i--)
681  {
682  i1 = qrow[i];
683  if (i1 != i)
684  {
685  this->mpRowSwap(i1, i);
686  i2 = 0;
687  while (qrow[i2] != i) i2++;
688  qrow[i2] = i1;
689  }
690  }
691 }
void mpRowSwap(int, int)
int k
Definition: cfEzgcd.cc:93
int i
Definition: cfEzgcd.cc:123

◆ mpRowReorder() [2/2]

void mp_permmatrix::mpRowReorder ( )

◆ mpRowSwap() [1/2]

void mp_permmatrix::mpRowSwap ( int  i1,
int  i2 
)
private

Definition at line 778 of file linalg_from_matpol.cc.

779 {
780  poly p, *a1, *a2;
781  int j;
782 
783  a1 = &(Xarray[a_n*i1]);
784  a2 = &(Xarray[a_n*i2]);
785  for (j=a_n-1; j>= 0; j--)
786  {
787  p = a1[j];
788  a1[j] = a2[j];
789  a2[j] = p;
790  }
791 }
return P p
Definition: myNF.cc:203
int j
Definition: myNF.cc:70
polyrec * poly
Definition: hilb.h:10

◆ mpRowSwap() [2/2]

void mp_permmatrix::mpRowSwap ( int  ,
int   
)
private

◆ mpRowWeight() [1/2]

void mp_permmatrix::mpRowWeight ( float *  wrow)
private

Definition at line 738 of file linalg_from_matpol.cc.

739 {
740  poly p, *a;
741  int i, j;
742  float count;
743 
744  for (i=s_m; i>=0; i--)
745  {
746  a = this->mpRowAdr(i);
747  count = 0.0;
748  for(j=s_n; j>=0; j--)
749  {
750  p = a[qcol[j]];
751  if (p)
752  count += mp_PolyWeight(p, R);
753  }
754  wrow[i] = count;
755  }
756 }
int status int void size_t count
Definition: si_signals.h:59
const poly a
Definition: syzextra.cc:212
return P p
Definition: myNF.cc:203
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123
static float mp_PolyWeight(poly, const ring)
poly * mpRowAdr(int)
polyrec * poly
Definition: hilb.h:10

◆ mpRowWeight() [2/2]

void mp_permmatrix::mpRowWeight ( float *  )
private

◆ mpSaveArray() [1/2]

void mp_permmatrix::mpSaveArray ( )

Definition at line 432 of file linalg_from_matpol.cc.

432 { Xarray = NULL; }
#define NULL
Definition: omList.c:10

◆ mpSaveArray() [2/2]

void mp_permmatrix::mpSaveArray ( )
inline

Definition at line 864 of file matpol.cc.

864 { Xarray = NULL; }
#define NULL
Definition: omList.c:10

◆ mpSetElem() [1/2]

void mp_permmatrix::mpSetElem ( poly  p,
int  r,
int  c 
)

Definition at line 439 of file linalg_from_matpol.cc.

440 {
441  Xarray[a_n*qrow[r]+qcol[c]] = p;
442 }
return P p
Definition: myNF.cc:203
const ring r
Definition: syzextra.cc:208

◆ mpSetElem() [2/2]

void mp_permmatrix::mpSetElem ( poly  ,
int  ,
int   
)

◆ mpSetSearch() [1/2]

void mp_permmatrix::mpSetSearch ( int  s)

Definition at line 430 of file linalg_from_matpol.cc.

430 { piv_s = s; }
const CanonicalForm int s
Definition: facAbsFact.cc:55

◆ mpSetSearch() [2/2]

void mp_permmatrix::mpSetSearch ( int  s)

◆ mpToIntvec() [1/2]

void mp_permmatrix::mpToIntvec ( intvec v)

Definition at line 664 of file linalg_from_matpol.cc.

665 {
666  int i;
667 
668  for (i=v->rows()-1; i>=0; i--)
669  (*v)[i] = qcol[i]+1;
670 }
int rows() const
Definition: intvec.h:88
int i
Definition: cfEzgcd.cc:123

◆ mpToIntvec() [2/2]

void mp_permmatrix::mpToIntvec ( intvec )

Field Documentation

◆ _R

ring mp_permmatrix::_R
private

Definition at line 843 of file matpol.cc.

◆ a_m

int mp_permmatrix::a_m
private

Definition at line 196 of file linalg_from_matpol.cc.

◆ a_n

int mp_permmatrix::a_n
private

Definition at line 196 of file linalg_from_matpol.cc.

◆ piv_s

int mp_permmatrix::piv_s
private

Definition at line 196 of file linalg_from_matpol.cc.

◆ qcol

int * mp_permmatrix::qcol
private

Definition at line 197 of file linalg_from_matpol.cc.

◆ qrow

int * mp_permmatrix::qrow
private

Definition at line 197 of file linalg_from_matpol.cc.

◆ R

ring mp_permmatrix::R
private

Definition at line 199 of file linalg_from_matpol.cc.

◆ s_m

int mp_permmatrix::s_m
private

Definition at line 196 of file linalg_from_matpol.cc.

◆ s_n

int mp_permmatrix::s_n
private

Definition at line 196 of file linalg_from_matpol.cc.

◆ sign

int mp_permmatrix::sign
private

Definition at line 196 of file linalg_from_matpol.cc.

◆ Xarray

poly * mp_permmatrix::Xarray
private

Definition at line 198 of file linalg_from_matpol.cc.


The documentation for this class was generated from the following files: