fCColVector.h

Go to the documentation of this file.
00001 /*
00002 
00003 Copyright (C) 1994-2012 John W. Eaton
00004 Copyright (C) 2010 VZLU Prague
00005 
00006 This file is part of Octave.
00007 
00008 Octave is free software; you can redistribute it and/or modify it
00009 under the terms of the GNU General Public License as published by the
00010 Free Software Foundation; either version 3 of the License, or (at your
00011 option) any later version.
00012 
00013 Octave is distributed in the hope that it will be useful, but WITHOUT
00014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00015 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00016 for more details.
00017 
00018 You should have received a copy of the GNU General Public License
00019 along with Octave; see the file COPYING.  If not, see
00020 <http://www.gnu.org/licenses/>.
00021 
00022 */
00023 
00024 #if !defined (octave_FloatComplexColumnVector_h)
00025 #define octave_FloatComplexColumnVector_h 1
00026 
00027 #include "MArray.h"
00028 
00029 #include "mx-defs.h"
00030 
00031 class
00032 OCTAVE_API
00033 FloatComplexColumnVector : public MArray<FloatComplex>
00034 {
00035 friend class FloatComplexMatrix;
00036 friend class FloatComplexRowVector;
00037 
00038 public:
00039 
00040  FloatComplexColumnVector (void)
00041    : MArray<FloatComplex> (dim_vector (0, 1)) { }
00042 
00043   explicit FloatComplexColumnVector (octave_idx_type n)
00044     : MArray<FloatComplex> (dim_vector (n, 1)) { }
00045 
00046   explicit FloatComplexColumnVector (const dim_vector& dv)
00047     : MArray<FloatComplex> (dv.as_column ()) { }
00048 
00049   FloatComplexColumnVector (octave_idx_type n, const FloatComplex& val)
00050     : MArray<FloatComplex> (dim_vector (n, 1), val) { }
00051 
00052   FloatComplexColumnVector (const FloatComplexColumnVector& a)
00053     : MArray<FloatComplex> (a) { }
00054 
00055   FloatComplexColumnVector (const MArray<FloatComplex>& a)
00056     : MArray<FloatComplex> (a.as_column ()) { }
00057 
00058   FloatComplexColumnVector (const Array<FloatComplex>& a)
00059     : MArray<FloatComplex> (a.as_column ()) { }
00060 
00061   explicit FloatComplexColumnVector (const FloatColumnVector& a);
00062 
00063   FloatComplexColumnVector& operator = (const FloatComplexColumnVector& a)
00064     {
00065       MArray<FloatComplex>::operator = (a);
00066       return *this;
00067     }
00068 
00069   bool operator == (const FloatComplexColumnVector& a) const;
00070   bool operator != (const FloatComplexColumnVector& a) const;
00071 
00072   // destructive insert/delete/reorder operations
00073 
00074   FloatComplexColumnVector& insert (const FloatColumnVector& a, octave_idx_type r);
00075   FloatComplexColumnVector& insert (const FloatComplexColumnVector& a, octave_idx_type r);
00076 
00077   FloatComplexColumnVector& fill (float val);
00078   FloatComplexColumnVector& fill (const FloatComplex& val);
00079   FloatComplexColumnVector& fill (float val, octave_idx_type r1, octave_idx_type r2);
00080   FloatComplexColumnVector& fill (const FloatComplex& val, octave_idx_type r1, octave_idx_type r2);
00081 
00082   FloatComplexColumnVector stack (const FloatColumnVector& a) const;
00083   FloatComplexColumnVector stack (const FloatComplexColumnVector& a) const;
00084 
00085   FloatComplexRowVector hermitian (void) const;
00086   FloatComplexRowVector transpose (void) const;
00087 
00088   friend OCTAVE_API FloatComplexColumnVector conj (const FloatComplexColumnVector& a);
00089 
00090   // resize is the destructive equivalent for this one
00091 
00092   FloatComplexColumnVector extract (octave_idx_type r1, octave_idx_type r2) const;
00093 
00094   FloatComplexColumnVector extract_n (octave_idx_type r1, octave_idx_type n) const;
00095 
00096   // column vector by column vector -> column vector operations
00097 
00098   FloatComplexColumnVector& operator += (const FloatColumnVector& a);
00099   FloatComplexColumnVector& operator -= (const FloatColumnVector& a);
00100 
00101   // matrix by column vector -> column vector operations
00102 
00103   friend OCTAVE_API FloatComplexColumnVector operator * (const FloatComplexMatrix& a,
00104                                          const FloatColumnVector& b);
00105 
00106   friend OCTAVE_API FloatComplexColumnVector operator * (const FloatComplexMatrix& a,
00107                                          const FloatComplexColumnVector& b);
00108 
00109   // matrix by column vector -> column vector operations
00110 
00111   friend OCTAVE_API FloatComplexColumnVector operator * (const FloatMatrix& a,
00112                                          const FloatComplexColumnVector& b);
00113 
00114   // diagonal matrix by column vector -> column vector operations
00115 
00116   friend OCTAVE_API FloatComplexColumnVector operator * (const FloatDiagMatrix& a,
00117                                          const FloatComplexColumnVector& b);
00118 
00119   friend OCTAVE_API FloatComplexColumnVector operator * (const FloatComplexDiagMatrix& a,
00120                                          const ColumnVector& b);
00121 
00122   friend OCTAVE_API FloatComplexColumnVector operator * (const FloatComplexDiagMatrix& a,
00123                                          const FloatComplexColumnVector& b);
00124 
00125   // other operations
00126 
00127   FloatComplex min (void) const;
00128   FloatComplex max (void) const;
00129 
00130   FloatColumnVector abs (void) const;
00131 
00132   // i/o
00133 
00134   friend OCTAVE_API std::ostream& operator << (std::ostream& os, const FloatComplexColumnVector& a);
00135   friend OCTAVE_API std::istream& operator >> (std::istream& is, FloatComplexColumnVector& a);
00136 
00137   void resize (octave_idx_type n,
00138                const FloatComplex& rfv = Array<FloatComplex>::resize_fill_value ())
00139   {
00140     Array<FloatComplex>::resize (dim_vector (n, 1), rfv);
00141   }
00142 
00143   void clear (octave_idx_type n)
00144     { Array<FloatComplex>::clear (n, 1); }
00145 
00146 };
00147 
00148 MARRAY_FORWARD_DEFS (MArray, FloatComplexColumnVector, FloatComplex)
00149 
00150 #endif
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines