Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined (octave_FloatComplexSVD_h)
00024 #define octave_FloatComplexSVD_h 1
00025
00026 #include <iosfwd>
00027
00028 #include "fDiagMatrix.h"
00029 #include "fCMatrix.h"
00030 #include "dbleSVD.h"
00031
00032 class
00033 OCTAVE_API
00034 FloatComplexSVD
00035 {
00036 public:
00037
00038 FloatComplexSVD (void)
00039 : type_computed (), sigma (), left_sm (), right_sm ()
00040 { }
00041
00042 FloatComplexSVD (const FloatComplexMatrix& a,
00043 SVD::type svd_type = SVD::std,
00044 SVD::driver svd_driver = SVD::GESVD)
00045 : type_computed (), sigma (), left_sm (), right_sm ()
00046 {
00047 init (a, svd_type, svd_driver);
00048 }
00049
00050 FloatComplexSVD (const FloatComplexMatrix& a, octave_idx_type& info,
00051 SVD::type svd_type = SVD::std,
00052 SVD::driver svd_driver = SVD::GESVD)
00053 : type_computed (), sigma (), left_sm (), right_sm ()
00054 {
00055 info = init (a, svd_type, svd_driver);
00056 }
00057
00058 FloatComplexSVD (const FloatComplexSVD& a)
00059 : type_computed (a.type_computed), sigma (a.sigma),
00060 left_sm (a.left_sm), right_sm (a.right_sm)
00061 { }
00062
00063 FloatComplexSVD& operator = (const FloatComplexSVD& a)
00064 {
00065 if (this != &a)
00066 {
00067 type_computed = a.type_computed;
00068 sigma = a.sigma;
00069 left_sm = a.left_sm;
00070 right_sm = a.right_sm;
00071 }
00072 return *this;
00073 }
00074
00075 ~FloatComplexSVD (void) { }
00076
00077 FloatDiagMatrix singular_values (void) const { return sigma; }
00078
00079 FloatComplexMatrix left_singular_matrix (void) const;
00080
00081 FloatComplexMatrix right_singular_matrix (void) const;
00082
00083 friend std::ostream& operator << (std::ostream& os, const FloatComplexSVD& a);
00084
00085 private:
00086
00087 SVD::type type_computed;
00088
00089 FloatDiagMatrix sigma;
00090 FloatComplexMatrix left_sm;
00091 FloatComplexMatrix right_sm;
00092
00093 octave_idx_type init (const FloatComplexMatrix& a,
00094 SVD::type svd_type = SVD::std,
00095 SVD::driver svd_driver = SVD::GESVD);
00096 };
00097
00098 #endif