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

OoqpVector.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 OOQPVECTOR_H
00006 #define OOQPVECTOR_H
00007 
00008 #include <string.h>
00009 #include <iostream.h>
00010 #include "IotrRefCount.h"
00011 
00012 
00020 class OoqpVector : public IotrRefCount {
00021 public:
00022   int n;
00024   int length() { return n; }
00025 
00026   OoqpVector( int n_ = 0 );
00027   virtual ~OoqpVector();
00028 
00030   virtual void setToZero() = 0;
00032   virtual void setToConstant( double c ) = 0;
00039   virtual void randomize( double alpha, double beta, double *ix ) = 0;
00041   virtual void copyFrom( OoqpVector& v ) = 0;
00043   virtual double infnorm() = 0;
00045   virtual double onenorm() = 0;
00046 
00048   virtual void componentMult( OoqpVector& v ) = 0;
00050   virtual void componentDiv ( OoqpVector& v ) = 0;
00055   virtual void scalarMult( double num) = 0;
00056 
00057   virtual void writeToStream(ostream& out) const = 0;
00066   virtual void writefToStream( ostream& out,
00067                                const char format[] ) const = 0;
00068 
00070   virtual void scale( double alpha ) = 0;
00071 
00073   virtual void axpy  ( double alpha, OoqpVector& x ) = 0;
00075   virtual void axzpy ( double alpha, OoqpVector& x, OoqpVector& z ) = 0;
00077   virtual void axdzpy( double alpha, OoqpVector& x, OoqpVector& z ) = 0;
00078 
00080   virtual void addConstant( double c ) = 0;
00081 
00086   virtual void gondzioProjection( double rmin, double rmax ) = 0;
00087 
00090   virtual void min( double& m, int& index ) = 0;
00092   virtual double dotProductWith( OoqpVector& v ) = 0;
00093 
00096   virtual double shiftedDotProductWith( double alpha, OoqpVector& mystep,
00097                                         OoqpVector& yvec,
00098                                         double beta,  OoqpVector& ystep ) = 0;
00100   virtual void negate() = 0;
00101 
00103   virtual void invert() = 0;
00104 
00106   virtual int allPositive() = 0;
00107   
00109   virtual int numberOfNonzeros() = 0;
00110 
00112   virtual int matchesNonZeroPattern( OoqpVector& select ) = 0;
00113 
00117   virtual void selectNonZeros( OoqpVector& select ) = 0;
00124   virtual void addSomeConstants( double c, OoqpVector& select ) = 0;
00125 
00136   virtual void writefSomeToStream( ostream& out,
00137                                    const char format[],
00138                                    OoqpVector& select ) const = 0;
00146   virtual void axdzpy( double alpha, OoqpVector& x,
00147                        OoqpVector& z, OoqpVector& select ) = 0;
00148 
00153   virtual int somePositive( OoqpVector& select ) = 0;
00161   virtual void divideSome( OoqpVector& div, OoqpVector& select ) = 0;
00162 
00168   virtual int isKindOf( int kind ) = 0;
00169 
00174   virtual double stepbound(OoqpVector & v, double maxStep ) = 0;
00175 
00185   virtual double findBlocking(OoqpVector & wstep_vec, 
00186                               OoqpVector & u_vec, 
00187                               OoqpVector & ustep_vec, 
00188                               double maxStep,
00189                               double *w_elt, 
00190                               double *wstep_elt,
00191                               double *u_elt, 
00192                               double *ustep_elt,
00193                               int& first_or_second) = 0;
00194 
00196   virtual void copyIntoArray( double v[] ) const = 0;
00198   virtual void copyFromArray( double v[] ) = 0;
00200   virtual void copyFromArray( char v[] ) = 0;
00201 };
00202 
00203 
00204 enum { kSimpleVector = 0, kPetscVector };
00205 
00206 #endif
00207 

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