source: git/ntl/doc/mat_GF2E.txt @ 2cfffe

spielwiese
Last change on this file since 2cfffe was 2cfffe, checked in by Hans Schönemann <hannes@…>, 21 years ago
This commit was generated by cvs2svn to compensate for changes in r6316, which included commits to RCS files with non-trunk default branches. git-svn-id: file:///usr/local/Singular/svn/trunk@6317 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.4 KB
Line 
1
2/**************************************************************************\
3
4MODULE: mat_GF2E
5
6SUMMARY:
7
8Defines the class mat_GF2E.
9
10\**************************************************************************/
11
12
13#include <NTL/matrix.h>
14#include <NTL/vec_vec_GF2E.h>
15
16NTL_matrix_decl(GF2E,vec_GF2E,vec_vec_GF2E,mat_GF2E)
17NTL_io_matrix_decl(GF2E,vec_GF2E,vec_vec_GF2E,mat_GF2E)
18NTL_eq_matrix_decl(GF2E,vec_GF2E,vec_vec_GF2E,mat_GF2E)
19
20void add(mat_GF2E& X, const mat_GF2E& A, const mat_GF2E& B);
21// X = A + B
22
23void sub(mat_GF2E& X, const mat_GF2E& A, const mat_GF2E& B);
24// X = A - B = A + B
25
26void negate(mat_GF2E& X, const mat_GF2E& A);
27// X = - A  = A
28
29void mul(mat_GF2E& X, const mat_GF2E& A, const mat_GF2E& B);
30// X = A * B
31
32void mul(vec_GF2E& x, const mat_GF2E& A, const vec_GF2E& b);
33// x = A * b
34
35void mul(vec_GF2E& x, const vec_GF2E& a, const mat_GF2E& B);
36// x = a * B
37
38void mul(mat_GF2E& X, const mat_GF2E& A, const GF2E& b);
39void mul(mat_GF2E& X, const mat_GF2E& A, GF2 b);
40void mul(mat_GF2E& X, const mat_GF2E& A, long b);
41// X = A * b
42
43void mul(mat_GF2E& X, const GF2E& a, const mat_GF2E& B);
44void mul(mat_GF2E& X, GF2 a, const mat_GF2E& B);
45void mul(mat_GF2E& X, long a, const mat_GF2E& B);
46// X = a * B
47
48
49
50void determinant(GF2E& d, const mat_GF2E& A);
51GF2E determinant(const mat_GF2E& a);
52// d = determinant(A)
53
54
55void transpose(mat_GF2E& X, const mat_GF2E& A);
56mat_GF2E transpose(const mat_GF2E& A);
57// X = transpose of A
58
59void solve(GF2E& d, vec_GF2E& X,
60           const mat_GF2E& A, const vec_GF2E& b);
61// A is an n x n matrix, b is a length n vector.  Computes d =
62// determinant(A).  If d != 0, solves x*A = b.
63
64void inv(GF2E& d, mat_GF2E& X, const mat_GF2E& A);
65// A is an n x n matrix.  Computes d = determinant(A).  If d != 0,
66// computes X = A^{-1}.
67
68void sqr(mat_GF2E& X, const mat_GF2E& A);
69mat_GF2E sqr(const mat_GF2E& A);
70// X = A*A   
71
72void inv(mat_GF2E& X, const mat_GF2E& A);
73mat_GF2E inv(const mat_GF2E& A);
74// X = A^{-1}; error is raised if A is  singular
75
76void power(mat_GF2E& X, const mat_GF2E& A, const ZZ& e);
77mat_GF2E power(const mat_GF2E& A, const ZZ& e);
78
79void power(mat_GF2E& X, const mat_GF2E& A, long e);
80mat_GF2E power(const mat_GF2E& A, long e);
81// X = A^e; e may be negative (in which case A must be nonsingular).
82
83
84void ident(mat_GF2E& X, long n);
85mat_GF2E ident_mat_GF2E(long n);
86// X = n x n identity matrix
87
88long IsIdent(const mat_GF2E& A, long n);
89// test if A is the n x n identity matrix
90
91void diag(mat_GF2E& X, long n, const GF2E& d);
92mat_GF2E diag(long n, const GF2E& d);
93// X = n x n diagonal matrix with d on diagonal
94
95long IsDiag(const mat_GF2E& A, long n, const GF2E& d);
96// test if X is an  n x n diagonal matrix with d on diagonal
97
98
99
100
101long gauss(mat_GF2E& M);
102long gauss(mat_GF2E& M, long w);
103// Performs unitary row operations so as to bring M into row echelon
104// form.  If the optional argument w is supplied, stops when first w
105// columns are in echelon form.  The return value is the rank (or the
106// rank of the first w columns).
107
108void image(mat_GF2E& X, const mat_GF2E& A);
109// The rows of X are computed as basis of A's row space.  X is is row
110// echelon form
111
112void kernel(mat_GF2E& X, const mat_GF2E& A);
113// Computes a basis for the kernel of the map x -> x*A. where x is a
114// row vector.
115
116
117
118
119// miscellaneous:
120
121void clear(mat_GF2E& a);
122// x = 0 (dimension unchanged)
123
124long IsZero(const mat_GF2E& a);
125// test if a is the zero matrix (any dimension)
126
127
128// operator notation:
129
130mat_GF2E operator+(const mat_GF2E& a, const mat_GF2E& b);
131mat_GF2E operator-(const mat_GF2E& a, const mat_GF2E& b);
132mat_GF2E operator*(const mat_GF2E& a, const mat_GF2E& b);
133
134mat_GF2E operator-(const mat_GF2E& a);
135
136
137// matrix/scalar multiplication:
138
139mat_GF2E operator*(const mat_GF2E& a, const GF2E& b);
140mat_GF2E operator*(const mat_GF2E& a, GF2 b);
141mat_GF2E operator*(const mat_GF2E& a, long b);
142
143mat_GF2E operator*(const GF2E& a, const mat_GF2E& b);
144mat_GF2E operator*(GF2 a, const mat_GF2E& b);
145mat_GF2E operator*(long a, const mat_GF2E& b);
146
147// matrix/vector multiplication:
148
149vec_GF2E operator*(const mat_GF2E& a, const vec_GF2E& b);
150
151vec_GF2E operator*(const vec_GF2E& a, const mat_GF2E& b);
152
153
154// assignment operator notation:
155
156mat_GF2E& operator+=(mat_GF2E& x, const mat_GF2E& a);
157mat_GF2E& operator-=(mat_GF2E& x, const mat_GF2E& a);
158mat_GF2E& operator*=(mat_GF2E& x, const mat_GF2E& a);
159
160mat_GF2E& operator*=(mat_GF2E& x, const GF2E& a);
161mat_GF2E& operator*=(mat_GF2E& x, GF2 a);
162mat_GF2E& operator*=(mat_GF2E& x, long a);
163
164vec_GF2E& operator*=(vec_GF2E& x, const mat_GF2E& a);
165
166
Note: See TracBrowser for help on using the repository browser.