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