Scippy

SoPlex

Sequential object-oriented simPlex

DSVectorBase< R > Class Template Reference

Dynamic sparse vectors.Class DSVectorBase implements dynamic sparse vectors, i.e. SVectorBases with an automatic memory management. This allows the user to freely add() as many nonzeros to a DSVectorBase as desired, without any precautions. For saving memory method setMax() allows to reduce memory consumption to the amount really required. More...

#include <dsvectorbase.h>

Public Member Functions

template<>
 ~DSVectorBase ()
 Destructor (specialization for Real). More...
 
template<>
void setMax (int newmax)
 Reset nonzero memory to >= newmax. More...
 
Construction, assignment, and destruction
 DSVectorBase (int n=8)
 Default constructor. More...
 
template<class S >
 DSVectorBase (const SVectorBase< S > &old)
 Copy constructor. More...
 
 DSVectorBase (const DSVectorBase< R > &old)
 Copy constructor. More...
 
template<class S >
 DSVectorBase (const DSVectorBase< S > &old)
 Copy constructor. More...
 
template<class S >
 DSVectorBase (const VectorBase< S > &vec)
 Copy constructor. More...
 
template<class S >
 DSVectorBase (const SSVectorBase< S > &old)
 Copy constructor. More...
 
template<class S >
DSVectorBase< R > & operator= (const SVectorBase< S > &vec)
 Assignment operator. More...
 
DSVectorBase< R > & operator= (const DSVectorBase< R > &vec)
 Assignment operator. More...
 
template<class S >
DSVectorBase< R > & operator= (const DSVectorBase< S > &vec)
 Assignment operator. More...
 
template<class S >
DSVectorBase< R > & operator= (const VectorBase< S > &vec)
 Assignment operator. More...
 
template<class S >
DSVectorBase< R > & operator= (const SSVectorBase< S > &vec)
 Assignment operator. More...
 
virtual ~DSVectorBase ()
 Destructor. More...
 
Modification
template<class S >
void add (const SVectorBase< S > &vec)
 Append nonzeros of sv. More...
 
void add (int i, const R &v)
 Append one nonzero (i,v). More...
 
void add (int i)
 Append one uninitialized nonzero. More...
 
void add (int n, const int i[], const R v[])
 Append n nonzeros. More...
 
void setMax (int newmax=1)
 Reset nonzero memory to >= newmax. More...
 
Utilities
bool isConsistent () const
 Consistency check. More...
 
- Public Member Functions inherited from SVectorBase< R >
template<>
SVectorBase< Real > & operator= (const VectorBase< S > &vec)
 Assignment operator (specialization for Real). More...
 
template<>
Real operator* (const SVectorBase< S > &w) const
 specialization for inner product for sparse vectors More...
 
int size () const
 Number of used indices. More...
 
int max () const
 Maximal number of indices. More...
 
int dim () const
 Dimension of the vector defined as maximal index + 1. More...
 
int pos (int i) const
 Position of index i. More...
 
operator[] (int i) const
 Value to index i. More...
 
Nonzero< R > & element (int n)
 Reference to the n 'th nonzero element. More...
 
const Nonzero< R > & element (int n) const
 The n 'th nonzero element. More...
 
int & index (int n)
 Reference to index of n 'th nonzero. More...
 
int index (int n) const
 Index of n 'th nonzero. More...
 
R & value (int n)
 Reference to value of n 'th nonzero. More...
 
const R & value (int n) const
 Value of n 'th nonzero. More...
 
void add (int i, const R &v)
 Append one nonzero (i,v). More...
 
void add (int i)
 Append one uninitialized nonzero. More...
 
void add (const SVectorBase &sv)
 Append nonzeros of sv. More...
 
void add (int n, const int i[], const R v[])
 Append n nonzeros. More...
 
template<class S >
void add (int n, const int i[], const S v[])
 Append n nonzeros. More...
 
void add (int n, const Nonzero< R > e[])
 Append n nonzeros. More...
 
void remove (int n, int m)
 Remove nonzeros n thru m. More...
 
void remove (int n)
 Remove n 'th nonzero. More...
 
void clear ()
 Remove all indices. More...
 
void sort ()
 Sort nonzeros to increasing indices. More...
 
maxAbs () const
 Maximum absolute value, i.e., infinity norm. More...
 
minAbs () const
 Minimum absolute value. More...
 
Real length () const
 Floating point approximation of euclidian norm (without any approximation guarantee). More...
 
length2 () const
 Squared norm. More...
 
SVectorBase< R > & operator*= (const R &x)
 Scaling. More...
 
operator* (const VectorBase< R > &w) const
 Inner product. More...
 
template<class S >
operator* (const SVectorBase< S > &w) const
 inner product for sparse vectors More...
 
 SVectorBase (int n=0, Nonzero< R > *p_mem=0)
 Default constructor. More...
 
template<class S >
SVectorBase< R > & operator= (const VectorBase< S > &vec)
 Assignment operator. More...
 
SVectorBase< R > & operator= (const SVectorBase< R > &sv)
 Assignment operator. More...
 
template<class S >
SVectorBase< R > & operator= (const SVectorBase< S > &sv)
 Assignment operator. More...
 
SVectorBase< Real > & scaleAssign (int scaleExp, const SVectorBase< Real > &sv)
 scale and assign More...
 
SVectorBase< Real > & scaleAssign (const int *scaleExp, const SVectorBase< Real > &sv, bool negateExp=false)
 scale and assign More...
 
template<class S >
SVectorBase< R > & assignArray (const S *rowValues, const int *rowIndices, int rowSize)
 Assignment operator. More...
 
template<class S >
SVectorBase< R > & operator= (const SSVectorBase< S > &sv)
 Assignment operator. More...
 
Nonzero< R > * mem () const
 get pointer to internal memory. More...
 
void set_size (int s)
 Set size of the vector. More...
 
void set_max (int m)
 Set the maximum number of nonzeros in the vector. More...
 
void setMem (int n, Nonzero< R > *elmem)
 Set the memory area where the nonzeros will be stored. More...
 
bool isConsistent () const
 Consistency check. More...
 

Private Member Functions

template<>
void allocMem (int n)
 Allocate memory for n nonzeros (specialization for Real). More...
 
Private helpers
void allocMem (int n)
 Allocate memory for n nonzeros. More...
 
void makeMem (int n)
 Ensure there is room for n new nonzeros. More...
 

Private Attributes

Data
Nonzero< R > * theelem
 Memory. More...
 

Friends

class SLinSolver
 

Additional Inherited Members

- Public Types inherited from SVectorBase< R >
typedef Nonzero< R > Element
 

Detailed Description

template<class R>
class soplex::DSVectorBase< R >

Dynamic sparse vectors.

Class DSVectorBase implements dynamic sparse vectors, i.e. SVectorBases with an automatic memory management. This allows the user to freely add() as many nonzeros to a DSVectorBase as desired, without any precautions. For saving memory method setMax() allows to reduce memory consumption to the amount really required.

Todo:
Both DSVectorBase and SVectorBase have a member variable that points to allocated memory. This does not seem to make too much sense. Why doesn't DSVectorBase use the element of its base class?

Definition at line 42 of file dsvectorbase.h.

Constructor & Destructor Documentation

◆ DSVectorBase() [1/6]

DSVectorBase ( int  n = 8)
explicit

Default constructor.

Creates a DSVectorBase ready to hold n nonzeros. However, the memory is automatically enlarged, if more nonzeros are added to the DSVectorBase.

Definition at line 96 of file dsvectorbase.h.

◆ DSVectorBase() [2/6]

DSVectorBase ( const SVectorBase< S > &  old)
explicit

Copy constructor.

Definition at line 106 of file dsvectorbase.h.

◆ DSVectorBase() [3/6]

DSVectorBase ( const DSVectorBase< R > &  old)

Copy constructor.

The redundancy with the copy constructor below is necessary since otherwise the compiler doesn't realize that it could use the more general one with S = R and generates a shallow copy constructor.

Definition at line 119 of file dsvectorbase.h.

◆ DSVectorBase() [4/6]

DSVectorBase ( const DSVectorBase< S > &  old)

Copy constructor.

Definition at line 131 of file dsvectorbase.h.

◆ DSVectorBase() [5/6]

DSVectorBase ( const VectorBase< S > &  vec)
explicit

Copy constructor.

Definition at line 1065 of file basevectors.h.

◆ DSVectorBase() [6/6]

DSVectorBase ( const SSVectorBase< S > &  old)
explicit

Copy constructor.

Definition at line 1080 of file basevectors.h.

◆ ~DSVectorBase() [1/2]

virtual ~DSVectorBase ( )
virtual

Destructor.

Definition at line 199 of file dsvectorbase.h.

◆ ~DSVectorBase() [2/2]

Destructor (specialization for Real).

Definition at line 324 of file dsvectorbase.h.

Member Function Documentation

◆ add() [1/4]

◆ add() [2/4]

void add ( int  i,
const R &  v 
)

Append one nonzero (i,v).

Definition at line 226 of file dsvectorbase.h.

◆ add() [3/4]

void add ( int  i)

Append one uninitialized nonzero.

Definition at line 233 of file dsvectorbase.h.

◆ add() [4/4]

void add ( int  n,
const int  i[],
const R  v[] 
)

Append n nonzeros.

Definition at line 240 of file dsvectorbase.h.

◆ allocMem() [1/2]

void allocMem ( int  n)
private

Allocate memory for n nonzeros.

Definition at line 62 of file dsvectorbase.h.

Referenced by DSVectorBase< Real >::DSVectorBase().

◆ allocMem() [2/2]

void allocMem ( int  n)
private

Allocate memory for n nonzeros (specialization for Real).

Definition at line 313 of file dsvectorbase.h.

◆ isConsistent()

bool isConsistent ( ) const

◆ makeMem()

void makeMem ( int  n)
private

Ensure there is room for n new nonzeros.

Definition at line 73 of file dsvectorbase.h.

Referenced by DSVectorBase< Real >::add(), and DSVectorBase< Real >::operator=().

◆ operator=() [1/5]

DSVectorBase<R>& operator= ( const SVectorBase< S > &  vec)

Assignment operator.

Definition at line 151 of file dsvectorbase.h.

Referenced by DSVectorBase< Real >::operator=().

◆ operator=() [2/5]

DSVectorBase<R>& operator= ( const DSVectorBase< R > &  vec)

Assignment operator.

Definition at line 164 of file dsvectorbase.h.

◆ operator=() [3/5]

DSVectorBase<R>& operator= ( const DSVectorBase< S > &  vec)

Assignment operator.

Definition at line 178 of file dsvectorbase.h.

◆ operator=() [4/5]

DSVectorBase< R > & operator= ( const VectorBase< S > &  vec)

Assignment operator.

Definition at line 1095 of file basevectors.h.

◆ operator=() [5/5]

DSVectorBase< R > & operator= ( const SSVectorBase< S > &  vec)

Assignment operator.

Definition at line 1114 of file basevectors.h.

◆ setMax() [1/2]

void setMax ( int  newmax = 1)

◆ setMax() [2/2]

void setMax ( int  newmax)

Reset nonzero memory to >= newmax.

This methods resets the memory consumption to newmax. However, if newmax < size(), it is reset to size() only (specialization for Real).

Definition at line 338 of file dsvectorbase.h.

Friends And Related Function Documentation

◆ SLinSolver

friend class SLinSolver
friend

Definition at line 44 of file dsvectorbase.h.

Member Data Documentation

◆ theelem

Nonzero<R>* theelem
private