home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-bin.lha / include / octave / CmplxSVD.h < prev    next >
C/C++ Source or Header  |  1996-10-12  |  3KB  |  119 lines

  1. //                                  -*- C++ -*-
  2. /*
  3.  
  4. Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton
  5.  
  6. This file is part of Octave.
  7.  
  8. Octave is free software; you can redistribute it and/or modify it
  9. under the terms of the GNU General Public License as published by the
  10. Free Software Foundation; either version 2, or (at your option) any
  11. later version.
  12.  
  13. Octave is distributed in the hope that it will be useful, but WITHOUT
  14. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  15. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  16. for more details.
  17.  
  18. You should have received a copy of the GNU General Public License
  19. along with Octave; see the file COPYING.  If not, write to the Free
  20. Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  
  22. */
  23.  
  24. #if !defined (octave_ComplexSVD_h)
  25. #define octave_ComplexSVD_h 1
  26.  
  27. class ostream;
  28.  
  29. #include "dDiagMatrix.h"
  30. #include "CMatrix.h"
  31. #include "dbleSVD.h"
  32.  
  33. extern "C++" {
  34.  
  35. class ComplexSVD
  36. {
  37. friend class ComplexMatrix;
  38.  
  39. public:
  40.  
  41.   ComplexSVD (void) {}
  42.  
  43.   ComplexSVD (const ComplexMatrix& a, SVD::type svd_type = SVD::std);
  44.   ComplexSVD (const ComplexMatrix& a, int& info,
  45.           SVD::type svd_type = SVD::std); 
  46.  
  47.   ComplexSVD (const ComplexSVD& a);
  48.  
  49.   ComplexSVD& operator = (const ComplexSVD& a);
  50.  
  51.   DiagMatrix singular_values (void) const;
  52.   ComplexMatrix left_singular_matrix (void) const;
  53.   ComplexMatrix right_singular_matrix (void) const;
  54.  
  55.   friend ostream&  operator << (ostream& os, const ComplexSVD& a);
  56.  
  57. private:
  58.  
  59.   int init (const ComplexMatrix& a, SVD::type svd_type = SVD::std);
  60.  
  61.   DiagMatrix sigma;
  62.   ComplexMatrix left_sm;
  63.   ComplexMatrix right_sm;
  64. };
  65.  
  66. inline ComplexSVD::ComplexSVD (const ComplexMatrix& a, SVD::type svd_type) 
  67. {
  68.   init (a, svd_type);
  69. }
  70.  
  71. inline ComplexSVD::ComplexSVD (const ComplexMatrix& a, int& info,
  72.                    SVD::type svd_type)
  73. {
  74.   info = init (a, svd_type);
  75.  
  76. inline ComplexSVD::ComplexSVD (const ComplexSVD& a)
  77. {
  78.   sigma = a.sigma;
  79.   left_sm = a.left_sm;
  80.   right_sm = a.right_sm;
  81. }
  82.  
  83. inline ComplexSVD&
  84. ComplexSVD::operator = (const ComplexSVD& a)
  85. {
  86.   sigma = a.sigma;
  87.   left_sm = a.left_sm;
  88.   right_sm = a.right_sm;
  89.  
  90.   return *this;
  91. }
  92.  
  93. inline DiagMatrix ComplexSVD::singular_values (void) const
  94. {
  95.   return sigma;
  96. }
  97.  
  98. inline ComplexMatrix ComplexSVD::left_singular_matrix (void) const
  99. {
  100.   return left_sm;
  101. }
  102.  
  103. inline ComplexMatrix ComplexSVD::right_singular_matrix (void) const
  104. {
  105.   return right_sm;
  106. }
  107.  
  108. } // extern "C++"
  109.  
  110. #endif
  111.  
  112. /*
  113. ;;; Local Variables: ***
  114. ;;; mode: C++ ***
  115. ;;; page-delimiter: "^/\\*" ***
  116. ;;; End: ***
  117. */
  118.