My Project  debian-1:4.1.2-p1+ds-2
tgbgauss.h
Go to the documentation of this file.
1 #ifndef TGBGAUSS_HEADER
2 #define TGBGAUSS_HEADER
3 /****************************************
4 * Computer Algebra System SINGULAR *
5 ****************************************/
6 /*
7 * ABSTRACT: gauss implementation for F4 header
8 */
9 #include "coeffs/numbers.h"
11 #include "omalloc/omalloc.h"
12 #ifdef HAVE_OMALLOC
13 #include "omalloc/omallocClass.h"
14 #endif
15 
16 class slimgb_alg;
17 
18 class tgb_matrix
19 {
20  private:
21  number** n;
22  int columns;
23  int rows;
25  public:
26  tgb_matrix(int i, int j);
27  ~tgb_matrix();
28  int get_rows();
29  int get_columns();
30  void print();
31  void perm_rows(int i, int j);
32  void set(int i, int j, number n);
33  number get(int i, int j);
34  BOOLEAN is_zero_entry(int i, int j);
35  void free_row(int row, BOOLEAN free_non_zeros=TRUE);
36  int min_col_not_zero_in_row(int row);
37  int next_col_not_zero(int row,int pre);
38  BOOLEAN zero_row(int row);
39  void mult_row(int row,number factor);
40  void add_lambda_times_row(int add_to,int summand,number factor);
41  int non_zero_entries(int row);
42 };
43 
44 class mac_poly_r
45 #ifdef HAVE_OMALLOC
46  :public omallocClass
47 #endif
48 {
49 public:
50  number coef;
52  int exp;
53  mac_poly_r():next(NULL){}
54 };
55 //mac_polys exp are smaller iff they are greater by monomial ordering
56 //corresponding to solving linear equations notation
57 
58 typedef mac_poly_r* mac_poly;
59 
61 {
62  private:
63  ring r;
65  int columns;
66  int rows;
68  public:
69  void sort_rows();
70  friend poly free_row_to_poly(tgb_sparse_matrix* mat, int row, poly* monoms, int monom_index);
71  friend void init_with_mac_poly(tgb_sparse_matrix* mat, int row, mac_poly m);
72  tgb_sparse_matrix(int i, int j, ring rarg);
74  int get_rows();
75  int get_columns();
76  void print();
77  void row_normalize(int row);
78  void row_content(int row);
79  // void perm_rows(int i, int j);
80  void perm_rows(int i, int j){
81  mac_poly h;
82  h=mp[i];
83  mp[i]=mp[j];
84  mp[j]=h;
85  }
86  void set(int i, int j, number n);
87  number get(int i, int j);
88  BOOLEAN is_zero_entry(int i, int j);
89  void free_row(int row, BOOLEAN free_non_zeros=TRUE);
90  int min_col_not_zero_in_row(int row);
91  int next_col_not_zero(int row,int pre);
92  BOOLEAN zero_row(int row);
93  void mult_row(int row,number factor);
94  void add_lambda_times_row(int add_to,int summand,number factor);
95  int non_zero_entries(int row);
96 };
98 void simple_gauss2(tgb_matrix* mat);
99 
100 
102 
103 void mac_mult_cons(mac_poly p,number c);
104 int mac_length(mac_poly p);
105 
106 //contrary to delete on the mac_poly_r, the coefficients are also destroyed here
107 void mac_destroy(mac_poly p);
108 
109 #endif
omalloc.h
omallocClass.h
mac_poly_r::next
mac_poly_r * next
Definition: tgbgauss.h:50
tgb_sparse_matrix::min_col_not_zero_in_row
int min_col_not_zero_in_row(int row)
Definition: tgbgauss.cc:797
j
int j
Definition: facHensel.cc:105
f
FILE * f
Definition: checklibs.c:9
tgb_sparse_matrix::add_lambda_times_row
void add_lambda_times_row(int add_to, int summand, number factor)
Definition: tgbgauss.cc:908
tgb_sparse_matrix::rows
int rows
Definition: tgbgauss.h:65
tgb_sparse_matrix
Definition: tgbgauss.h:59
tgb_sparse_matrix::perm_rows
void perm_rows(int i, int j)
Definition: tgbgauss.h:79
tgb_sparse_matrix::columns
int columns
Definition: tgbgauss.h:64
tgb_sparse_matrix::tgb_sparse_matrix
tgb_sparse_matrix(int i, int j, ring rarg)
Definition: tgbgauss.cc:644
tgb_matrix::is_zero_entry
BOOLEAN is_zero_entry(int i, int j)
Definition: tgbgauss.cc:543
mac_mult_cons
void mac_mult_cons(mac_poly p, number c)
Definition: tgbgauss.cc:90
simple_gauss2
void simple_gauss2(tgb_matrix *mat)
Definition: tgbgauss.cc:364
tgb_sparse_matrix::mult_row
void mult_row(int row, number factor)
Definition: tgbgauss.cc:913
h
STATIC_VAR Poly * h
Definition: janet.cc:971
tgb_sparse_matrix::print
void print()
Definition: tgbgauss.cc:697
tgb_matrix::tgb_matrix
tgb_matrix(int i, int j)
Definition: tgbgauss.cc:458
tgb_matrix::set
void set(int i, int j, number n)
Definition: tgbgauss.cc:519
tgb_sparse_matrix::r
ring r
Definition: tgbgauss.h:62
tgb_sparse_matrix::row_normalize
void row_normalize(int row)
Definition: tgbgauss.cc:830
tgb_matrix::print
void print()
Definition: tgbgauss.cc:497
tgb_matrix::add_lambda_times_row
void add_lambda_times_row(int add_to, int summand, number factor)
Definition: tgbgauss.cc:602
tgb_sparse_matrix::mp
mac_poly * mp
Definition: tgbgauss.h:63
b
CanonicalForm b
Definition: cfModGcd.cc:4044
tgb_sparse_matrix::free_numbers
BOOLEAN free_numbers
Definition: tgbgauss.h:66
tgb_sparse_matrix::sort_rows
void sort_rows()
Definition: tgbgauss.cc:692
mac_poly
mac_poly_r * mac_poly
Definition: tgbgauss.h:57
TRUE
#define TRUE
Definition: auxiliary.h:100
i
int i
Definition: cfEzgcd.cc:125
mac_poly_r::mac_poly_r
mac_poly_r()
Definition: tgbgauss.h:52
mac_poly_r
Definition: tgbgauss.h:43
tgb_matrix
Definition: tgbgauss.h:17
BOOLEAN
int BOOLEAN
Definition: auxiliary.h:87
mac_p_add_ff_qq
mac_poly mac_p_add_ff_qq(mac_poly a, number f, mac_poly b)
Definition: tgbgauss.cc:15
tgb_matrix::next_col_not_zero
int next_col_not_zero(int row, int pre)
Definition: tgbgauss.cc:567
tgb_sparse_matrix::non_zero_entries
int non_zero_entries(int row)
Definition: tgbgauss.cc:902
tgb_matrix::get
number get(int i, int j)
Definition: tgbgauss.cc:536
mac_destroy
void mac_destroy(mac_poly p)
Definition: tgbgauss.cc:112
tgb_sparse_matrix::set
void set(int i, int j, number n)
Definition: tgbgauss.cc:720
tgb_sparse_matrix::get_columns
int get_columns()
Definition: tgbgauss.cc:760
tgb_sparse_matrix::free_row
void free_row(int row, BOOLEAN free_non_zeros=TRUE)
Definition: tgbgauss.cc:927
tgb_matrix::zero_row
BOOLEAN zero_row(int row)
Definition: tgbgauss.cc:578
tgb_sparse_matrix::free_row_to_poly
friend poly free_row_to_poly(tgb_sparse_matrix *mat, int row, poly *monoms, int monom_index)
Definition: tgb.cc:3064
p_polys.h
tgb_matrix::mult_row
void mult_row(int row, number factor)
Definition: tgbgauss.cc:618
tgb_sparse_matrix::init_with_mac_poly
friend void init_with_mac_poly(tgb_sparse_matrix *mat, int row, mac_poly m)
Definition: tgb.cc:3049
tgb_sparse_matrix::get_rows
int get_rows()
Definition: tgbgauss.cc:755
omallocClass
Definition: omallocClass.h:16
tgb_matrix::perm_rows
void perm_rows(int i, int j)
Definition: tgbgauss.cc:548
mac_poly_r::exp
int exp
Definition: tgbgauss.h:51
factor
CanonicalForm factor
Definition: facAbsFact.cc:101
tgb_matrix::n
number ** n
Definition: tgbgauss.h:20
tgb_sparse_matrix::next_col_not_zero
int next_col_not_zero(int row, int pre)
Definition: tgbgauss.cc:808
slimgb_alg
Definition: tgb_internal.h:212
tgb_matrix::free_numbers
BOOLEAN free_numbers
Definition: tgbgauss.h:23
tgb_sparse_matrix::row_content
void row_content(int row)
Definition: tgbgauss.cc:846
m
int m
Definition: cfEzgcd.cc:121
tgb_matrix::free_row
void free_row(int row, BOOLEAN free_non_zeros=TRUE)
Definition: tgbgauss.cc:634
tgb_matrix::get_rows
int get_rows()
Definition: tgbgauss.cc:526
NULL
#define NULL
Definition: omList.c:11
tgb_matrix::non_zero_entries
int non_zero_entries(int row)
Definition: tgbgauss.cc:589
tgb_matrix::rows
int rows
Definition: tgbgauss.h:22
tgb_sparse_matrix::get
number get(int i, int j)
Definition: tgbgauss.cc:765
p
int p
Definition: cfModGcd.cc:4019
tgb_sparse_matrix::is_zero_entry
BOOLEAN is_zero_entry(int i, int j)
Definition: tgbgauss.cc:781
mac_poly_r::coef
number coef
Definition: tgbgauss.h:49
simple_gauss
void simple_gauss(tgb_sparse_matrix *mat, slimgb_alg *c)
Definition: tgbgauss.cc:124
mac_length
int mac_length(mac_poly p)
Definition: tgbgauss.cc:101
tgb_sparse_matrix::~tgb_sparse_matrix
~tgb_sparse_matrix()
Definition: tgbgauss.cc:658
tgb_matrix::get_columns
int get_columns()
Definition: tgbgauss.cc:531
numbers.h
tgb_matrix::~tgb_matrix
~tgb_matrix()
Definition: tgbgauss.cc:476
tgb_sparse_matrix::zero_row
BOOLEAN zero_row(int row)
Definition: tgbgauss.cc:821
tgb_matrix::columns
int columns
Definition: tgbgauss.h:21
tgb_matrix::min_col_not_zero_in_row
int min_col_not_zero_in_row(int row)
Definition: tgbgauss.cc:556