My Project  debian-1:4.1.1-p2+ds-4build4
matpol.h
Go to the documentation of this file.
1 #ifndef MATPOL_H
2 #define MATPOL_H
3 /****************************************
4 * Computer Algebra System SINGULAR *
5 ****************************************/
6 /*
7 * ABSTRACT
8 */
9 
10 #include "polys/monomials/ring.h"
11 
12 // THIS IS REALLY DIRTY: ip_smatrix HAS TO BE IDENTICAL TO ip_sideal
13 // SO, DON'T CHANGE THE DECLARATION OF ip_smatrix
15 {
16  public:
17 
18  poly *m;
19  long rank;
20  int nrows;
21  int ncols;
22 
23  inline int& rows() { return nrows; }
24  inline int& cols() { return ncols; }
25 
26  #define MATROWS(i) ((i)->nrows)
27  #define MATCOLS(i) ((i)->ncols)
28  #define MATELEM(mat,i,j) ((mat)->m)[MATCOLS((mat)) * ((i)-1) + (j)-1]
29 };
30 
31 typedef ip_smatrix * matrix;
32 
33 matrix mpNew(int r, int c);
34 static inline matrix mp_New(int r, int c){ return mpNew(r,c); }
35 
36 // matrix mpCopy(matrix a);
37 void mp_Delete(matrix* a, const ring r);
38 matrix mp_Copy(const matrix a, const ring rSrc, const ring rDst);
39 
40 matrix mp_Copy(matrix a, const ring r);
41 // static inline matrix mp_Copy(matrix a, const ring r){ return mp_Copy(a, r, r); }
42 
43 matrix mp_InitP(int r, int c, poly p, const ring R);
44 matrix mp_InitI(int r, int c, int v, const ring R);
45 matrix mp_MultI(matrix a, int f, const ring r);
46 matrix mp_MultP(matrix a, poly p, const ring r);
47 matrix pMultMp(poly p, matrix a, const ring r);
48 matrix mp_Add(matrix a, matrix b, const ring r);
49 matrix mp_Sub(matrix a, matrix b, const ring r);
50 matrix mp_Mult(matrix a, matrix b, const ring r);
51 matrix mp_Transp(matrix a, const ring r);
52 BOOLEAN mp_Equal(matrix a, matrix b, const ring r);
53 poly mp_Trace ( matrix a, const ring r);
54 poly TraceOfProd ( matrix a, matrix b, int n, const ring r);
55 
56 // poly mp_Det (matrix m, const ring r);
57 matrix mp_Wedge(matrix a, int ar, const ring r);
58 
59 // BOOLEAN mpJacobi(leftv res,leftv a);
60 // BOOLEAN mpKoszul(leftv res,leftv b/*in*/, leftv c/*ip*/, leftv id=NULL);
61 
62 poly mp_DetBareiss (matrix a, const ring r);
63 
64 //matrix mp_Homogen(matrix a, int v, const ring r);
65 
66 void mp_Monomials(matrix c, int r, int var, matrix m, const ring R);
67 
68 /// corresponds to Maple's coeffs:
69 /// var has to be the number of a variable
70 matrix mp_Coeffs(ideal I, int var, const ring r);
71 
72 matrix mp_CoeffProc (poly f, poly vars, const ring r);
73 /// corresponds to Macauley's coef:
74 /// the exponent vector of vars has to contain the variables, eg 'xy';
75 /// then the poly f is searched for monomials in x and y, these monimials
76 /// are written to the first row of the matrix co.
77 /// the second row of co contains the respective factors in f.
78 /// Thus f = sum co[1,i]*co[2,i], i = 1..cols, rows equals 2.
79 void mp_Coef2(poly v, poly vars, matrix *c, matrix *m, const ring r);
80 
81 /// for minors with Bareiss
82 void mp_RecMin(int, ideal, int &, matrix, int, int, poly, ideal, const ring);
83 void mp_MinorToResult(ideal, int &, matrix, int, int, ideal, const ring);
84 
85 BOOLEAN mp_IsDiagUnit(matrix U, const ring r);
86 
87 /// set spaces to zero by default
88 void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces);
89 
90 char * iiStringMatrix(matrix im, int dim, const ring r, char ch=',');
91 
92 extern omBin ip_smatrix_bin;
93 
94 int mp_Compare(matrix a, matrix b, const ring r);
95 
96 ideal mp_Tensor(ideal A, ideal B, const ring r);
97 #endif/* MATPOL_H */
int BOOLEAN
Definition: auxiliary.h:85
int m
Definition: cfEzgcd.cc:121
int p
Definition: cfModGcd.cc:4019
CanonicalForm b
Definition: cfModGcd.cc:4044
FILE * f
Definition: checklibs.c:9
int nrows
Definition: matpol.h:20
long rank
Definition: matpol.h:19
int & rows()
Definition: matpol.h:23
int ncols
Definition: matpol.h:21
int & cols()
Definition: matpol.h:24
poly * m
Definition: matpol.h:18
b *CanonicalForm B
Definition: facBivar.cc:52
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
omBin ip_smatrix_bin
ip_smatrix * matrix
Definition: matpol.h:31
matrix pMultMp(poly p, matrix a, const ring r)
Definition: matpol.cc:164
matrix mp_MultP(matrix a, poly p, const ring r)
multiply a matrix 'a' by a poly 'p', destroy the args
Definition: matpol.cc:147
matrix mp_Copy(const matrix a, const ring rSrc, const ring rDst)
copies matrix a from rSrc into rDst
Definition: matpol.cc:84
BOOLEAN mp_IsDiagUnit(matrix U, const ring r)
Definition: matpol.cc:716
void mp_Delete(matrix *a, const ring r)
Definition: matpol.cc:780
matrix mp_CoeffProc(poly f, poly vars, const ring r)
Definition: matpol.cc:401
void mp_Monomials(matrix c, int r, int var, matrix m, const ring R)
Definition: matpol.cc:364
matrix mp_Coeffs(ideal I, int var, const ring r)
corresponds to Maple's coeffs: var has to be the number of a variable
Definition: matpol.cc:315
matrix mp_Add(matrix a, matrix b, const ring r)
Definition: matpol.cc:178
int mp_Compare(matrix a, matrix b, const ring r)
Definition: matpol.cc:565
void mp_RecMin(int, ideal, int &, matrix, int, int, poly, ideal, const ring)
for minors with Bareiss
Definition: matpol.cc:1503
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
Definition: matpol.cc:128
matrix mp_Transp(matrix a, const ring r)
Definition: matpol.cc:256
static matrix mp_New(int r, int c)
Definition: matpol.h:34
poly mp_Trace(matrix a, const ring r)
Definition: matpol.cc:277
matrix mp_Mult(matrix a, matrix b, const ring r)
Definition: matpol.cc:212
matrix mp_Sub(matrix a, matrix b, const ring r)
Definition: matpol.cc:195
matrix mpNew(int r, int c)
create a r x c zero-matrix
Definition: matpol.cc:36
void mp_MinorToResult(ideal, int &, matrix, int, int, ideal, const ring)
entries of a are minors and go to result (only if not in R)
Definition: matpol.cc:1407
char * iiStringMatrix(matrix im, int dim, const ring r, char ch=',')
Definition: matpol.cc:755
BOOLEAN mp_Equal(matrix a, matrix b, const ring r)
Definition: matpol.cc:584
void mp_Coef2(poly v, poly vars, matrix *c, matrix *m, const ring r)
corresponds to Macauley's coef: the exponent vector of vars has to contain the variables,...
Definition: matpol.cc:503
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
Definition: matpol.cc:112
poly TraceOfProd(matrix a, matrix b, int n, const ring r)
Definition: matpol.cc:291
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
Definition: matpol.cc:734
ideal mp_Tensor(ideal A, ideal B, const ring r)
Definition: matpol.cc:1748
matrix mp_MultI(matrix a, int f, const ring r)
c = f*a
Definition: matpol.cc:134
matrix mp_Wedge(matrix a, int ar, const ring r)
Definition: matpol.cc:1651
poly mp_DetBareiss(matrix a, const ring r)
returns the determinant of the matrix m; uses Bareiss algorithm
Definition: matpol.cc:1576
omBin_t * omBin
Definition: omStructs.h:12
#define R
Definition: sirandom.c:26
#define A
Definition: sirandom.c:23
int dim(ideal I, ring r)