#ifndef INCLUDE_CMATRIX #define INCLUDE_CMATRIX #include #include #include "C.h" using namespace std; class Cmatrix{ private: int M,N ; // (M,N) matrix vector ele; public: Cmatrix( int m , int n ) : M(m) , N(n), ele( m*n , 0 ){ } Cmatrix( int m , int n , const Complex *d ); Cmatrix( int m , int n , const vector v ); Cmatrix & operator=( const Cmatrix & mat ) ; Cmatrix & operator+=( const Cmatrix & mat ) ; Cmatrix & operator-=( const Cmatrix & mat ) ; int getm( ) const { return M ; } int getn( ) const { return N ; } Complex get( int i , int j ) const { return ele[ i * N + j ] ; } // get (i,j) element void set( int i , int j , Complex a ) { ele[ i * N + j ] = a ; } // set (i,j) element Cmatrix operator + ( ) const { return *this ; } Cmatrix operator + ( Cmatrix mat ) const ; Cmatrix operator - ( ) const ; Cmatrix operator - ( Cmatrix mat ) const ; Cmatrix operator * ( Cmatrix mat ) const ; Cmatrix inv( ) const ; // determine the inverse matrix Cmatrix trans( ) const ; // transpose Cmatrix Htrans( ) const ; // Hermitian transpose Cmatrix conj( ) const ; // conjugate }; std::ostream &operator<<(std::ostream & , const Cmatrix & ); Cmatrix operator*( Complex a , Cmatrix mat ); #endif