matrix.hpp 898 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef MATRIX_HPP
  2. #define MATRIX_HPP
  3. #include <iostream>
  4. #include <immintrin.h>
  5. using namespace std;
  6. using Reel = __float128;
  7. class Matrix{
  8. protected:
  9. size_t nr,nc;
  10. Reel* data;
  11. public:
  12. Matrix();
  13. void init(size_t n);
  14. void init(size_t nrow,size_t ncol);
  15. Reel get(size_t i,size_t j) const;
  16. Reel& get(size_t i,size_t j);
  17. void clear();
  18. void display() const;
  19. void swap_lines(size_t i,size_t j);
  20. void mul_line(size_t i,Reel a);
  21. void add_mul_line(size_t i,size_t j,Reel a);
  22. Reel get_diag_square_sym(size_t i) const;
  23. Reel Gauss();
  24. };
  25. //******************
  26. //* Inline methods *
  27. //******************
  28. inline
  29. Matrix::Matrix(){
  30. nr=0;
  31. nc=0;
  32. data=nullptr;
  33. }
  34. inline void
  35. Matrix::init(size_t n){
  36. return init(n,n);
  37. }
  38. inline Reel
  39. Matrix::get(size_t i,size_t j) const{
  40. return data[i*nc+j];
  41. }
  42. inline Reel&
  43. Matrix::get(size_t i,size_t j){
  44. return data[i*nc+j];
  45. }
  46. #endif