diff 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
line wrap: on
line diff
--- a/liboctave/CColVector.h	Tue Apr 04 01:42:14 1995 +0000
+++ b/liboctave/CColVector.h	Tue Apr 04 02:05:01 1995 +0000
@@ -32,21 +32,17 @@
 
 class ComplexColumnVector : public Array<Complex>
 {
-friend class ColumnVector;
+friend class ComplexMatrix;
 friend class ComplexRowVector;
-friend class ComplexMatrix;
 
 public:
 
   ComplexColumnVector (void) : Array<Complex> () { }
   ComplexColumnVector (int n) : Array<Complex> (n) { }
-  ComplexColumnVector (int n, const Complex& val)
-    : Array<Complex> (n, val) { }
+  ComplexColumnVector (int n, const Complex& val) : Array<Complex> (n, val) { }
   ComplexColumnVector (const ColumnVector& a);
   ComplexColumnVector (const Array<Complex>& a) : Array<Complex> (a) { }
   ComplexColumnVector (const ComplexColumnVector& a) : Array<Complex> (a) { }
-//  ComplexColumnVector (double a) : Array<Complex> (1, a) { }
-//  ComplexColumnVector (const Complex& a) : Array<Complex> (1, a) { }
 
   ComplexColumnVector& operator = (const ComplexColumnVector& a)
     {
@@ -75,8 +71,6 @@
   ComplexRowVector hermitian (void) const;  // complex conjugate transpose.
   ComplexRowVector transpose (void) const;
 
-  friend ColumnVector real (const ComplexColumnVector& a);
-  friend ColumnVector imag (const ComplexColumnVector& a);
   friend ComplexColumnVector conj (const ComplexColumnVector& a);
 
 // resize is the destructive equivalent for this one
@@ -102,6 +96,15 @@
   friend ComplexColumnVector operator / (const ComplexColumnVector& a,
 					 double s);
 
+  friend ComplexColumnVector operator + (const ColumnVector& a,
+					 const Complex& s);  
+  friend ComplexColumnVector operator - (const ColumnVector& a,
+					 const Complex& s);
+  friend ComplexColumnVector operator * (const ColumnVector& a,
+					 const Complex& s);
+  friend ComplexColumnVector operator / (const ColumnVector& a,
+					 const Complex& s);
+
 // scalar by column vector -> column vector operations
 
   friend ComplexColumnVector operator + (double s,
@@ -113,10 +116,22 @@
   friend ComplexColumnVector operator / (double s,
 					 const ComplexColumnVector& a);
 
-// column vector by row vector -> matrix operations
+  friend ComplexColumnVector operator + (const Complex& s,
+					 const ColumnVector& a); 
+  friend ComplexColumnVector operator - (const Complex& s,
+					 const ColumnVector& a);
+  friend ComplexColumnVector operator * (const Complex& s,
+					 const ColumnVector& a);
+  friend ComplexColumnVector operator / (const Complex& s,
+					 const ColumnVector& a);
 
-  friend ComplexMatrix operator * (const ComplexColumnVector& a,
-				   const ComplexRowVector& b);
+// matrix by column vector -> column vector operations
+
+  friend ComplexColumnVector operator * (const ComplexMatrix& a,
+					 const ColumnVector& b);
+
+  friend ComplexColumnVector operator * (const ComplexMatrix& a,
+					 const ComplexColumnVector& b);
 
 // column vector by column vector -> column vector operations
 
@@ -125,15 +140,40 @@
   friend ComplexColumnVector operator - (const ComplexColumnVector& a,
 					 const ColumnVector& b);
 
+  friend ComplexColumnVector operator + (const ColumnVector& a,
+					 const ComplexColumnVector& b);
+  friend ComplexColumnVector operator - (const ColumnVector& a,
+					 const ComplexColumnVector& b); 
+
   friend ComplexColumnVector product (const ComplexColumnVector& a,
 				      const ColumnVector& b);
   friend ComplexColumnVector quotient (const ComplexColumnVector& a,
 				       const ColumnVector& b);
 
+  friend ComplexColumnVector product (const ColumnVector& a,
+				      const ComplexColumnVector& b); 
+  friend ComplexColumnVector quotient (const ColumnVector& a,
+				       const ComplexColumnVector& b); 
+
+// matrix by column vector -> column vector operations
+
+  friend ComplexColumnVector operator * (const Matrix& a,
+					 const ComplexColumnVector& b);
+
+// diagonal matrix by column vector -> column vector operations
+
+  friend ComplexColumnVector operator * (const DiagMatrix& a,
+					 const ComplexColumnVector& b);
+
+  friend ComplexColumnVector operator * (const ComplexDiagMatrix& a,
+					 const ColumnVector& b);
+
+  friend ComplexColumnVector operator * (const ComplexDiagMatrix& a,
+					 const ComplexColumnVector& b);
+
 // other operations
 
   friend ComplexColumnVector map (c_c_Mapper f, const ComplexColumnVector& a);
-  friend ColumnVector map (d_c_Mapper f, const ComplexColumnVector& a);
   void map (c_c_Mapper f);
 
   Complex min (void) const;
@@ -152,10 +192,8 @@
 #undef TYPE
 #undef KL_VEC_TYPE
 
-// private:
-// XXX FIXME XXX -- why does it not work to make this private, with
-// ColumnVector declared as a friend of ComplexColumnVector?  It seems
-// to work for the similar case with Matrix/ComplexMatrix.  Hmm...
+private:
+
   ComplexColumnVector (Complex *d, int l) : Array<Complex> (d, l) { }
 };