annotate liboctave/Matrix.h @ 443:25570b554bca

[project @ 1994-06-02 17:05:58 by jwe]
author jwe
date Thu, 02 Jun 1994 17:05:58 +0000
parents 7e870a4ec9bc
children 00f8b2242a18
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1 // Matrix manipulations. -*- C++ -*-
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
3
296
3c23b8ea9099 [project @ 1994-01-17 02:49:15 by jwe]
jwe
parents: 291
diff changeset
4 Copyright (C) 1992, 1993, 1994 John W. Eaton
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
5
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
7
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
11 later version.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
12
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
16 for more details.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
17
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, write to the Free
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
21
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
22 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
23
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
24 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
25
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
26 Should probably say something here about why these classes are not
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
27 represented by some sort of inheritance tree...
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
28
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
29 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
30
382
e02d6b664394 [project @ 1994-03-09 21:08:03 by jwe]
jwe
parents: 378
diff changeset
31 #if !defined (octave_Matrix_h)
e02d6b664394 [project @ 1994-03-09 21:08:03 by jwe]
jwe
parents: 378
diff changeset
32 #define octave_Matrix_h 1
e02d6b664394 [project @ 1994-03-09 21:08:03 by jwe]
jwe
parents: 378
diff changeset
33
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
34 #include <stdlib.h>
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
35 #include <stddef.h>
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
36 #include <math.h>
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
37 #include <assert.h>
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
38 #include <iostream.h>
443
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
39 #include <stdio.h>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
40 // #include <iomanip.h> // We don\'t use this yet.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
41 #include <Complex.h>
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
42
384
7e870a4ec9bc [project @ 1994-03-09 21:40:04 by jwe]
jwe
parents: 382
diff changeset
43 extern "C++" {
7e870a4ec9bc [project @ 1994-03-09 21:40:04 by jwe]
jwe
parents: 382
diff changeset
44
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
45 class ostream;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
46 class istream;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
47
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
48 #ifndef MAPPER_FCN_TYPEDEFS
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
49 #define MAPPER_FCN_TYPEDEFS 1
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
50
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
51 typedef double (*d_d_Mapper)(double);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
52 typedef double (*d_c_Mapper)(const Complex&);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
53 typedef Complex (*c_c_Mapper)(const Complex&);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
54
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
55 #endif
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
56
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
57 #include "Array.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
58
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
59 // Classes we declare.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
60
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
61 class Matrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
62 class ColumnVector;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
63 class RowVector;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
64 class DiagMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
65 class ComplexMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
66 class ComplexColumnVector;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
67 class ComplexRowVector;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
68 class ComplexDiagMatrix;
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
69 class AEPBALANCE;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
70 class ComplexAEPBALANCE;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
71 class GEPBALANCE;
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
72 class CHOL;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
73 class ComplexCHOL;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
74 class DET;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
75 class ComplexDET;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
76 class EIG;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
77 class HESS;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
78 class ComplexHESS;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
79 class SCHUR;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
80 class ComplexSCHUR;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
81 class SVD;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
82 class ComplexSVD;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
83 class LU;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
84 class ComplexLU;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
85 class QR;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
86 class ComplexQR;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
87
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
88 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
89 * Matrix class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
90 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
91
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
92 class Matrix : public Array2<double>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
93 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
94 friend class LU;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
95 friend class SVD;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
96
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
97 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
98
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
99 Matrix (void) : Array2<double> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
100 Matrix (int r, int c) : Array2<double> (r, c) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
101 Matrix (int r, int c, double val) : Array2<double> (r, c, val) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
102 Matrix (const Array2<double>& a) : Array2<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
103 Matrix (const Matrix& a) : Array2<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
104 Matrix (const DiagArray<double>& a) : Array2<double> (a) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
105 Matrix (const DiagMatrix& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
106 // Matrix (double a) : Array2<double> (1, 1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
107
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
108 Matrix& operator = (const Matrix& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
109 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
110 Array2<double>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
111 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
112 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
113
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
114 int operator == (const Matrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
115 int operator != (const Matrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
116
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
117 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
118
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
119 Matrix& insert (const Matrix& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
120 Matrix& insert (const RowVector& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
121 Matrix& insert (const ColumnVector& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
122 Matrix& insert (const DiagMatrix& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
123
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
124 Matrix& fill (double val);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
125 Matrix& fill (double val, int r1, int c1, int r2, int c2);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
126
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
127 Matrix append (const Matrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
128 Matrix append (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
129 Matrix append (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
130 Matrix append (const DiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
131
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
132 Matrix stack (const Matrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
133 Matrix stack (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
134 Matrix stack (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
135 Matrix stack (const DiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
136
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
137 Matrix transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
138
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
139 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
140
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
141 Matrix extract (int r1, int c1, int r2, int c2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
142
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
143 // extract row or column i.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
144
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
145 RowVector row (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
146 RowVector row (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
147
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
148 ColumnVector column (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
149 ColumnVector column (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
150
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
151 Matrix inverse (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
152 Matrix inverse (int& info) const;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
153 Matrix inverse (int& info, double& rcond) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
154
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
155 ComplexMatrix fourier (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
156 ComplexMatrix ifourier (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
157
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
158 DET determinant (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
159 DET determinant (int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
160 DET determinant (int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
161
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
162 Matrix solve (const Matrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
163 Matrix solve (const Matrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
164 Matrix solve (const Matrix& b, int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
165
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
166 ComplexMatrix solve (const ComplexMatrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
167 ComplexMatrix solve (const ComplexMatrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
168 ComplexMatrix solve (const ComplexMatrix& b, int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
169
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
170 ColumnVector solve (const ColumnVector& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
171 ColumnVector solve (const ColumnVector& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
172 ColumnVector solve (const ColumnVector& b, int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
173
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
174 ComplexColumnVector solve (const ComplexColumnVector& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
175 ComplexColumnVector solve (const ComplexColumnVector& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
176 ComplexColumnVector solve (const ComplexColumnVector& b, int& info,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
177 double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
178
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
179 Matrix lssolve (const Matrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
180 Matrix lssolve (const Matrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
181 Matrix lssolve (const Matrix& b, int& info, int& rank) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
182
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
183 ComplexMatrix lssolve (const ComplexMatrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
184 ComplexMatrix lssolve (const ComplexMatrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
185 ComplexMatrix lssolve (const ComplexMatrix& b, int& info,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
186 int& rank) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
187
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
188 ColumnVector lssolve (const ColumnVector& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
189 ColumnVector lssolve (const ColumnVector& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
190 ColumnVector lssolve (const ColumnVector& b, int& info, int& rank) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
191
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
192 ComplexColumnVector lssolve (const ComplexColumnVector& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
193 ComplexColumnVector lssolve (const ComplexColumnVector& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
194 ComplexColumnVector lssolve (const ComplexColumnVector& b, int& info,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
195 int& rank) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
196
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
197 Matrix& operator += (const Matrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
198 Matrix& operator -= (const Matrix& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
199
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
200 Matrix& operator += (const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
201 Matrix& operator -= (const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
202
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
203 // unary operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
204
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
205 Matrix operator ! (void) const;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
206
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
207 // matrix by scalar -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
208
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
209 friend ComplexMatrix operator + (const Matrix& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
210 friend ComplexMatrix operator - (const Matrix& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
211 friend ComplexMatrix operator * (const Matrix& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
212 friend ComplexMatrix operator / (const Matrix& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
213
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
214 // scalar by matrix -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
215
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
216 friend ComplexMatrix operator + (const Complex& s, const Matrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
217 friend ComplexMatrix operator - (const Complex& s, const Matrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
218 friend ComplexMatrix operator * (const Complex& s, const Matrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
219 friend ComplexMatrix operator / (const Complex& s, const Matrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
220
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
221 // matrix by column vector -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
222
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
223 friend ColumnVector operator * (const Matrix& a, const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
224 friend ComplexColumnVector operator * (const Matrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
225 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
226
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
227 // matrix by diagonal matrix -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
228
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
229 friend Matrix operator + (const Matrix& a, const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
230 friend Matrix operator - (const Matrix& a, const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
231 friend Matrix operator * (const Matrix& a, const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
232
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
233 friend ComplexMatrix operator + (const Matrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
234 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
235 friend ComplexMatrix operator - (const Matrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
236 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
237 friend ComplexMatrix operator * (const Matrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
238 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
239
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
240 // matrix by matrix -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
241
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
242 friend Matrix operator * (const Matrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
243 friend ComplexMatrix operator * (const Matrix& a, const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
244
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
245 friend ComplexMatrix operator + (const Matrix& a, const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
246 friend ComplexMatrix operator - (const Matrix& a, const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
247
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
248 friend ComplexMatrix product (const Matrix& a, const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
249 friend ComplexMatrix quotient (const Matrix& a, const ComplexMatrix& b);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
250
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
251 // other operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
252
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
253 friend Matrix map (d_d_Mapper f, const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
254 void map (d_d_Mapper f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
255
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
256 Matrix all (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
257 Matrix any (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
258
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
259 Matrix cumprod (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
260 Matrix cumsum (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
261 Matrix prod (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
262 Matrix sum (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
263 Matrix sumsq (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
264
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
265 ColumnVector diag (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
266 ColumnVector diag (int k) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
267
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
268 ColumnVector row_min (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
269 ColumnVector row_min_loc (void) const;
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
270
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
271 ColumnVector row_max (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
272 ColumnVector row_max_loc (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
273
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
274 RowVector column_min (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
275 RowVector column_min_loc (void) const;
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
276
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
277 RowVector column_max (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
278 RowVector column_max_loc (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
279
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
280 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
281
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
282 friend ostream& operator << (ostream& os, const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
283 friend istream& operator >> (istream& is, Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
284
443
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
285 enum conversion
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
286 {
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
287 CNV_UNKNOWN,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
288 CNV_UCHAR,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
289 CNV_CHAR,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
290 CNV_SCHAR,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
291 CNV_SHORT,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
292 CNV_USHORT,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
293 CNV_INT,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
294 CNV_UINT,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
295 CNV_LONG,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
296 CNV_ULONG,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
297 CNV_FLOAT,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
298 CNV_DOUBLE,
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
299 };
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
300
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
301
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
302 int read (FILE *fptr, int size, Matrix::conversion);
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
303 int write (FILE *fptr, int size, Matrix::conversion);
25570b554bca [project @ 1994-06-02 17:05:58 by jwe]
jwe
parents: 384
diff changeset
304
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
305 // Until templates really work with g++:
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
306
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
307 #define KLUDGE_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
308 #define TYPE double
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
309 #define KL_MAT_TYPE Matrix
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
310 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
311 #undef KLUDGE_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
312 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
313 #undef KL_MAT_TYPE
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
314
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
315 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
316
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
317 Matrix (double *d, int r, int c) : Array2<double> (d, r, c) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
318 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
319
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
320 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
321 * Column Vector class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
322 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
323
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
324 class ColumnVector : public Array<double>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
325 {
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
326 friend class RowVector;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
327
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
328 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
329
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
330 ColumnVector (void) : Array<double> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
331 ColumnVector (int n) : Array<double> (n) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
332 ColumnVector (int n, double val) : Array<double> (n, val) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
333 ColumnVector (const Array<double>& a) : Array<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
334 ColumnVector (const ColumnVector& a) : Array<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
335 // ColumnVector (double a) : Array<double> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
336
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
337 ColumnVector& operator = (const ColumnVector& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
338 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
339 Array<double>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
340 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
341 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
342
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
343 // operator Array<double>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
344
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
345 int operator == (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
346 int operator != (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
347
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
348 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
349
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
350 ColumnVector& insert (const ColumnVector& a, int r);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
351
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
352 ColumnVector& fill (double val);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
353 ColumnVector& fill (double val, int r1, int r2);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
354
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
355 ColumnVector stack (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
356
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
357 RowVector transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
358
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
359 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
360
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
361 ColumnVector extract (int r1, int r2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
362
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
363 // column vector by column vector -> column vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
364
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
365 ColumnVector& operator += (const ColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
366 ColumnVector& operator -= (const ColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
367
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
368 // column vector by scalar -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
369
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
370 friend ComplexColumnVector operator + (const ColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
371 const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
372 friend ComplexColumnVector operator - (const ColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
373 const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
374 friend ComplexColumnVector operator * (const ColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
375 const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
376 friend ComplexColumnVector operator / (const ColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
377 const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
378
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
379 // scalar by column vector -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
380
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
381 friend ComplexColumnVector operator + (const Complex& s,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
382 const ColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
383 friend ComplexColumnVector operator - (const Complex& s,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
384 const ColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
385 friend ComplexColumnVector operator * (const Complex& s,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
386 const ColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
387 friend ComplexColumnVector operator / (const Complex& s,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
388 const ColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
389
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
390 // column vector by row vector -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
391
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
392 friend Matrix operator * (const ColumnVector& a, const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
393
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
394 friend ComplexMatrix operator * (const ColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
395 const ComplexRowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
396
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
397 // column vector by column vector -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
398
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
399 friend ComplexColumnVector operator + (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
400 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
401
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
402 friend ComplexColumnVector operator - (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
403 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
404
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
405 friend ComplexColumnVector product (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
406 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
407
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
408 friend ComplexColumnVector quotient (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
409 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
410
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
411 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
412
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
413 friend ColumnVector map (d_d_Mapper f, const ColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
414 void map (d_d_Mapper f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
415
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
416 double min (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
417 double max (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
418
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
419 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
420
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
421 friend ostream& operator << (ostream& os, const ColumnVector& a);
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
422 friend ostream& operator >> (ostream& is, ColumnVector& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
423
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
424 #define KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
425 #define TYPE double
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
426 #define KL_VEC_TYPE ColumnVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
427 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
428 #undef KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
429 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
430 #undef KL_VEC_TYPE
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
431
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
432 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
433
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
434 ColumnVector (double *d, int l) : Array<double> (d, l) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
435 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
436
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
437 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
438 * Row Vector class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
439 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
440
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
441 class RowVector : public Array<double>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
442 {
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
443 friend class ColumnVector;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
444
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
445 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
446
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
447 RowVector (void) : Array<double> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
448 RowVector (int n) : Array<double> (n) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
449 RowVector (int n, double val) : Array<double> (n, val) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
450 RowVector (const Array<double>& a) : Array<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
451 RowVector (const RowVector& a) : Array<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
452 // RowVector (double a) : Array<double> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
453
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
454 RowVector& operator = (const RowVector& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
455 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
456 Array<double>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
457 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
458 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
459
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
460 // operator Array<double>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
461
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
462 int operator == (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
463 int operator != (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
464
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
465 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
466
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
467 RowVector& insert (const RowVector& a, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
468
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
469 RowVector& fill (double val);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
470 RowVector& fill (double val, int c1, int c2);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
471
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
472 RowVector append (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
473
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
474 ColumnVector transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
475
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
476 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
477
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
478 RowVector extract (int c1, int c2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
479
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
480 // row vector by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
481
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
482 RowVector& operator += (const RowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
483 RowVector& operator -= (const RowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
484
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
485 // row vector by scalar -> row vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
486
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
487 friend ComplexRowVector operator + (const RowVector& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
488 friend ComplexRowVector operator - (const RowVector& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
489 friend ComplexRowVector operator * (const RowVector& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
490 friend ComplexRowVector operator / (const RowVector& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
491
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
492 // scalar by row vector -> row vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
493
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
494 friend ComplexRowVector operator + (const Complex& s, const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
495 friend ComplexRowVector operator - (const Complex& s, const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
496 friend ComplexRowVector operator * (const Complex& s, const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
497 friend ComplexRowVector operator / (const Complex& s, const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
498
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
499 // row vector by column vector -> scalar
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
500
343
ecb6f1e11842 [project @ 1994-02-08 03:24:33 by jwe]
jwe
parents: 326
diff changeset
501 friend double operator * (const RowVector& a, const ColumnVector& b);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
502
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
503 friend Complex operator * (const RowVector& a, const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
504
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
505 // row vector by matrix -> row vector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
506
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
507 friend RowVector operator * (const RowVector& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
508
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
509 friend ComplexRowVector operator * (const RowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
510 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
511
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
512 // row vector by row vector -> row vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
513
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
514 friend ComplexRowVector operator + (const RowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
515 const ComplexRowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
516 friend ComplexRowVector operator - (const RowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
517 const ComplexRowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
518
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
519 friend ComplexRowVector product (const RowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
520 const ComplexRowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
521 friend ComplexRowVector quotient (const RowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
522 const ComplexRowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
523
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
524 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
525
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
526 friend RowVector map (d_d_Mapper f, const RowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
527 void map (d_d_Mapper f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
528
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
529 double min (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
530 double max (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
531
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
532 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
533
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
534 friend ostream& operator << (ostream& os, const RowVector& a);
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
535 friend ostream& operator >> (ostream& is, RowVector& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
536
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
537 #define KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
538 #define TYPE double
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
539 #define KL_VEC_TYPE RowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
540 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
541 #undef KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
542 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
543 #undef KL_VEC_TYPE
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
544
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
545 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
546
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
547 RowVector (double *d, int l) : Array<double> (d, l) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
548 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
549
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
550 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
551 * Diagonal Matrix class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
552 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
553
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
554 class DiagMatrix : public DiagArray<double>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
555 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
556 friend class SVD;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
557 friend class ComplexSVD;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
558
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
559 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
560
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
561 DiagMatrix (void) : DiagArray<double> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
562 DiagMatrix (int n) : DiagArray<double> (n) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
563 DiagMatrix (int n, double val) : DiagArray<double> (n, val) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
564 DiagMatrix (int r, int c) : DiagArray<double> (r, c) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
565 DiagMatrix (int r, int c, double val) : DiagArray<double> (r, c, val) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
566 DiagMatrix (const RowVector& a) : DiagArray<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
567 DiagMatrix (const ColumnVector& a) : DiagArray<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
568 DiagMatrix (const DiagArray<double>& a) : DiagArray<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
569 DiagMatrix (const DiagMatrix& a) : DiagArray<double> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
570 // DiagMatrix (double a) : DiagArray<double> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
571
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
572 DiagMatrix& operator = (const DiagMatrix& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
573 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
574 DiagArray<double>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
575 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
576 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
577
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
578 // operator DiagArray<double>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
579
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
580 int operator == (const DiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
581 int operator != (const DiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
582
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
583 DiagMatrix& fill (double val);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
584 DiagMatrix& fill (double val, int beg, int end);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
585 DiagMatrix& fill (const ColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
586 DiagMatrix& fill (const RowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
587 DiagMatrix& fill (const ColumnVector& a, int beg);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
588 DiagMatrix& fill (const RowVector& a, int beg);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
589
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
590 DiagMatrix transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
591
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
592 // resize is the destructive analog for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
593
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
594 Matrix extract (int r1, int c1, int r2, int c2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
595
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
596 // extract row or column i.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
597
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
598 RowVector row (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
599 RowVector row (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
600
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
601 ColumnVector column (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
602 ColumnVector column (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
603
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
604 DiagMatrix inverse (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
605 DiagMatrix inverse (int& info) const;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
606
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
607 // diagonal matrix by diagonal matrix -> diagonal matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
608
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
609 DiagMatrix& operator += (const DiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
610 DiagMatrix& operator -= (const DiagMatrix& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
611
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
612 // diagonal matrix by scalar -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
613
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
614 friend Matrix operator + (const DiagMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
615 friend Matrix operator - (const DiagMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
616
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
617 friend ComplexMatrix operator + (const DiagMatrix& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
618 friend ComplexMatrix operator - (const DiagMatrix& a, const Complex& s);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
619
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
620 // diagonal matrix by scalar -> diagonal matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
621
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
622 friend ComplexDiagMatrix operator * (const DiagMatrix& a, const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
623 friend ComplexDiagMatrix operator / (const DiagMatrix& a, const Complex& s);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
624
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
625 // scalar by diagonal matrix -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
626
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
627 friend Matrix operator + (double s, const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
628 friend Matrix operator - (double s, const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
629
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
630 friend ComplexMatrix operator + (const Complex& s, const DiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
631 friend ComplexMatrix operator - (const Complex& s, const DiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
632
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
633 // scalar by diagonal matrix -> diagonal matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
634
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
635 friend ComplexDiagMatrix operator * (const Complex& s, const DiagMatrix& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
636
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
637 // diagonal matrix by column vector -> column vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
638
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
639 friend ColumnVector operator * (const DiagMatrix& a, const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
640
343
ecb6f1e11842 [project @ 1994-02-08 03:24:33 by jwe]
jwe
parents: 326
diff changeset
641 friend ComplexColumnVector operator * (const DiagMatrix& a,
ecb6f1e11842 [project @ 1994-02-08 03:24:33 by jwe]
jwe
parents: 326
diff changeset
642 const ComplexColumnVector& b);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
643
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
644 // diagonal matrix by diagonal matrix -> diagonal matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
645
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
646 friend DiagMatrix operator * (const DiagMatrix& a,
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
647 const DiagMatrix& b);
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
648
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
649 friend ComplexDiagMatrix operator + (const DiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
650 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
651 friend ComplexDiagMatrix operator - (const DiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
652 const ComplexDiagMatrix& b);
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
653 friend ComplexDiagMatrix operator * (const DiagMatrix& a,
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
654 const ComplexDiagMatrix& b);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
655
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
656 friend ComplexDiagMatrix product (const DiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
657 const ComplexDiagMatrix& b);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
658
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
659 // diagonal matrix by matrix -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
660
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
661 friend Matrix operator + (const DiagMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
662 friend Matrix operator - (const DiagMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
663 friend Matrix operator * (const DiagMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
664
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
665 friend ComplexMatrix operator + (const DiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
666 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
667 friend ComplexMatrix operator - (const DiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
668 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
669 friend ComplexMatrix operator * (const DiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
670 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
671
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
672 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
673
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
674 ColumnVector diag (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
675 ColumnVector diag (int k) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
676
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
677 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
678
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
679 friend ostream& operator << (ostream& os, const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
680
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
681 #define KLUDGE_DIAG_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
682 #define TYPE double
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
683 #define KL_DMAT_TYPE DiagMatrix
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
684 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
685 #undef KLUDGE_DIAG_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
686 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
687 #undef KL_DMAT_TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
688
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
689 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
690
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
691 DiagMatrix (double *d, int nr, int nc) : DiagArray<double> (d, nr, nc) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
692 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
693
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
694 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
695 * Complex Matrix class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
696 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
697
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
698 class ComplexMatrix : public Array2<Complex>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
699 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
700 friend class ComplexLU;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
701 friend class ComplexSVD;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
702
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
703 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
704
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
705 ComplexMatrix (void) : Array2<Complex> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
706 ComplexMatrix (int r, int c) : Array2<Complex> (r, c) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
707 ComplexMatrix (int r, int c, const Complex& val)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
708 : Array2<Complex> (r, c, val) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
709 ComplexMatrix (const Matrix& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
710 ComplexMatrix (const Array2<Complex>& a) : Array2<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
711 ComplexMatrix (const ComplexMatrix& a) : Array2<Complex> (a) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
712 ComplexMatrix (const DiagMatrix& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
713 ComplexMatrix (const DiagArray<Complex>& a) : Array2<Complex> (a) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
714 ComplexMatrix (const ComplexDiagMatrix& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
715 // ComplexMatrix (double a) : Array2<Complex> (1, 1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
716 // ComplexMatrix (const Complex& a) : Array2<Complex> (1, 1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
717
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
718 ComplexMatrix& operator = (const ComplexMatrix& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
719 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
720 Array2<Complex>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
721 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
722 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
723
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
724 // operator Array2<Complex>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
725
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
726 int operator == (const ComplexMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
727 int operator != (const ComplexMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
728
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
729 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
730
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
731 ComplexMatrix& insert (const Matrix& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
732 ComplexMatrix& insert (const RowVector& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
733 ComplexMatrix& insert (const ColumnVector& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
734 ComplexMatrix& insert (const DiagMatrix& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
735
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
736 ComplexMatrix& insert (const ComplexMatrix& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
737 ComplexMatrix& insert (const ComplexRowVector& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
738 ComplexMatrix& insert (const ComplexColumnVector& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
739 ComplexMatrix& insert (const ComplexDiagMatrix& a, int r, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
740
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
741 ComplexMatrix& fill (double val);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
742 ComplexMatrix& fill (const Complex& val);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
743 ComplexMatrix& fill (double val, int r1, int c1, int r2, int c2);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
744 ComplexMatrix& fill (const Complex& val, int r1, int c1, int r2, int c2);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
745
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
746 ComplexMatrix append (const Matrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
747 ComplexMatrix append (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
748 ComplexMatrix append (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
749 ComplexMatrix append (const DiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
750
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
751 ComplexMatrix append (const ComplexMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
752 ComplexMatrix append (const ComplexRowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
753 ComplexMatrix append (const ComplexColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
754 ComplexMatrix append (const ComplexDiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
755
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
756 ComplexMatrix stack (const Matrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
757 ComplexMatrix stack (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
758 ComplexMatrix stack (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
759 ComplexMatrix stack (const DiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
760
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
761 ComplexMatrix stack (const ComplexMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
762 ComplexMatrix stack (const ComplexRowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
763 ComplexMatrix stack (const ComplexColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
764 ComplexMatrix stack (const ComplexDiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
765
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
766 ComplexMatrix hermitian (void) const; // complex conjugate transpose
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
767 ComplexMatrix transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
768
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
769 friend Matrix real (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
770 friend Matrix imag (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
771 friend ComplexMatrix conj (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
772
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
773 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
774
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
775 ComplexMatrix extract (int r1, int c1, int r2, int c2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
776
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
777 // extract row or column i.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
778
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
779 ComplexRowVector row (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
780 ComplexRowVector row (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
781
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
782 ComplexColumnVector column (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
783 ComplexColumnVector column (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
784
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
785 ComplexMatrix inverse (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
786 ComplexMatrix inverse (int& info) const;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
787 ComplexMatrix inverse (int& info, double& rcond) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
788
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
789 ComplexMatrix fourier (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
790 ComplexMatrix ifourier (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
791
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
792 ComplexDET determinant (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
793 ComplexDET determinant (int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
794 ComplexDET determinant (int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
795
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
796 ComplexMatrix solve (const Matrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
797 ComplexMatrix solve (const Matrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
798 ComplexMatrix solve (const Matrix& b, int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
799
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
800 ComplexMatrix solve (const ComplexMatrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
801 ComplexMatrix solve (const ComplexMatrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
802 ComplexMatrix solve (const ComplexMatrix& b, int& info, double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
803
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
804 ComplexColumnVector solve (const ComplexColumnVector& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
805 ComplexColumnVector solve (const ComplexColumnVector& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
806 ComplexColumnVector solve (const ComplexColumnVector& b, int& info,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
807 double& rcond) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
808
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
809 ComplexMatrix lssolve (const ComplexMatrix& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
810 ComplexMatrix lssolve (const ComplexMatrix& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
811 ComplexMatrix lssolve (const ComplexMatrix& b, int& info,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
812 int& rank) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
813
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
814 ComplexColumnVector lssolve (const ComplexColumnVector& b) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
815 ComplexColumnVector lssolve (const ComplexColumnVector& b, int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
816 ComplexColumnVector lssolve (const ComplexColumnVector& b, int& info,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
817 int& rank) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
818
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
819 // matrix by diagonal matrix -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
820
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
821 ComplexMatrix& operator += (const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
822 ComplexMatrix& operator -= (const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
823
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
824 ComplexMatrix& operator += (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
825 ComplexMatrix& operator -= (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
826
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
827 // matrix by matrix -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
828
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
829 ComplexMatrix& operator += (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
830 ComplexMatrix& operator -= (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
831
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
832 ComplexMatrix& operator += (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
833 ComplexMatrix& operator -= (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
834
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
835 // unary operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
836
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
837 Matrix operator ! (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
838
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
839 // matrix by scalar -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
840
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
841 friend ComplexMatrix operator + (const ComplexMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
842 friend ComplexMatrix operator - (const ComplexMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
843 friend ComplexMatrix operator * (const ComplexMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
844 friend ComplexMatrix operator / (const ComplexMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
845
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
846 // scalar by matrix -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
847
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
848 friend ComplexMatrix operator + (double s, const ComplexMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
849 friend ComplexMatrix operator - (double s, const ComplexMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
850 friend ComplexMatrix operator * (double s, const ComplexMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
851 friend ComplexMatrix operator / (double s, const ComplexMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
852
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
853 // matrix by column vector -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
854
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
855 friend ComplexColumnVector operator * (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
856 const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
857
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
858 friend ComplexColumnVector operator * (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
859 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
860
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
861 // matrix by diagonal matrix -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
862
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
863 friend ComplexMatrix operator + (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
864 const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
865 friend ComplexMatrix operator - (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
866 const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
867 friend ComplexMatrix operator * (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
868 const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
869
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
870 friend ComplexMatrix operator + (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
871 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
872 friend ComplexMatrix operator - (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
873 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
874 friend ComplexMatrix operator * (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
875 const ComplexDiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
876
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
877 // matrix by matrix -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
878
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
879 friend ComplexMatrix operator + (const ComplexMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
880 friend ComplexMatrix operator - (const ComplexMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
881
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
882 friend ComplexMatrix operator * (const ComplexMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
883 friend ComplexMatrix operator * (const ComplexMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
884 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
885
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
886 friend ComplexMatrix product (const ComplexMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
887 friend ComplexMatrix quotient (const ComplexMatrix& a, const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
888
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
889 // other operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
890
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
891 friend ComplexMatrix map (c_c_Mapper f, const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
892 friend Matrix map (d_c_Mapper f, const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
893 void map (c_c_Mapper f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
894
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
895 Matrix all (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
896 Matrix any (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
897
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
898 ComplexMatrix cumprod (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
899 ComplexMatrix cumsum (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
900 ComplexMatrix prod (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
901 ComplexMatrix sum (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
902 ComplexMatrix sumsq (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
903
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
904 ComplexColumnVector diag (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
905 ComplexColumnVector diag (int k) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
906
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
907 ComplexColumnVector row_min (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
908 ComplexColumnVector row_min_loc (void) const;
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
909
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
910 ComplexColumnVector row_max (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
911 ComplexColumnVector row_max_loc (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
912
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
913 ComplexRowVector column_min (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
914 ComplexRowVector column_min_loc (void) const;
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
915
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
916 ComplexRowVector column_max (void) const;
210
7947b7a6b6da [project @ 1993-11-12 10:51:10 by jwe]
jwe
parents: 193
diff changeset
917 ComplexRowVector column_max_loc (void) const;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
918
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
919 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
920
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
921 friend ostream& operator << (ostream& os, const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
922 friend istream& operator >> (istream& is, ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
923
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
924 #define KLUDGE_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
925 #define TYPE Complex
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
926 #define KL_MAT_TYPE ComplexMatrix
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
927 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
928 #undef KLUDGE_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
929 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
930 #undef KL_MAT_TYPE
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
931
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
932 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
933
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
934 ComplexMatrix (Complex *d, int r, int c) : Array2<Complex> (d, r, c) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
935 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
936
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
937 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
938 * Complex Column Vector class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
939 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
940
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
941 class ComplexColumnVector : public Array<Complex>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
942 {
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
943 friend class ComplexRowVector;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
944
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
945 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
946
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
947 ComplexColumnVector (void) : Array<Complex> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
948 ComplexColumnVector (int n) : Array<Complex> (n) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
949 ComplexColumnVector (int n, const Complex& val)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
950 : Array<Complex> (n, val) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
951 ComplexColumnVector (const ColumnVector& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
952 ComplexColumnVector (const Array<Complex>& a) : Array<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
953 ComplexColumnVector (const ComplexColumnVector& a) : Array<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
954 // ComplexColumnVector (double a) : Array<Complex> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
955 // ComplexColumnVector (const Complex& a) : Array<Complex> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
956
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
957 ComplexColumnVector& operator = (const ComplexColumnVector& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
958 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
959 Array<Complex>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
960 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
961 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
962
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
963 // operator Array<Complex>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
964
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
965 int operator == (const ComplexColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
966 int operator != (const ComplexColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
967
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
968 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
969
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
970 ComplexColumnVector& insert (const ColumnVector& a, int r);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
971 ComplexColumnVector& insert (const ComplexColumnVector& a, int r);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
972
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
973 ComplexColumnVector& fill (double val);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
974 ComplexColumnVector& fill (const Complex& val);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
975 ComplexColumnVector& fill (double val, int r1, int r2);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
976 ComplexColumnVector& fill (const Complex& val, int r1, int r2);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
977
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
978 ComplexColumnVector stack (const ColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
979 ComplexColumnVector stack (const ComplexColumnVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
980
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
981 ComplexRowVector hermitian (void) const; // complex conjugate transpose.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
982 ComplexRowVector transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
983
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
984 friend ColumnVector real (const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
985 friend ColumnVector imag (const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
986 friend ComplexColumnVector conj (const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
987
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
988 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
989
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
990 ComplexColumnVector extract (int r1, int r2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
991
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
992 // column vector by column vector -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
993
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
994 ComplexColumnVector& operator += (const ColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
995 ComplexColumnVector& operator -= (const ColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
996
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
997 ComplexColumnVector& operator += (const ComplexColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
998 ComplexColumnVector& operator -= (const ComplexColumnVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
999
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1000 // column vector by scalar -> column vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1001
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1002 friend ComplexColumnVector operator + (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1003 double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1004 friend ComplexColumnVector operator - (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1005 double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1006 friend ComplexColumnVector operator * (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1007 double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1008 friend ComplexColumnVector operator / (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1009 double s);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1010
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1011 // scalar by column vector -> column vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1012
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1013 friend ComplexColumnVector operator + (double s,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1014 const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1015 friend ComplexColumnVector operator - (double s,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1016 const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1017 friend ComplexColumnVector operator * (double s,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1018 const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1019 friend ComplexColumnVector operator / (double s,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1020 const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1021
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1022 // column vector by row vector -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1023
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1024 friend ComplexMatrix operator * (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1025 const ComplexRowVector& b);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1026
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1027 // column vector by column vector -> column vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1028
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1029 friend ComplexColumnVector operator + (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1030 const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1031 friend ComplexColumnVector operator - (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1032 const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1033
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1034 friend ComplexColumnVector product (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1035 const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1036 friend ComplexColumnVector quotient (const ComplexColumnVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1037 const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1038
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1039 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1040
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1041 friend ComplexColumnVector map (c_c_Mapper f, const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1042 friend ColumnVector map (d_c_Mapper f, const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1043 void map (c_c_Mapper f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1044
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1045 Complex min (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1046 Complex max (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1047
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1048 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1049
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1050 friend ostream& operator << (ostream& os, const ComplexColumnVector& a);
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1051 friend ostream& operator >> (ostream& is, ComplexColumnVector& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1052
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1053 #define KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1054 #define TYPE Complex
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1055 #define KL_VEC_TYPE ComplexColumnVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1056 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1057 #undef KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1058 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1059 #undef KL_VEC_TYPE
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1060
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1061 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1062
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1063 ComplexColumnVector (Complex *d, int l) : Array<Complex> (d, l) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1064 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1065
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1066 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1067 * Complex Row Vector class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1068 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1069
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1070 class ComplexRowVector : public Array<Complex>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1071 {
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1072 friend class ComplexColumnVector;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1073
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1074 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1075
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1076 ComplexRowVector (void) : Array<Complex> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1077 ComplexRowVector (int n) : Array<Complex> (n) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1078 ComplexRowVector (int n, const Complex& val) : Array<Complex> (n, val) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1079 ComplexRowVector (const RowVector& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1080 ComplexRowVector (const Array<Complex>& a) : Array<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1081 ComplexRowVector (const ComplexRowVector& a) : Array<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1082 // ComplexRowVector (double a) : Array<Complex> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1083 // ComplexRowVector (const Complex& a) : Array<Complex> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1084
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1085 ComplexRowVector& operator = (const ComplexRowVector& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1086 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1087 Array<Complex>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1088 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1089 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1090
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1091 // operator Array<Complex>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1092
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1093 int operator == (const ComplexRowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1094 int operator != (const ComplexRowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1095
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1096 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1097
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1098 ComplexRowVector& insert (const RowVector& a, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1099 ComplexRowVector& insert (const ComplexRowVector& a, int c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1100
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1101 ComplexRowVector& fill (double val);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
1102 ComplexRowVector& fill (const Complex& val);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1103 ComplexRowVector& fill (double val, int c1, int c2);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
1104 ComplexRowVector& fill (const Complex& val, int c1, int c2);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1105
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1106 ComplexRowVector append (const RowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1107 ComplexRowVector append (const ComplexRowVector& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1108
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1109 ComplexColumnVector hermitian (void) const; // complex conjugate transpose.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1110 ComplexColumnVector transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1111
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1112 friend RowVector real (const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1113 friend RowVector imag (const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1114 friend ComplexRowVector conj (const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1115
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1116 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1117
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1118 ComplexRowVector extract (int c1, int c2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1119
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1120 // row vector by row vector -> row vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1121
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1122 ComplexRowVector& operator += (const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1123 ComplexRowVector& operator -= (const RowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1124
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1125 ComplexRowVector& operator += (const ComplexRowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1126 ComplexRowVector& operator -= (const ComplexRowVector& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1127
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1128 // row vector by scalar -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1129
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1130 friend ComplexRowVector operator + (const ComplexRowVector& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1131 friend ComplexRowVector operator - (const ComplexRowVector& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1132 friend ComplexRowVector operator * (const ComplexRowVector& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1133 friend ComplexRowVector operator / (const ComplexRowVector& a, double s);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1134
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1135 // scalar by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1136
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1137 friend ComplexRowVector operator + (double s, const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1138 friend ComplexRowVector operator - (double s, const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1139 friend ComplexRowVector operator * (double s, const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1140 friend ComplexRowVector operator / (double s, const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1141
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1142 // row vector by column vector -> scalar
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1143
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1144 friend Complex operator * (const ComplexRowVector& a, const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1145
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1146 friend Complex operator * (const ComplexRowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1147 const ComplexColumnVector& b);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1148
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1149 // row vector by matrix -> row vector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1150
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1151 friend ComplexRowVector operator * (const ComplexRowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1152 const ComplexMatrix& b);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1153
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1154 // row vector by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1155
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1156 friend ComplexRowVector operator + (const ComplexRowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1157 const RowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1158 friend ComplexRowVector operator - (const ComplexRowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1159 const RowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1160
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1161 friend ComplexRowVector product (const ComplexRowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1162 const RowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1163 friend ComplexRowVector quotient (const ComplexRowVector& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1164 const RowVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1165
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1166 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1167
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1168 friend ComplexRowVector map (c_c_Mapper f, const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1169 friend RowVector map (d_c_Mapper f, const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1170 void map (c_c_Mapper f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1171
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1172 Complex min (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1173 Complex max (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1174
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1175 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1176
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1177 friend ostream& operator << (ostream& os, const ComplexRowVector& a);
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1178 friend ostream& operator >> (ostream& is, ComplexRowVector& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1179
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1180 #define KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1181 #define TYPE Complex
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1182 #define KL_VEC_TYPE ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1183 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1184 #undef KLUDGE_VECTORS
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1185 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1186 #undef KL_VEC_TYPE
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1187
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1188 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1189
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1190 ComplexRowVector (Complex *d, int l) : Array<Complex> (d, l) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1191 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1192
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1193 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1194 * Complex Diagonal Matrix class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1195 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1196
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1197 class ComplexDiagMatrix : public DiagArray<Complex>
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1198 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1199 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1200
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1201 ComplexDiagMatrix (void) : DiagArray<Complex> () { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1202 ComplexDiagMatrix (int n) : DiagArray<Complex> (n) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1203 ComplexDiagMatrix (int n, const Complex& val)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1204 : DiagArray<Complex> (n, val) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1205 ComplexDiagMatrix (int r, int c) : DiagArray<Complex> (r, c) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1206 ComplexDiagMatrix (int r, int c, const Complex& val)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1207 : DiagArray<Complex> (r, c, val) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1208 ComplexDiagMatrix (const RowVector& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1209 ComplexDiagMatrix (const ComplexRowVector& a) : DiagArray<Complex> (a) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1210 ComplexDiagMatrix (const ColumnVector& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1211 ComplexDiagMatrix (const ComplexColumnVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1212 : DiagArray<Complex> (a) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1213 ComplexDiagMatrix (const DiagMatrix& a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1214 ComplexDiagMatrix (const DiagArray<Complex>& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1215 : DiagArray<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1216 ComplexDiagMatrix (const ComplexDiagMatrix& a) : DiagArray<Complex> (a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1217 // ComplexDiagMatrix (const Complex& a) : DiagArray<Complex> (1, a) { }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1218
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1219 ComplexDiagMatrix& operator = (const ComplexDiagMatrix& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1220 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1221 DiagArray<Complex>::operator = (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1222 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1223 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1224
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1225 // operator DiagArray<Complex>& () const { return *this; }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1226
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1227 int operator == (const ComplexDiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1228 int operator != (const ComplexDiagMatrix& a) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1229
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1230 ComplexDiagMatrix& fill (double val);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
1231 ComplexDiagMatrix& fill (const Complex& val);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1232 ComplexDiagMatrix& fill (double val, int beg, int end);
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
1233 ComplexDiagMatrix& fill (const Complex& val, int beg, int end);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1234 ComplexDiagMatrix& fill (const ColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1235 ComplexDiagMatrix& fill (const ComplexColumnVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1236 ComplexDiagMatrix& fill (const RowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1237 ComplexDiagMatrix& fill (const ComplexRowVector& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1238 ComplexDiagMatrix& fill (const ColumnVector& a, int beg);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1239 ComplexDiagMatrix& fill (const ComplexColumnVector& a, int beg);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1240 ComplexDiagMatrix& fill (const RowVector& a, int beg);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1241 ComplexDiagMatrix& fill (const ComplexRowVector& a, int beg);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1242
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1243 ComplexDiagMatrix hermitian (void) const; // complex conjugate transpose
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1244 ComplexDiagMatrix transpose (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1245
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1246 friend DiagMatrix real (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1247 friend DiagMatrix imag (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1248 friend ComplexDiagMatrix conj (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1249
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1250 // resize is the destructive analog for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1251
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1252 ComplexMatrix extract (int r1, int c1, int r2, int c2) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1253
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1254 // extract row or column i.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1255
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1256 ComplexRowVector row (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1257 ComplexRowVector row (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1258
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1259 ComplexColumnVector column (int i) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1260 ComplexColumnVector column (char *s) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1261
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1262 ComplexDiagMatrix inverse (int& info) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1263 ComplexDiagMatrix inverse (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1264
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1265 // diagonal matrix by diagonal matrix -> diagonal matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1266
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1267 ComplexDiagMatrix& operator += (const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1268 ComplexDiagMatrix& operator -= (const DiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1269
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1270 ComplexDiagMatrix& operator += (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1271 ComplexDiagMatrix& operator -= (const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1272
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1273 // diagonal matrix by scalar -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1274
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1275 friend ComplexMatrix operator + (const ComplexDiagMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1276 friend ComplexMatrix operator - (const ComplexDiagMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1277
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1278 friend ComplexMatrix operator + (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1279 const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1280 friend ComplexMatrix operator - (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1281 const Complex& s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1282
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1283 // diagonal matrix by scalar -> diagonal matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1284
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1285 friend ComplexDiagMatrix operator * (const ComplexDiagMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1286 friend ComplexDiagMatrix operator / (const ComplexDiagMatrix& a, double s);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1287
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1288 // scalar by diagonal matrix -> matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1289
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1290 friend ComplexMatrix operator + (double s, const ComplexDiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1291 friend ComplexMatrix operator - (double s, const ComplexDiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1292
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1293 friend ComplexMatrix operator + (const Complex& s,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1294 const ComplexDiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1295 friend ComplexMatrix operator - (const Complex& s,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1296 const ComplexDiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1297
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1298 // scalar by diagonal matrix -> diagonal matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1299
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1300 friend ComplexDiagMatrix operator * (double s, const ComplexDiagMatrix& a);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1301
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1302 // diagonal matrix by column vector -> column vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1303
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1304 friend ComplexColumnVector operator * (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1305 const ColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1306
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1307 friend ComplexColumnVector operator * (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1308 const ComplexColumnVector& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1309
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1310 // diagonal matrix by diagonal matrix -> diagonal matrix operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1311
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1312 friend ComplexDiagMatrix operator * (const ComplexDiagMatrix& a,
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1313 const ComplexDiagMatrix& b);
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1314
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1315 friend ComplexDiagMatrix operator + (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1316 const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1317 friend ComplexDiagMatrix operator - (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1318 const DiagMatrix& b);
378
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1319 friend ComplexDiagMatrix operator * (const ComplexDiagMatrix& a,
e04b38065c55 [project @ 1994-03-03 20:41:35 by jwe]
jwe
parents: 343
diff changeset
1320 const DiagMatrix& b);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1321
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1322 friend ComplexDiagMatrix product (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1323 const DiagMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1324
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1325 // diagonal matrix by matrix -> matrix operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1326
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1327 friend ComplexMatrix operator + (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1328 const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1329 friend ComplexMatrix operator - (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1330 const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1331 friend ComplexMatrix operator * (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1332 const Matrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1333
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1334 friend ComplexMatrix operator + (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1335 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1336 friend ComplexMatrix operator - (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1337 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1338 friend ComplexMatrix operator * (const ComplexDiagMatrix& a,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1339 const ComplexMatrix& b);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1340
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1341 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1342
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1343 ComplexColumnVector diag (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1344 ComplexColumnVector diag (int k) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1345
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1346 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1347
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1348 friend ostream& operator << (ostream& os, const ComplexDiagMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1349
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1350 #define KLUDGE_DIAG_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1351 #define TYPE Complex
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1352 #define KL_DMAT_TYPE ComplexDiagMatrix
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1353 #include "mx-kludge.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1354 #undef KLUDGE_DIAG_MATRICES
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1355 #undef TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1356 #undef KL_DMAT_TYPE
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1357
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1358 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1359
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1360 ComplexDiagMatrix (Complex *d, int nr, int nc)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1361 : DiagArray<Complex> (d, nr, nc) { }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1362 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1363
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1364 /*
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1365 * Result of a AEP Balance operation
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1366 */
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1367
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1368 class AEPBALANCE
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1369 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1370 friend class Matrix;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1371
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1372 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1373
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1374 AEPBALANCE (void) {}
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1375
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1376 AEPBALANCE (const Matrix& a, const char *balance_job);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1377
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1378 AEPBALANCE (const AEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1379
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1380 AEPBALANCE& operator = (const AEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1381 Matrix balanced_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1382 Matrix balancing_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1383 friend ostream& operator << (ostream& os, const AEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1384
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1385 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1386
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1387 int init (const Matrix& a, const char * balance_job);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1388
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1389 Matrix balanced_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1390 Matrix balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1391 };
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1392
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1393 inline AEPBALANCE::AEPBALANCE (const Matrix& a,const char * balance_job)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1394 {
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 210
diff changeset
1395 init (a, balance_job);
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1396 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1397
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1398 inline AEPBALANCE::AEPBALANCE (const AEPBALANCE& a)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1399 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1400 balanced_mat = a.balanced_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1401 balancing_mat = a.balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1402 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1403
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1404 inline AEPBALANCE&
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1405 AEPBALANCE::operator = (const AEPBALANCE& a)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1406 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1407 balanced_mat = a.balanced_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1408 balancing_mat = a.balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1409
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1410 return *this;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1411 }
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1412
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1413 inline Matrix AEPBALANCE::balanced_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1414 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1415 return balanced_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1416 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1417
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1418 inline Matrix AEPBALANCE::balancing_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1419 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1420 return balancing_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1421 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1422
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1423 /*
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1424 * Result of a Complex balancing operation
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1425 */
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1426
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1427 class ComplexAEPBALANCE
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1428 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1429 friend class ComplexMatrix;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1430
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1431 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1432
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1433 ComplexAEPBALANCE (void) {}
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1434 ComplexAEPBALANCE (const ComplexMatrix& a, const char *balance_job);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1435 ComplexAEPBALANCE (const ComplexAEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1436 ComplexAEPBALANCE& operator = (const ComplexAEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1437 ComplexMatrix balanced_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1438 ComplexMatrix balancing_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1439
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1440 friend ostream& operator << (ostream& os, const ComplexAEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1441
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1442 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1443
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1444 int init (const ComplexMatrix& a, const char * balance_job);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1445
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1446 ComplexMatrix balanced_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1447 ComplexMatrix balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1448 };
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1449
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
1450 inline ComplexAEPBALANCE::ComplexAEPBALANCE (const ComplexMatrix& a,
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 21
diff changeset
1451 const char * balance_job)
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1452 {
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1453 init (a, balance_job);
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1454 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1455
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1456 inline ComplexAEPBALANCE::ComplexAEPBALANCE (const ComplexAEPBALANCE& a)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1457 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1458 balanced_mat = a.balanced_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1459 balancing_mat = a.balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1460 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1461
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1462 inline ComplexAEPBALANCE&
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1463 ComplexAEPBALANCE::operator = (const ComplexAEPBALANCE& a)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1464 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1465 balanced_mat = a.balanced_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1466 balancing_mat = a.balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1467
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1468 return *this;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1469 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1470
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1471 inline ComplexMatrix ComplexAEPBALANCE::balanced_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1472 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1473 return balanced_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1474 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1475
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1476 inline ComplexMatrix ComplexAEPBALANCE::balancing_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1477 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1478 return balancing_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1479 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1480
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1481 /*
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1482 * Result of a Determinant calculation.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1483 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1484
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1485 class DET
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1486 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1487 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1488
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1489 DET (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1490
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1491 DET (const DET& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1492
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1493 DET& operator = (const DET& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1494
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1495 int value_will_overflow (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1496 int value_will_underflow (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1497 double coefficient (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1498 int exponent (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1499 double value (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1500
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1501 friend ostream& operator << (ostream& os, const DET& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1502
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1503 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1504
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1505 DET (const double *d);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1506
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1507 double det [2];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1508 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1509
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1510 inline DET::DET (const DET& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1511 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1512 det[0] = a.det[0];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1513 det[1] = a.det[1];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1514 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1515
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1516 inline DET& DET::operator = (const DET& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1517 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1518 det[0] = a.det[0];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1519 det[1] = a.det[1];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1520 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1521 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1522
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1523 inline DET::DET (const double *d)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1524 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1525 det[0] = d[0];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1526 det[1] = d[1];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1527 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1528
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1529 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1530 * Result of a Determinant calculation.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1531 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1532
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1533 class ComplexDET
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1534 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1535 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1536
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1537 ComplexDET (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1538
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1539 ComplexDET (const ComplexDET& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1540
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1541 ComplexDET& operator = (const ComplexDET& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1542
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1543 int value_will_overflow (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1544 int value_will_underflow (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1545 Complex coefficient (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1546 int exponent (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1547 Complex value (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1548
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1549 friend ostream& operator << (ostream& os, const ComplexDET& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1550
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1551 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1552
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1553 ComplexDET (const Complex *d);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1554
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1555 Complex det [2];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1556 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1557
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1558 inline ComplexDET::ComplexDET (const ComplexDET& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1559 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1560 det[0] = a.det[0];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1561 det[1] = a.det[1];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1562 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1563
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1564 inline ComplexDET& ComplexDET::operator = (const ComplexDET& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1565 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1566 det[0] = a.det[0];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1567 det[1] = a.det[1];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1568 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1569 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1570
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1571 inline ComplexDET::ComplexDET (const Complex *d)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1572 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1573 det[0] = d[0];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1574 det[1] = d[1];
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1575 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1576
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1577 /*
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1578 * Result of a GEP Balance operation
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1579 * Note: currenlty only do balancing on real data. Complex balancing
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1580 * done on magnitudes of complex data.
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1581 */
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1582
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1583 class GEPBALANCE
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1584 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1585 friend class Matrix;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1586
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1587 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1588
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1589 GEPBALANCE (void) {}
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1590
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1591 GEPBALANCE (const Matrix& a, const Matrix &, const char *balance_job);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1592
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1593 GEPBALANCE (const GEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1594
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1595 GEPBALANCE& operator = (const GEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1596 Matrix balanced_a_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1597 Matrix balanced_b_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1598 Matrix left_balancing_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1599 Matrix right_balancing_matrix (void) const;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1600 friend ostream& operator << (ostream& os, const GEPBALANCE& a);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1601
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1602 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1603
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1604 int init (const Matrix& a, const Matrix& b, const char * balance_job);
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1605
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1606 Matrix balanced_a_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1607 Matrix balanced_b_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1608 Matrix left_balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1609 Matrix right_balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1610 };
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1611
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1612 inline GEPBALANCE::GEPBALANCE (const Matrix& a, const Matrix& b,
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1613 const char * balance_job)
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1614 {
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 210
diff changeset
1615 init (a, b, balance_job);
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1616 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1617
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1618 inline GEPBALANCE::GEPBALANCE (const GEPBALANCE& a)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1619 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1620 balanced_a_mat = a.balanced_a_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1621 balanced_b_mat = a.balanced_b_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1622 left_balancing_mat = a.left_balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1623 right_balancing_mat = a.right_balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1624 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1625
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1626 inline GEPBALANCE&
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1627 GEPBALANCE::operator = (const GEPBALANCE& a)
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1628 {
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1629 balanced_a_mat = a.balanced_a_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1630 balanced_b_mat = a.balanced_b_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1631 left_balancing_mat = a.left_balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1632 right_balancing_mat = a.right_balancing_mat;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1633
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1634 return *this;
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1635 }
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1636
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1637 inline Matrix GEPBALANCE::balanced_a_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1638 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1639 return balanced_a_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1640 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1641
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1642 inline Matrix GEPBALANCE::balanced_b_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1643 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1644 return balanced_b_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1645 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1646
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1647 inline Matrix GEPBALANCE::left_balancing_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1648 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1649 return left_balancing_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1650 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1651
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1652 inline Matrix GEPBALANCE::right_balancing_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1653 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1654 return right_balancing_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1655 }
21
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1656
1b59f5c6c370 [project @ 1993-08-10 20:18:30 by jwe]
jwe
parents: 3
diff changeset
1657 /*
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1658 * Result of a Cholesky Factorization
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1659 */
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1660
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1661 class CHOL
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1662 {
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1663 friend class Matrix;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1664
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1665 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1666
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1667 CHOL (void) {}
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1668
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1669 CHOL (const Matrix& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1670 CHOL (const Matrix& a, int& info);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1671
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1672 CHOL (const CHOL& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1673
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1674 CHOL& operator = (const CHOL& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1675 Matrix chol_matrix (void) const;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1676 friend ostream& operator << (ostream& os, const CHOL& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1677
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1678 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1679
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1680 int init (const Matrix& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1681
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1682 Matrix chol_mat;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1683 };
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1684
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1685 inline CHOL::CHOL (const Matrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1686 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1687 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1688 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1689
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1690 inline CHOL::CHOL (const Matrix& a, int& info)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1691 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1692 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1693 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1694
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1695 inline CHOL::CHOL (const CHOL& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1696 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1697 chol_mat = a.chol_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1698 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1699
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1700 inline CHOL&
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1701 CHOL::operator = (const CHOL& a)
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1702 {
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1703 chol_mat = a.chol_mat;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1704
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1705 return *this;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1706 }
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1707
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1708 inline Matrix CHOL::chol_matrix (void) const { return chol_mat; }
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1709
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1710 /*
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1711 * Result of a Cholesky Factorization
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1712 */
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1713
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1714 class ComplexCHOL
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1715 {
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1716 friend class ComplexMatrix;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1717
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1718 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1719
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1720 ComplexCHOL (void) {}
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1721 ComplexCHOL (const ComplexMatrix& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1722 ComplexCHOL (const ComplexMatrix& a, int& info);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1723 ComplexCHOL (const ComplexCHOL& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1724 ComplexCHOL& operator = (const ComplexCHOL& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1725 ComplexMatrix chol_matrix (void) const;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1726
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1727 friend ostream& operator << (ostream& os, const ComplexCHOL& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1728
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1729 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1730
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1731 int init (const ComplexMatrix& a);
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1732
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1733 ComplexMatrix chol_mat;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1734 };
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1735
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1736 inline ComplexCHOL::ComplexCHOL (const ComplexMatrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1737 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1738 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1739 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1740
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1741 inline ComplexCHOL::ComplexCHOL (const ComplexMatrix& a, int& info)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1742 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1743 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1744 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1745
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1746 inline ComplexCHOL::ComplexCHOL (const ComplexCHOL& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1747 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1748 chol_mat = a.chol_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1749 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1750
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1751 inline ComplexCHOL&
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1752 ComplexCHOL::operator = (const ComplexCHOL& a)
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1753 {
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1754 chol_mat = a.chol_mat;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1755
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1756 return *this;
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1757 }
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1758
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1759 inline ComplexMatrix ComplexCHOL::chol_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1760 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1761 return chol_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1762 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1763
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1764
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1765 /*
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1766 * Result of a Hessenberg Decomposition
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1767 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1768
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1769 class HESS
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1770 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1771 friend class Matrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1772
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1773 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1774
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1775 HESS (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1776
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1777 HESS (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1778 HESS (const Matrix&a, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1779
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1780 HESS (const HESS& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1781
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1782 HESS& operator = (const HESS& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1783 Matrix hess_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1784 Matrix unitary_hess_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1785 friend ostream& operator << (ostream& os, const HESS& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1786
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1787 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1788
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1789 int init (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1790
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1791 Matrix hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1792 Matrix unitary_hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1793 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1794
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1795 inline HESS::HESS (const Matrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1796 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1797 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1798 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1799
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1800 inline HESS::HESS (const Matrix& a, int& info)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1801 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1802 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1803 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1804
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1805 inline HESS::HESS (const HESS& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1806 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1807 hess_mat = a.hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1808 unitary_hess_mat = a.unitary_hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1809 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1810
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1811 inline HESS&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1812 HESS::operator = (const HESS& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1813 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1814 hess_mat = a.hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1815 unitary_hess_mat = a.unitary_hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1816
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1817 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1818 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1819
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1820 inline Matrix HESS::hess_matrix (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1821 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1822 return hess_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1823 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1824
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1825 inline Matrix HESS::unitary_hess_matrix (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1826 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1827 return unitary_hess_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1828 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1829
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1830 /*
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
1831 * Result of a Hessenberg Decomposition
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1832 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1833
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1834 class ComplexHESS
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1835 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1836 friend class ComplexMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1837
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1838 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1839
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1840 ComplexHESS (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1841 ComplexHESS (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1842 ComplexHESS (const ComplexMatrix& a, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1843 ComplexHESS (const ComplexHESS& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1844 ComplexHESS& operator = (const ComplexHESS& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1845 ComplexMatrix hess_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1846 ComplexMatrix unitary_hess_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1847
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1848 friend ostream& operator << (ostream& os, const ComplexHESS& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1849
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1850 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1851
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1852 int init (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1853
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1854 ComplexMatrix hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1855 ComplexMatrix unitary_hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1856 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1857
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1858 inline ComplexHESS::ComplexHESS (const ComplexMatrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1859 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1860 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1861 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1862
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1863 inline ComplexHESS::ComplexHESS (const ComplexMatrix& a, int& info)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1864 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1865 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1866 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1867
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1868 inline ComplexHESS::ComplexHESS (const ComplexHESS& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1869 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1870 hess_mat = a.hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1871 unitary_hess_mat = a.unitary_hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1872 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1873
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1874 inline ComplexHESS&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1875 ComplexHESS::operator = (const ComplexHESS& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1876 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1877 hess_mat = a.hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1878 unitary_hess_mat = a.unitary_hess_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1879
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1880 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1881 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1882
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1883 inline ComplexMatrix ComplexHESS::hess_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1884 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1885 return hess_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1886 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1887
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1888 inline ComplexMatrix ComplexHESS::unitary_hess_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1889 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1890 return unitary_hess_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1891 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1892
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1893 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1894 * Result of a Schur Decomposition
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1895 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1896
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1897 class SCHUR
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1898 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1899 friend class Matrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1900
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1901 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1902
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1903 SCHUR (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1904
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1905 SCHUR (const Matrix& a, const char *ord);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1906 SCHUR (const Matrix& a, const char *ord, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1907
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1908 SCHUR (const SCHUR& a, const char *ord);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1909
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1910 SCHUR& operator = (const SCHUR& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1911
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1912 Matrix schur_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1913 Matrix unitary_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1914
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1915 friend ostream& operator << (ostream& os, const SCHUR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1916
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1917 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1918
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1919 int init (const Matrix& a, const char *ord);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1920
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1921 Matrix schur_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1922 Matrix unitary_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1923 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1924
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1925 inline SCHUR::SCHUR (const Matrix& a, const char *ord)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1926 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1927 init (a, ord);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1928 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1929
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1930 inline SCHUR::SCHUR (const Matrix& a, const char *ord, int& info)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1931 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1932 info = init (a, ord);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1933 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1934
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1935 inline SCHUR::SCHUR (const SCHUR& a, const char *ord)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1936 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1937 schur_mat = a.schur_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1938 unitary_mat = a.unitary_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1939 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1940
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1941 inline SCHUR&
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1942 SCHUR::operator = (const SCHUR& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1943 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1944 schur_mat = a.schur_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1945 unitary_mat = a.unitary_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1946
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1947 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1948 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1949
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1950 inline Matrix SCHUR::schur_matrix (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1951 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1952 return schur_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1953 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1954
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1955 inline Matrix SCHUR::unitary_matrix (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1956 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1957 return unitary_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1958 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1959
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1960 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1961 * Result of a Schur Decomposition
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1962 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1963
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1964 class ComplexSCHUR
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1965 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1966 friend class ComplexMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1967
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1968 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1969
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1970 ComplexSCHUR (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1971
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1972 ComplexSCHUR (const ComplexMatrix& a, const char *ord);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1973 ComplexSCHUR (const ComplexMatrix& a, const char *ord, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1974
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1975 ComplexSCHUR (const ComplexSCHUR& a, const char *ord);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1976
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1977 ComplexSCHUR& operator = (const ComplexSCHUR& a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1978
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1979 ComplexMatrix schur_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1980 ComplexMatrix unitary_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1981
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1982 friend ostream& operator << (ostream& os, const ComplexSCHUR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1983
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1984 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
1985
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1986 int init (const ComplexMatrix& a, const char *ord);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1987
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1988 ComplexMatrix schur_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1989 ComplexMatrix unitary_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1990 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1991
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1992 inline ComplexSCHUR::ComplexSCHUR (const ComplexMatrix& a, const char *ord)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1993 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1994 init (a,ord);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1995 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1996
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1997 inline ComplexSCHUR::ComplexSCHUR (const ComplexMatrix& a, const char *ord,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1998 int& info)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
1999 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2000 info = init (a,ord);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2001 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2002
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2003 inline ComplexSCHUR::ComplexSCHUR (const ComplexSCHUR& a, const char *ord)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2004 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2005 schur_mat = a.schur_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2006 unitary_mat = a.unitary_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2007 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2008
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2009 inline ComplexSCHUR&
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2010 ComplexSCHUR::operator = (const ComplexSCHUR& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2011 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2012 schur_mat = a.schur_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2013 unitary_mat = a.unitary_mat;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2014
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2015 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2016 }
182
2db13bf4f3e2 [project @ 1993-10-23 22:51:34 by jwe]
jwe
parents: 161
diff changeset
2017
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2018 inline ComplexMatrix ComplexSCHUR::schur_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2019 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2020 return schur_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2021 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2022
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2023 inline ComplexMatrix ComplexSCHUR::unitary_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2024 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2025 return unitary_mat;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2026 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2027
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2028
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2029 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2030 * Result of a Singular Value Decomposition.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2031 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2032
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2033 class SVD
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2034 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2035 friend class Matrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2036
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2037 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2038
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2039 SVD (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2040
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2041 SVD (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2042 SVD (const Matrix& a, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2043
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2044 SVD (const SVD& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2045
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2046 SVD& operator = (const SVD& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2047
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2048 DiagMatrix singular_values (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2049 Matrix left_singular_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2050 Matrix right_singular_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2051
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2052 friend ostream& operator << (ostream& os, const SVD& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2053
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2054 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2055
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2056 int init (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2057
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2058 DiagMatrix sigma;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2059 Matrix left_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2060 Matrix right_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2061 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2062
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2063 inline SVD::SVD (const Matrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2064 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2065 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2066 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2067
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2068 inline SVD::SVD (const Matrix& a, int& info)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2069 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2070 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2071 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2072
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2073 inline SVD::SVD (const SVD& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2074 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2075 sigma = a.sigma;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2076 left_sm = a.left_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2077 right_sm = a.right_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2078 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2079
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2080 inline SVD&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2081 SVD::operator = (const SVD& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2082 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2083 sigma = a.sigma;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2084 left_sm = a.left_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2085 right_sm = a.right_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2086
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2087 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2088 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2089
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2090 inline DiagMatrix SVD::singular_values (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2091 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2092 return sigma;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2093 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2094
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2095 inline Matrix SVD::left_singular_matrix (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2096 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2097 return left_sm;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2098 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2099
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2100 inline Matrix SVD::right_singular_matrix (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2101 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2102 return right_sm;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2103 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2104
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2105 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2106 * Result of a Singular Value Decomposition.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2107 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2108
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2109 class ComplexSVD
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2110 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2111 friend class ComplexMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2112
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2113 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2114
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2115 ComplexSVD (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2116
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2117 ComplexSVD (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2118 ComplexSVD (const ComplexMatrix& a, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2119
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2120 ComplexSVD (const ComplexSVD& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2121
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2122 ComplexSVD& operator = (const ComplexSVD& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2123
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2124 DiagMatrix singular_values (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2125 ComplexMatrix left_singular_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2126 ComplexMatrix right_singular_matrix (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2127
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2128 friend ostream& operator << (ostream& os, const ComplexSVD& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2129
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2130 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2131
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2132 int init (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2133
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2134 DiagMatrix sigma;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2135 ComplexMatrix left_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2136 ComplexMatrix right_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2137 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2138
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2139 inline ComplexSVD::ComplexSVD (const ComplexMatrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2140 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2141 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2142 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2143
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2144 inline ComplexSVD::ComplexSVD (const ComplexMatrix& a, int& info)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2145 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2146 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2147 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2148
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2149 inline ComplexSVD::ComplexSVD (const ComplexSVD& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2150 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2151 sigma = a.sigma;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2152 left_sm = a.left_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2153 right_sm = a.right_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2154 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2155
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2156 inline ComplexSVD&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2157 ComplexSVD::operator = (const ComplexSVD& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2158 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2159 sigma = a.sigma;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2160 left_sm = a.left_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2161 right_sm = a.right_sm;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2162
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2163 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2164 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2165
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2166 inline DiagMatrix ComplexSVD::singular_values (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2167 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2168 return sigma;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2169 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2170
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2171 inline ComplexMatrix ComplexSVD::left_singular_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2172 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2173 return left_sm;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2174 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2175
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2176 inline ComplexMatrix ComplexSVD::right_singular_matrix (void) const
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2177 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2178 return right_sm;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2179 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2180
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2181 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2182 * Result of an Eigenvalue computation.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2183 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2184
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2185 class EIG
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2186 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2187 friend class Matrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2188 friend class ComplexMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2189
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2190 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2191
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2192 EIG (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2193
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2194 EIG (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2195 EIG (const Matrix& a, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2196
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2197 EIG (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2198 EIG (const ComplexMatrix& a, int& info);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2199
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2200 EIG (const EIG& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2201
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2202 EIG& operator = (const EIG& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2203
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2204 ComplexColumnVector eigenvalues (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2205 ComplexMatrix eigenvectors (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2206
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2207 friend ostream& operator << (ostream& os, const EIG& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2208
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2209 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2210
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2211 int init (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2212 int init (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2213
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2214 ComplexColumnVector lambda;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2215 ComplexMatrix v;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2216 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2217
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2218 inline EIG::EIG (const Matrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2219 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2220 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2221 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2222
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2223 inline EIG::EIG (const Matrix& a, int& info)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2224 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2225 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2226 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2227
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2228 inline EIG::EIG (const ComplexMatrix& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2229 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2230 init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2231 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2232
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2233 inline EIG::EIG (const ComplexMatrix& a, int& info)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2234 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2235 info = init (a);
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2236 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2237
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2238 inline EIG::EIG (const EIG& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2239 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2240 lambda = a.lambda;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2241 v = a.v;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2242 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2243
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2244 inline EIG& EIG::operator = (const EIG& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2245 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2246 lambda = a.lambda;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2247 v = a.v;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2248 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2249 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2250
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2251 inline ComplexColumnVector EIG::eigenvalues (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2252 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2253 return lambda;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2254 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2255
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2256 inline ComplexMatrix EIG::eigenvectors (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2257 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2258 return v;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2259 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2260
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2261 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2262 * Result of an LU decomposition.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2263 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2264
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2265 class LU
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2266 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2267 friend class Matrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2268
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2269 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2270
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2271 LU (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2272
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2273 LU (const Matrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2274
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2275 LU (const LU& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2276
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2277 LU& operator = (const LU& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2278
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2279 Matrix L (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2280 Matrix U (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2281 Matrix P (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2282
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2283 friend ostream& operator << (ostream& os, const LU& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2284
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2285 private:
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2286
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2287 Matrix l;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2288 Matrix u;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2289 Matrix p;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2290 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2291
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2292 inline LU::LU (const LU& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2293 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2294 l = a.l;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2295 u = a.u;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2296 p = a.p;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2297 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2298
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2299 inline LU& LU::operator = (const LU& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2300 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2301 l = a.l;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2302 u = a.u;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2303 p = a.p;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2304 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2305 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2306
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2307 inline Matrix LU::L (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2308 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2309 return l;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2310 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2311
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2312 inline Matrix LU::U (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2313 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2314 return u;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2315 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2316
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2317 inline Matrix LU::P (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2318 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2319 return p;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2320 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2321
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2322 class ComplexLU
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2323 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2324 friend class ComplexMatrix;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2325
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2326 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2327
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2328 ComplexLU (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2329
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2330 ComplexLU (const ComplexMatrix& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2331
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2332 ComplexLU (const ComplexLU& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2333
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2334 ComplexLU& operator = (const ComplexLU& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2335
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2336 ComplexMatrix L (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2337 ComplexMatrix U (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2338 Matrix P (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2339
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2340 friend ostream& operator << (ostream& os, const ComplexLU& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2341
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2342 private:
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2343
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2344 ComplexMatrix l;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2345 ComplexMatrix u;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2346 Matrix p;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2347 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2348
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2349 inline ComplexLU::ComplexLU (const ComplexLU& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2350 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2351 l = a.l;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2352 u = a.u;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2353 p = a.p;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2354 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2355
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2356 inline ComplexLU& ComplexLU::operator = (const ComplexLU& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2357 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2358 l = a.l;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2359 u = a.u;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2360 p = a.p;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2361 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2362 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2363
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2364 inline ComplexMatrix ComplexLU::L (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2365 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2366 return l;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2367 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2368
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2369 inline ComplexMatrix ComplexLU::U (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2370 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2371 return u;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2372 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2373
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2374 inline Matrix ComplexLU::P (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2375 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2376 return p;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2377 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2378
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2379 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2380 * Result of a QR decomposition.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2381 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2382
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2383 class QR
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2384 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2385 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2386
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2387 QR (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2388
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2389 QR (const Matrix& A);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2390
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2391 QR (const QR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2392
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2393 QR& operator = (const QR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2394
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2395 Matrix Q (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2396 Matrix R (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2397
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2398 friend ostream& operator << (ostream& os, const QR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2399
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2400 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2401
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2402 Matrix q;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2403 Matrix r;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2404 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2405
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2406 inline QR::QR (const QR& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2407 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2408 q = a.q;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2409 r = a.r;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2410 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2411
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2412 inline QR& QR::operator = (const QR& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2413 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2414 q = a.q;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2415 r = a.r;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2416 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2417 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2418
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2419 inline Matrix QR::Q (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2420 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2421 return q;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2422 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2423
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2424 inline Matrix QR::R (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2425 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2426 return r;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2427 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2428
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2429 class ComplexQR
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2430 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2431 public:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2432
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2433 ComplexQR (void) {}
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2434
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2435 ComplexQR (const ComplexMatrix& A);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2436
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2437 ComplexQR (const ComplexQR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2438
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2439 ComplexQR& operator = (const ComplexQR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2440
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2441 ComplexMatrix Q (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2442 ComplexMatrix R (void) const;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2443
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2444 friend ostream& operator << (ostream& os, const ComplexQR& a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2445
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2446 private:
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 232
diff changeset
2447
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2448 ComplexMatrix q;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2449 ComplexMatrix r;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2450 };
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2451
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2452 inline ComplexQR::ComplexQR (const ComplexQR& a)
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2453 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2454 q = a.q;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2455 r = a.r;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2456 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2457
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2458 inline ComplexQR& ComplexQR::operator = (const ComplexQR& a)
291
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2459 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2460 q = a.q;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2461 r = a.r;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2462 return *this;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2463 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2464
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2465 inline ComplexMatrix ComplexQR::Q (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2466 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2467 return q;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2468 }
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2469
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2470 inline ComplexMatrix ComplexQR::R (void) const
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2471 {
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2472 return r;
d8f9567f9e41 [project @ 1994-01-15 21:43:28 by jwe]
jwe
parents: 238
diff changeset
2473 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2474
382
e02d6b664394 [project @ 1994-03-09 21:08:03 by jwe]
jwe
parents: 378
diff changeset
2475 } // extern "C++"
e02d6b664394 [project @ 1994-03-09 21:08:03 by jwe]
jwe
parents: 378
diff changeset
2476
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2477 #endif
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2478
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2479 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2480 ;;; Local Variables: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2481 ;;; mode: C++ ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2482 ;;; page-delimiter: "^/\\*" ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2483 ;;; End: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2484 */