#ifndef INCLUDE_HMATRIX #define INCLUDE_HMATRIX #include #include #include "hyperbolic.h" using namespace std; class Hmatrix{ private: int M,N ; vector ele; public: Hmatrix( int m , int n ) : M(m) , N(n), ele(m*n , 0){ } Hmatrix( int m , int n , const Hyperbolic *d ); Hmatrix( int m , int n , const vector v ); Hmatrix & operator=( const Hmatrix & mat ) ; Hmatrix & operator+=( const Hmatrix & mat ) ; Hmatrix & operator-=( const Hmatrix & mat ) ; int getm( ) const { return M ; } int getn( ) const { return N ; } Hyperbolic get( int i , int j ) const { return ele[ i * N + j ] ; } void set( int i , int j , Hyperbolic a ) { ele[ i * N + j ] = a ; } Hmatrix operator + ( ) const { return *this ; } Hmatrix operator + ( Hmatrix mat ) const ; Hmatrix operator - ( ) const ; Hmatrix operator - ( Hmatrix mat ) const ; Hmatrix operator * ( Hmatrix mat ) const ; Hmatrix inv( ) const ; Hmatrix trans( ) const ; Hmatrix Htrans( ) const ; Hmatrix conj( ) const ; }; std::ostream &operator<<(std::ostream & , const Hmatrix & ); Hmatrix operator*( Hyperbolic a , Hmatrix mat ); #endif