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_ComplexSCHUR_h)
00025 #define octave_ComplexSCHUR_h 1
00026
00027 #include <iosfwd>
00028 #include <string>
00029
00030 #include "CMatrix.h"
00031
00032 class
00033 OCTAVE_API
00034 ComplexSCHUR
00035 {
00036 public:
00037
00038 ComplexSCHUR (void)
00039 : schur_mat (), unitary_mat () { }
00040
00041 ComplexSCHUR (const ComplexMatrix& a, const std::string& ord,
00042 bool calc_unitary = true)
00043 : schur_mat (), unitary_mat () { init (a, ord, calc_unitary); }
00044
00045 ComplexSCHUR (const ComplexMatrix& a, const std::string& ord, octave_idx_type& info,
00046 bool calc_unitary = true)
00047 : schur_mat (), unitary_mat () { info = init (a, ord, calc_unitary); }
00048
00049 ComplexSCHUR (const ComplexSCHUR& a)
00050 : schur_mat (a.schur_mat), unitary_mat (a.unitary_mat) { }
00051
00052 ComplexSCHUR& operator = (const ComplexSCHUR& a)
00053 {
00054 if (this != &a)
00055 {
00056 schur_mat = a.schur_mat;
00057 unitary_mat = a.unitary_mat;
00058 }
00059 return *this;
00060 }
00061
00062 ~ComplexSCHUR (void) { }
00063
00064 ComplexMatrix schur_matrix (void) const { return schur_mat; }
00065
00066 ComplexMatrix unitary_matrix (void) const { return unitary_mat; }
00067
00068 friend std::ostream& operator << (std::ostream& os, const ComplexSCHUR& a);
00069
00070 typedef octave_idx_type (*select_function) (const Complex&);
00071
00072 private:
00073
00074 ComplexMatrix schur_mat;
00075 ComplexMatrix unitary_mat;
00076
00077 select_function selector;
00078
00079 octave_idx_type init (const ComplexMatrix& a, const std::string& ord, bool calc_unitary);
00080 };
00081
00082 #endif
00083
00084
00085
00086
00087
00088