00001 // This is core/vnl/algo/vnl_real_eigensystem.h 00002 #ifndef vnl_real_eigensystem_h_ 00003 #define vnl_real_eigensystem_h_ 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \brief Extract eigensystem of non-symmetric matrix M, using EISPACK 00010 // \author Andrew W. Fitzgibbon, Oxford RRG 00011 // \date 23 Jan 97 00012 // 00013 // \verbatim 00014 // Modifications 00015 // dac (Manchester) 28/03/2001: tidied up documentation 00016 // \endverbatim 00017 // 00018 00019 #include <vcl_complex.h> 00020 #include <vnl/vnl_matrix.h> 00021 #include <vnl/vnl_diag_matrix.h> 00022 00023 //: Extract eigensystem of asymmetric matrix M, using the EISPACK routine 00024 // vnl_eigensystem is a full-bore real eigensystem. If your matrix 00025 // is symmetric, it is \e much better to use \sa vnl_symmetric_eigensystem. 00026 00027 class vnl_real_eigensystem 00028 { 00029 public: 00030 vnl_real_eigensystem(vnl_matrix<double> const& M); 00031 00032 public: 00033 vnl_matrix<double> Vreal; 00034 00035 //: Output matrix of eigenvectors, which will in general be complex. 00036 vnl_matrix<vcl_complex<double> > V; 00037 00038 //: Output diagonal matrix of eigenvalues. 00039 vnl_diag_matrix<vcl_complex<double> > D; 00040 }; 00041 00042 #endif // vnl_real_eigensystem_h_