src/Matrix/matrix.cc
/*    Arguments                         Constructed Array
    -------------       -------------------------------------------------------
         -               An empty array
     nr,nc,mt,ht         An (nr x nc) array of type mt & hermitian type ht
    nr, nc, z, mt        An (nr x nc) array with all <i|mx|j> = z of type mt
         mx              A duplicate of array mx

        Possible nt Values                        Possible ht Values
  =================================   ========================================
  n_matrix_type == Normal (default)   _hermitian == Hermitian
  h_matrix_type == Hermitian          non_hermitian == Not Hermitian (default)
  d_matrix_type == Diagonal
  i_matrix_type == Identity                                                 

  Note that since an empty matrix will ALWAYS be present (if any matrices are
  are present), the reference count of any empty array will alway be the 
  number of empty arrays in a program + 1. See 1st constructor dummymatrix. */
Arguments                         Constructed Array

An empty array
nr,nc,mt,ht         An (nr x nc) array of type mt & hermitian type ht
nr, nc, z, mt        An (nr x nc) array with all  = z of type mt
mx              A duplicate of array mx

Possible nt Values                        Possible ht Values



Note that since an empty matrix will ALWAYS be present (if any matrices are
are present), the reference count of any empty array will alway be the
number of empty arrays in a program + 1. See 1st constructor dummymatrix.
Arguments Constructed Array An empty array nr nc mt ht An ( nr x nc ) array of type mt & hermitian type ht nr nc z mt An ( nr x nc ) array with all = z of type mt mx A duplicate of array mx Possible nt Values Possible ht Values Note that since an empty matrix will ALWAYS be present ( if any matrices are are present ) the reference count of any empty array will alway be the number of empty arrays in a program + 1 . See 1st constructor dummymatrix .
matrix::matrix( )
  { 
  static _matrix* dummymatrix = NULL;		
  if(dummymatrix == NULL)                        
    dummymatrix = virtual_copy(new _matrix());	
  m = virtual_copy(dummymatrix);                 
  }
matrix :: matrix ( ) { static _matrix * dummymatrix = NULL ; if ( dummymatrix == NULL ) dummymatrix = virtual_copy ( new _matrix ( ) ) ; m = virtual_copy ( dummymatrix ) ; }
Arguments                         Constructed Array
Arguments Constructed Array
// Keep the first NULL matrix // All sucessive NULL matrices // will reference the 1st // Now set mx matrix to NULL