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