home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-bin.lha / include / octave / dDiagMatrix.h < prev    next >
C/C++ Source or Header  |  1996-10-12  |  4KB  |  134 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_DiagMatrix_h)
  25. #define octave_DiagMatrix_h 1
  26.  
  27. #include "Array.h"
  28.  
  29. #include "dRowVector.h"
  30. #include "dColVector.h"
  31.  
  32. #include "mx-defs.h"
  33.  
  34. extern "C++" {
  35.  
  36. class DiagMatrix : public DiagArray<double>
  37. {
  38. friend class SVD;
  39. friend class ComplexSVD;
  40.  
  41. public:
  42.  
  43.   DiagMatrix (void) : DiagArray<double> () { }
  44.   DiagMatrix (int n) : DiagArray<double> (n) { }
  45.   DiagMatrix (int n, double val) : DiagArray<double> (n, val) { }
  46.   DiagMatrix (int r, int c) : DiagArray<double> (r, c) { }
  47.   DiagMatrix (int r, int c, double val) : DiagArray<double> (r, c, val) { }
  48.   DiagMatrix (const RowVector& a) : DiagArray<double> (a) { }
  49.   DiagMatrix (const ColumnVector& a) : DiagArray<double> (a) { }
  50.   DiagMatrix (const DiagArray<double>& a) : DiagArray<double> (a) { }
  51.   DiagMatrix (const DiagMatrix& a) : DiagArray<double> (a) { }
  52. //  DiagMatrix (double a) : DiagArray<double> (1, a) { }
  53.  
  54.   DiagMatrix& operator = (const DiagMatrix& a)
  55.     {
  56.       DiagArray<double>::operator = (a);
  57.       return *this;
  58.     }
  59.  
  60. //  operator DiagArray<double>& () const { return *this; }
  61.  
  62.   int operator == (const DiagMatrix& a) const;
  63.   int operator != (const DiagMatrix& a) const;
  64.  
  65.   DiagMatrix& fill (double val);
  66.   DiagMatrix& fill (double val, int beg, int end);
  67.   DiagMatrix& fill (const ColumnVector& a);
  68.   DiagMatrix& fill (const RowVector& a);
  69.   DiagMatrix& fill (const ColumnVector& a, int beg);
  70.   DiagMatrix& fill (const RowVector& a, int beg);
  71.  
  72.   DiagMatrix transpose (void) const;
  73.  
  74.   friend DiagMatrix real (const ComplexDiagMatrix& a);
  75.   friend DiagMatrix imag (const ComplexDiagMatrix& a);
  76.  
  77. // resize is the destructive analog for this one
  78.  
  79.   Matrix extract (int r1, int c1, int r2, int c2) const;
  80.  
  81. // extract row or column i.
  82.  
  83.   RowVector row (int i) const;
  84.   RowVector row (char *s) const;
  85.  
  86.   ColumnVector column (int i) const;
  87.   ColumnVector column (char *s) const;
  88.  
  89.   DiagMatrix inverse (void) const;
  90.   DiagMatrix inverse (int& info) const;
  91.  
  92. // diagonal matrix by diagonal matrix -> diagonal matrix operations
  93.  
  94.   DiagMatrix& operator += (const DiagMatrix& a);
  95.   DiagMatrix& operator -= (const DiagMatrix& a);
  96.  
  97. // diagonal matrix by diagonal matrix -> diagonal matrix operations
  98.  
  99.   friend DiagMatrix operator * (const DiagMatrix& a,
  100.                 const DiagMatrix& b);
  101.  
  102. // other operations
  103.  
  104.   ColumnVector diag (void) const;
  105.   ColumnVector diag (int k) const;
  106.  
  107. // i/o
  108.  
  109.   friend ostream& operator << (ostream& os, const DiagMatrix& a);
  110.  
  111. #define KLUDGE_DIAG_MATRICES
  112. #define TYPE double
  113. #define KL_DMAT_TYPE DiagMatrix
  114. #include "mx-kludge.h"
  115. #undef KLUDGE_DIAG_MATRICES
  116. #undef TYPE
  117. #undef KL_DMAT_TYPE
  118.  
  119. private:
  120.  
  121.   DiagMatrix (double *d, int nr, int nc) : DiagArray<double> (d, nr, nc) { }
  122. };
  123.  
  124. } // extern "C++"
  125.  
  126. #endif
  127.  
  128. /*
  129. ;;; Local Variables: ***
  130. ;;; mode: C++ ***
  131. ;;; page-delimiter: "^/\\*" ***
  132. ;;; End: ***
  133. */
  134.