00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #if !defined (octave_float_EIG_h)
00025 #define octave_float_EIG_h 1
00026
00027 #include <iosfwd>
00028
00029 #include "fMatrix.h"
00030 #include "fCMatrix.h"
00031 #include "fCColVector.h"
00032
00033 class
00034 OCTAVE_API
00035 FloatEIG
00036 {
00037 friend class FloatMatrix;
00038 friend class FloatComplexMatrix;
00039
00040 public:
00041
00042 FloatEIG (void)
00043 : lambda (), v () { }
00044
00045 FloatEIG (const FloatMatrix& a, bool calc_eigenvectors = true)
00046 { init (a, calc_eigenvectors); }
00047
00048 FloatEIG (const FloatMatrix& a, octave_idx_type& info, bool calc_eigenvectors = true)
00049 { info = init (a, calc_eigenvectors); }
00050
00051 FloatEIG (const FloatMatrix& a, const FloatMatrix& b, bool calc_eigenvectors = true)
00052 { init (a, b, calc_eigenvectors); }
00053
00054 FloatEIG (const FloatMatrix& a, const FloatMatrix& b, octave_idx_type& info, bool calc_eigenvectors = true)
00055 { info = init (a, b, calc_eigenvectors); }
00056
00057 FloatEIG (const FloatComplexMatrix& a, bool calc_eigenvectors = true)
00058 { init (a, calc_eigenvectors); }
00059
00060 FloatEIG (const FloatComplexMatrix& a, octave_idx_type& info, bool calc_eigenvectors = true)
00061 { info = init (a, calc_eigenvectors); }
00062
00063 FloatEIG (const FloatComplexMatrix& a, const FloatComplexMatrix& b, bool calc_eigenvectors = true)
00064 { init (a, b, calc_eigenvectors); }
00065
00066 FloatEIG (const FloatComplexMatrix& a, const FloatComplexMatrix& b, octave_idx_type& info, bool calc_eigenvectors = true)
00067 { info = init (a, b, calc_eigenvectors); }
00068
00069 FloatEIG (const FloatEIG& a)
00070 : lambda (a.lambda), v (a.v) { }
00071
00072 FloatEIG& operator = (const FloatEIG& a)
00073 {
00074 if (this != &a)
00075 {
00076 lambda = a.lambda;
00077 v = a.v;
00078 }
00079 return *this;
00080 }
00081
00082 ~FloatEIG (void) { }
00083
00084 FloatComplexColumnVector eigenvalues (void) const { return lambda; }
00085
00086 FloatComplexMatrix eigenvectors (void) const { return v; }
00087
00088 friend std::ostream& operator << (std::ostream& os, const FloatEIG& a);
00089
00090 private:
00091
00092 FloatComplexColumnVector lambda;
00093 FloatComplexMatrix v;
00094
00095 octave_idx_type init (const FloatMatrix& a, bool calc_eigenvectors);
00096 octave_idx_type init (const FloatMatrix& a, const FloatMatrix& b, bool calc_eigenvectors);
00097 octave_idx_type init (const FloatComplexMatrix& a, bool calc_eigenvectors);
00098 octave_idx_type init (const FloatComplexMatrix& a, const FloatComplexMatrix& b, bool calc_eigenvectors);
00099
00100 octave_idx_type symmetric_init (const FloatMatrix& a, bool calc_eigenvectors);
00101 octave_idx_type symmetric_init (const FloatMatrix& a, const FloatMatrix& b, bool calc_eigenvectors);
00102 octave_idx_type hermitian_init (const FloatComplexMatrix& a, bool calc_eigenvectors);
00103 octave_idx_type hermitian_init (const FloatComplexMatrix& a, const FloatComplexMatrix& b, bool calc_eigenvectors);
00104 };
00105
00106 #endif
00107
00108
00109
00110
00111
00112