comparison liboctave/CColVector.h @ 1205:8302fab9fe24

[project @ 1995-04-04 02:05:01 by jwe]
author jwe
date Tue, 04 Apr 1995 02:05:01 +0000
parents 18933dbd5e43
children 0bf4d2b7def4
comparison
equal deleted inserted replaced
1204:68d147abe7ca 1205:8302fab9fe24
30 30
31 extern "C++" { 31 extern "C++" {
32 32
33 class ComplexColumnVector : public Array<Complex> 33 class ComplexColumnVector : public Array<Complex>
34 { 34 {
35 friend class ColumnVector; 35 friend class ComplexMatrix;
36 friend class ComplexRowVector; 36 friend class ComplexRowVector;
37 friend class ComplexMatrix;
38 37
39 public: 38 public:
40 39
41 ComplexColumnVector (void) : Array<Complex> () { } 40 ComplexColumnVector (void) : Array<Complex> () { }
42 ComplexColumnVector (int n) : Array<Complex> (n) { } 41 ComplexColumnVector (int n) : Array<Complex> (n) { }
43 ComplexColumnVector (int n, const Complex& val) 42 ComplexColumnVector (int n, const Complex& val) : Array<Complex> (n, val) { }
44 : Array<Complex> (n, val) { }
45 ComplexColumnVector (const ColumnVector& a); 43 ComplexColumnVector (const ColumnVector& a);
46 ComplexColumnVector (const Array<Complex>& a) : Array<Complex> (a) { } 44 ComplexColumnVector (const Array<Complex>& a) : Array<Complex> (a) { }
47 ComplexColumnVector (const ComplexColumnVector& a) : Array<Complex> (a) { } 45 ComplexColumnVector (const ComplexColumnVector& a) : Array<Complex> (a) { }
48 // ComplexColumnVector (double a) : Array<Complex> (1, a) { }
49 // ComplexColumnVector (const Complex& a) : Array<Complex> (1, a) { }
50 46
51 ComplexColumnVector& operator = (const ComplexColumnVector& a) 47 ComplexColumnVector& operator = (const ComplexColumnVector& a)
52 { 48 {
53 Array<Complex>::operator = (a); 49 Array<Complex>::operator = (a);
54 return *this; 50 return *this;
73 ComplexColumnVector stack (const ComplexColumnVector& a) const; 69 ComplexColumnVector stack (const ComplexColumnVector& a) const;
74 70
75 ComplexRowVector hermitian (void) const; // complex conjugate transpose. 71 ComplexRowVector hermitian (void) const; // complex conjugate transpose.
76 ComplexRowVector transpose (void) const; 72 ComplexRowVector transpose (void) const;
77 73
78 friend ColumnVector real (const ComplexColumnVector& a);
79 friend ColumnVector imag (const ComplexColumnVector& a);
80 friend ComplexColumnVector conj (const ComplexColumnVector& a); 74 friend ComplexColumnVector conj (const ComplexColumnVector& a);
81 75
82 // resize is the destructive equivalent for this one 76 // resize is the destructive equivalent for this one
83 77
84 ComplexColumnVector extract (int r1, int r2) const; 78 ComplexColumnVector extract (int r1, int r2) const;
99 double s); 93 double s);
100 friend ComplexColumnVector operator * (const ComplexColumnVector& a, 94 friend ComplexColumnVector operator * (const ComplexColumnVector& a,
101 double s); 95 double s);
102 friend ComplexColumnVector operator / (const ComplexColumnVector& a, 96 friend ComplexColumnVector operator / (const ComplexColumnVector& a,
103 double s); 97 double s);
98
99 friend ComplexColumnVector operator + (const ColumnVector& a,
100 const Complex& s);
101 friend ComplexColumnVector operator - (const ColumnVector& a,
102 const Complex& s);
103 friend ComplexColumnVector operator * (const ColumnVector& a,
104 const Complex& s);
105 friend ComplexColumnVector operator / (const ColumnVector& a,
106 const Complex& s);
104 107
105 // scalar by column vector -> column vector operations 108 // scalar by column vector -> column vector operations
106 109
107 friend ComplexColumnVector operator + (double s, 110 friend ComplexColumnVector operator + (double s,
108 const ComplexColumnVector& a); 111 const ComplexColumnVector& a);
111 friend ComplexColumnVector operator * (double s, 114 friend ComplexColumnVector operator * (double s,
112 const ComplexColumnVector& a); 115 const ComplexColumnVector& a);
113 friend ComplexColumnVector operator / (double s, 116 friend ComplexColumnVector operator / (double s,
114 const ComplexColumnVector& a); 117 const ComplexColumnVector& a);
115 118
116 // column vector by row vector -> matrix operations 119 friend ComplexColumnVector operator + (const Complex& s,
117 120 const ColumnVector& a);
118 friend ComplexMatrix operator * (const ComplexColumnVector& a, 121 friend ComplexColumnVector operator - (const Complex& s,
119 const ComplexRowVector& b); 122 const ColumnVector& a);
123 friend ComplexColumnVector operator * (const Complex& s,
124 const ColumnVector& a);
125 friend ComplexColumnVector operator / (const Complex& s,
126 const ColumnVector& a);
127
128 // matrix by column vector -> column vector operations
129
130 friend ComplexColumnVector operator * (const ComplexMatrix& a,
131 const ColumnVector& b);
132
133 friend ComplexColumnVector operator * (const ComplexMatrix& a,
134 const ComplexColumnVector& b);
120 135
121 // column vector by column vector -> column vector operations 136 // column vector by column vector -> column vector operations
122 137
123 friend ComplexColumnVector operator + (const ComplexColumnVector& a, 138 friend ComplexColumnVector operator + (const ComplexColumnVector& a,
124 const ColumnVector& b); 139 const ColumnVector& b);
125 friend ComplexColumnVector operator - (const ComplexColumnVector& a, 140 friend ComplexColumnVector operator - (const ComplexColumnVector& a,
126 const ColumnVector& b); 141 const ColumnVector& b);
142
143 friend ComplexColumnVector operator + (const ColumnVector& a,
144 const ComplexColumnVector& b);
145 friend ComplexColumnVector operator - (const ColumnVector& a,
146 const ComplexColumnVector& b);
127 147
128 friend ComplexColumnVector product (const ComplexColumnVector& a, 148 friend ComplexColumnVector product (const ComplexColumnVector& a,
129 const ColumnVector& b); 149 const ColumnVector& b);
130 friend ComplexColumnVector quotient (const ComplexColumnVector& a, 150 friend ComplexColumnVector quotient (const ComplexColumnVector& a,
131 const ColumnVector& b); 151 const ColumnVector& b);
132 152
153 friend ComplexColumnVector product (const ColumnVector& a,
154 const ComplexColumnVector& b);
155 friend ComplexColumnVector quotient (const ColumnVector& a,
156 const ComplexColumnVector& b);
157
158 // matrix by column vector -> column vector operations
159
160 friend ComplexColumnVector operator * (const Matrix& a,
161 const ComplexColumnVector& b);
162
163 // diagonal matrix by column vector -> column vector operations
164
165 friend ComplexColumnVector operator * (const DiagMatrix& a,
166 const ComplexColumnVector& b);
167
168 friend ComplexColumnVector operator * (const ComplexDiagMatrix& a,
169 const ColumnVector& b);
170
171 friend ComplexColumnVector operator * (const ComplexDiagMatrix& a,
172 const ComplexColumnVector& b);
173
133 // other operations 174 // other operations
134 175
135 friend ComplexColumnVector map (c_c_Mapper f, const ComplexColumnVector& a); 176 friend ComplexColumnVector map (c_c_Mapper f, const ComplexColumnVector& a);
136 friend ColumnVector map (d_c_Mapper f, const ComplexColumnVector& a);
137 void map (c_c_Mapper f); 177 void map (c_c_Mapper f);
138 178
139 Complex min (void) const; 179 Complex min (void) const;
140 Complex max (void) const; 180 Complex max (void) const;
141 181
150 #include "mx-kludge.h" 190 #include "mx-kludge.h"
151 #undef KLUDGE_VECTORS 191 #undef KLUDGE_VECTORS
152 #undef TYPE 192 #undef TYPE
153 #undef KL_VEC_TYPE 193 #undef KL_VEC_TYPE
154 194
155 // private: 195 private:
156 // XXX FIXME XXX -- why does it not work to make this private, with 196
157 // ColumnVector declared as a friend of ComplexColumnVector? It seems
158 // to work for the similar case with Matrix/ComplexMatrix. Hmm...
159 ComplexColumnVector (Complex *d, int l) : Array<Complex> (d, l) { } 197 ComplexColumnVector (Complex *d, int l) : Array<Complex> (d, l) { }
160 }; 198 };
161 199
162 } // extern "C++" 200 } // extern "C++"
163 201