1 /*++
2 Copyright (c) 2017 Arie Gurfinkel
3 
4 Module Name:
5 
6     spacer_matrix.h
7 
8 Abstract:
9     a matrix
10 
11 Author:
12     Bernhard Gleiss
13 
14 Revision History:
15 
16 
17 --*/
18 #pragma once
19 
20 #include "util/rational.h"
21 #include "util/vector.h"
22 
23 namespace spacer {
24 
25     class spacer_matrix {
26     public:
27         spacer_matrix(unsigned m, unsigned n); // m rows, n columns
28 
29         unsigned num_rows();
30         unsigned num_cols();
31 
32         const rational& get(unsigned i, unsigned j);
33         void set(unsigned i, unsigned j, const rational& v);
34 
35         unsigned perform_gaussian_elimination();
36 
37         void print_matrix();
38         void normalize();
39     private:
40         unsigned m_num_rows;
41         unsigned m_num_cols;
42         vector<vector<rational>> m_matrix;
43     };
44 }
45 
46