#pragma once #include #include #include #include class Matrix { private: std::size_t m_Lignes; std::size_t m_Colonnes; std::vector m_Data; public: Matrix(const std::string& fileNameInput); Matrix(std::size_t lignes, std::size_t colonnes); Matrix(std::size_t lignes, std::size_t colonnes, std::initializer_list&& initList); ~Matrix(); std::size_t GetRawCount() const; std::size_t GetColumnCount() const; Matrix operator*(const Matrix& other) const; void GaussNonJordan(bool reduite); void GaussJordan(bool reduite); void Print() const; void PrintDebug(); void Insert(); void Save(const std::string& fileName); void Load(const std::string& filename); void Transpose(); void Identity(); static Matrix Identity(std::size_t taille); bool IsInversed() const; void Augmenter(const Matrix& droite); Matrix SubMatrix(std::size_t origine_ligne, std::size_t origine_colonne, std::size_t ligne, std::size_t colonne) const; bool operator==(const Matrix& other) const; long double& operator[](std::size_t indice); long double& at(std::size_t ligne, std::size_t colonne); long double at(std::size_t ligne, std::size_t colonne) const; }; template bool IsEqualZero(T var) { return std::abs(var) < std::pow(10, -5); }