Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

SimpleVector.h

00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004 
00005 #ifndef SIMPLEVECTOR
00006 #define SIMPLEVECTOR
00007 
00008 #include "OoqpVector.h"
00009 #include "SimpleVectorHandle.h"
00010 
00016 class SimpleVector : public OoqpVector {
00017 protected:
00018   int preserveVec;
00019   double * v;
00020 public:
00021   SimpleVector( int nx );
00022   SimpleVector( double * v, int nx );
00024 
00027   double & operator[]( int i ) { 
00028 #ifdef RANGECHECKS
00029     assert( i > 0 && i < n );
00030 #endif
00031     return v[i];
00032  }
00033   const double & operator[]( int i ) const
00034   {
00035 #ifdef RANGECHECKS
00036     assert( i > 0 && i < n );
00037 #endif
00038     return v[i];
00039   } 
00041   virtual ~SimpleVector();
00042 
00043   virtual void copyIntoArray( double v[] ) const;
00044   virtual void copyFromArray( double v[] );
00045   virtual void copyFromArray( char   v[] );
00046   virtual void setToZero();
00047   virtual void setToConstant( double c );
00048   virtual void randomize( double alpha, double beta, double *ix );
00049   virtual void copyFrom( OoqpVector& v );
00050   virtual double infnorm();
00051   virtual double onenorm();
00052   virtual void min( double& m, int& index );
00053 
00054   virtual void componentMult( OoqpVector& v );
00055   virtual void scalarMult( double num);
00056   virtual void printSolutionToStdErr( OoqpVector& v );
00057   virtual void componentDiv ( OoqpVector& v );
00058   virtual void writeToStream(ostream& out) const;
00059   virtual void writefToStream( ostream& out,
00060                                const char format[] ) const;
00061 
00062   virtual void scale( double alpha );
00063 
00064   virtual void axpy  ( double alpha, OoqpVector& x );
00065   virtual void axzpy ( double alpha, OoqpVector& x, OoqpVector& z );
00066   virtual void axdzpy( double alpha, OoqpVector& x, OoqpVector& z );
00067 
00068   virtual void addConstant( double c );
00069 
00075   virtual void gondzioProjection( double rmin, double rmax );
00076   virtual double dotProductWith( OoqpVector& v );
00077   virtual double shiftedDotProductWith( double alpha, OoqpVector& mystep,
00078                                         OoqpVector& yvec,
00079                                         double beta,  OoqpVector& ystep );
00080   virtual void negate();
00081   virtual void invert();
00082   virtual int allPositive();
00083   virtual int numberOfNonzeros();
00084 
00085   virtual int matchesNonZeroPattern( OoqpVector& select );
00086   virtual void selectNonZeros( OoqpVector& select );
00087   virtual void addSomeConstants( double c, OoqpVector& select );
00088   virtual void writefSomeToStream( ostream& out,
00089                                    const char format[],
00090                                    OoqpVector& select ) const;
00091   virtual void axdzpy( double alpha, OoqpVector& x,
00092                        OoqpVector& z, OoqpVector& select );
00093 
00094   virtual int isKindOf( int kind );
00095 
00096   virtual int somePositive( OoqpVector& select );
00097   virtual void divideSome( OoqpVector& div, OoqpVector& select );
00098 
00099   virtual double stepbound(OoqpVector & v, double maxStep  );
00100   virtual double findBlocking(OoqpVector & wstep_vec, 
00101                               OoqpVector & u_vec, 
00102                               OoqpVector & ustep_vec, 
00103                               double maxStep,
00104                               double *w_elt, 
00105                               double *wstep_elt,
00106                               double *u_elt, 
00107                               double *ustep_elt,
00108                               int& first_or_second);
00110   double * elements() { return v; };
00111 };
00112 
00113 #endif

Generated on Mon May 24 17:40:46 2004 for OOQP by doxygen1.2.18