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