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  /// 1-based access to matrix
29  #define MATELEM(mat,i,j) ((mat)->m)[MATCOLS((mat)) * ((i)-1) + (j)-1]
30  /// 0-based access to matrix
31  #define MATELEM0(mat,i,j) ((mat)->m)[MATCOLS((mat)) * (i) + (j)]
32 };
33 
35 {
41 };
42 
43 typedef ip_smatrix * matrix;
44 
45 matrix mpNew(int r, int c);
46 
47 void mp_Delete(matrix* a, const ring r);
48 matrix mp_Copy(const matrix a, const ring rSrc, const ring rDst);
49 
50 matrix mp_Copy(matrix a, const ring r);
51 
52 matrix mp_InitP(int r, int c, poly p, const ring R);
53 matrix mp_InitI(int r, int c, int v, const ring R);
54 matrix mp_MultI(matrix a, int f, const ring r);
55 matrix mp_MultP(matrix a, poly p, const ring r);
56 matrix pMultMp(poly p, matrix a, const ring r);
57 matrix mp_Add(matrix a, matrix b, const ring r);
58 matrix mp_Sub(matrix a, matrix b, const ring r);
59 matrix mp_Mult(matrix a, matrix b, const ring r);
60 matrix mp_Transp(matrix a, const ring r);
61 BOOLEAN mp_Equal(matrix a, matrix b, const ring r);
62 poly mp_Trace ( matrix a, const ring r);
63 poly TraceOfProd ( matrix a, matrix b, int n, const ring r);
64 
65 matrix mp_Wedge(matrix a, int ar, const ring r);
66 
67 // BOOLEAN mpJacobi(leftv res,leftv a);
68 // BOOLEAN mpKoszul(leftv res,leftv b/*in*/, leftv c/*ip*/, leftv id=NULL);
69 
70 poly mp_Det(matrix a, const ring r, DetVariant d=DetDefault);
71 poly mp_DetBareiss (matrix a, const ring r);
72 poly mp_DetMu(matrix A, const ring R);
73 
74 
75 //matrix mp_Homogen(matrix a, int v, const ring r);
76 
77 void mp_Monomials(matrix c, int r, int var, matrix m, const ring R);
78 
79 /// corresponds to Maple's coeffs:
80 /// var has to be the number of a variable
81 matrix mp_Coeffs(ideal I, int var, const ring r);
82 
83 matrix mp_CoeffProc (poly f, poly vars, const ring r);
84 matrix mp_CoeffProcId (ideal I, poly vars, const ring R);
85 /// corresponds to Macauley's coef:
86 /// the exponent vector of vars has to contain the variables, eg 'xy';
87 /// then the poly f is searched for monomials in x and y, these monimials
88 /// are written to the first row of the matrix co.
89 /// the second row of co contains the respective factors in f.
90 /// Thus f = sum co[1,i]*co[2,i], i = 1..cols, rows equals 2.
91 void mp_Coef2(poly v, poly vars, matrix *c, matrix *m, const ring r);
92 
93 /// for minors with Bareiss
94 void mp_RecMin(int, ideal, int &, matrix, int, int, poly, ideal, const ring);
95 void mp_MinorToResult(ideal, int &, matrix, int, int, ideal, const ring);
96 
97 BOOLEAN mp_IsDiagUnit(matrix U, const ring r);
98 
99 /// set spaces to zero by default
100 void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces);
101 
102 char * iiStringMatrix(matrix im, int dim, const ring r, char ch=',');
103 
105 
106 int mp_Compare(matrix a, matrix b, const ring r);
107 
108 // -------------------------------------------------------
109 ideal sm_Add(ideal a, ideal b, const ring R);
110 ideal sm_Sub(ideal a, ideal b, const ring R);
111 ideal sm_Mult(ideal a, ideal b, const ring R);
112 ideal sm_Flatten(ideal a, const ring R);
113 ideal sm_UnFlatten(ideal a, int col, const ring R);
114 poly sm_Trace ( ideal a, const ring R);
115 int sm_Compare(ideal a, ideal b, const ring R);
116 BOOLEAN sm_Equal(ideal a, ideal b, const ring R);
117 ideal sm_Tensor(ideal A, ideal B, const ring r);
118 poly sm_Det(ideal I, const ring, DetVariant d=DetDefault);
119 DetVariant mp_GetAlgorithmDet(matrix m, const ring r);
120 DetVariant mp_GetAlgorithmDet(const char *s);
121 
122 #define SMATELEM(A,i,j,R) p_Vec2Poly(A->m[j],i+1,R)
123 
124 #endif/* MATPOL_H */
int & rows()
Definition: matpol.h:23
EXTERN_VAR omBin ip_smatrix_bin
Definition: matpol.h:104
ideal sm_Mult(ideal a, ideal b, const ring R)
Definition: matpol.cc:1891
const CanonicalForm int s
Definition: facAbsFact.cc:55
matrix mp_Sub(matrix a, matrix b, const ring r)
Definition: matpol.cc:196
poly sm_Trace(ideal a, const ring R)
Definition: matpol.cc:1973
omBin_t * omBin
Definition: omStructs.h:12
matrix mp_MultP(matrix a, poly p, const ring r)
multiply a matrix 'a' by a poly 'p', destroy the args
Definition: matpol.cc:148
ideal sm_Sub(ideal a, ideal b, const ring R)
Definition: matpol.cc:1881
matrix pMultMp(poly p, matrix a, const ring r)
Definition: matpol.cc:165
int ncols
Definition: matpol.h:21
void mp_Delete(matrix *a, const ring r)
Definition: matpol.cc:880
poly sm_Det(ideal I, const ring, DetVariant d=DetDefault)
Definition: matpol.cc:2166
poly mp_DetMu(matrix A, const ring R)
Definition: matpol.cc:2070
#define EXTERN_VAR
Definition: globaldefs.h:6
void mp_RecMin(int, ideal, int &, matrix, int, int, poly, ideal, const ring)
for minors with Bareiss
Definition: matpol.cc:1603
ideal sm_UnFlatten(ideal a, int col, const ring R)
Definition: matpol.cc:1946
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:1507
void mp_Monomials(matrix c, int r, int var, matrix m, const ring R)
Definition: matpol.cc:362
BOOLEAN mp_IsDiagUnit(matrix U, const ring r)
Definition: matpol.cc:816
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
Definition: matpol.cc:129
Definition: matpol.h:39
ideal sm_Add(ideal a, ideal b, const ring R)
Definition: matpol.cc:1871
matrix mp_CoeffProc(poly f, poly vars, const ring r)
Definition: matpol.cc:399
poly * m
Definition: matpol.h:18
CanonicalForm b
Definition: cfModGcd.cc:4044
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, eg 'xy'; then the poly f is searched for monomials in x and y, these monimials are written to the first row of the matrix co. the second row of co contains the respective factors in f. Thus f = sum co[1,i]*co[2,i], i = 1..cols, rows equals 2.
Definition: matpol.cc:581
int nrows
Definition: matpol.h:20
DetVariant
Definition: matpol.h:34
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
Definition: matpol.cc:834
int sm_Compare(ideal a, ideal b, const ring R)
Definition: matpol.cc:1984
#define A
Definition: sirandom.c:24
DetVariant mp_GetAlgorithmDet(matrix m, const ring r)
Definition: matpol.cc:2112
matrix mp_Mult(matrix a, matrix b, const ring r)
Definition: matpol.cc:213
matrix mp_Transp(matrix a, const ring r)
Definition: matpol.cc:254
int dim(ideal I, ring r)
FILE * f
Definition: checklibs.c:9
ideal sm_Flatten(ideal a, const ring R)
Definition: matpol.cc:1926
BOOLEAN mp_Equal(matrix a, matrix b, const ring r)
Definition: matpol.cc:662
BOOLEAN sm_Equal(ideal a, ideal b, const ring R)
Definition: matpol.cc:2003
matrix mp_Wedge(matrix a, int ar, const ring r)
Definition: matpol.cc:1751
poly mp_DetBareiss(matrix a, const ring r)
returns the determinant of the matrix m; uses Bareiss algorithm
Definition: matpol.cc:1676
matrix mp_Copy(const matrix a, const ring rSrc, const ring rDst)
copies matrix a from rSrc into rDst
Definition: matpol.cc:85
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
int & cols()
Definition: matpol.h:24
char * iiStringMatrix(matrix im, int dim, const ring r, char ch=',')
Definition: matpol.cc:855
matrix mp_CoeffProcId(ideal I, poly vars, const ring R)
Definition: matpol.cc:476
matrix mp_MultI(matrix a, int f, const ring r)
c = f*a
Definition: matpol.cc:135
b *CanonicalForm B
Definition: facBivar.cc:52
#define R
Definition: sirandom.c:27
poly TraceOfProd(matrix a, matrix b, int n, const ring r)
Definition: matpol.cc:289
poly mp_Det(matrix a, const ring r, DetVariant d=DetDefault)
Definition: matpol.cc:2143
matrix mp_Add(matrix a, matrix b, const ring r)
Definition: matpol.cc:179
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
Definition: matpol.cc:113
int p
Definition: cfModGcd.cc:4019
matrix mp_Coeffs(ideal I, int var, const ring r)
corresponds to Maple&#39;s coeffs: var has to be the number of a variable
Definition: matpol.cc:313
matrix mpNew(int r, int c)
create a r x c zero-matrix
Definition: matpol.cc:37
int BOOLEAN
Definition: auxiliary.h:87
int mp_Compare(matrix a, matrix b, const ring r)
Definition: matpol.cc:643
poly mp_Trace(matrix a, const ring r)
Definition: matpol.cc:275
ideal sm_Tensor(ideal A, ideal B, const ring r)
Definition: matpol.cc:1831
ip_smatrix * matrix
Definition: matpol.h:43
long rank
Definition: matpol.h:19