Couenne  0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | List of all members
Couenne::CouenneSparseBndVec< T > Class Template Reference

#include <CouenneSparseBndVec.hpp>

Public Member Functions

 CouenneSparseBndVec (unsigned int size)
 Constructor. More...
 
 CouenneSparseBndVec (CouenneSparseBndVec &src)
 Copy constructor. More...
 
 ~CouenneSparseBndVec ()
 Destructor. More...
 
void reset ()
 Reset (eeeeasy!) More...
 
T & operator[] (register unsigned int index)
 Access – the only chance for garbage to be returned (and for valgrind to complain) is when object[ind] is READ without making sure it has been written. More...
 
T * data ()
 Return data in DENSE format – use with care. More...
 
unsigned int * indices ()
 Return indices in DENSE format – for use with data() More...
 
unsigned int nElements ()
 Return current size. More...
 
void resize (unsigned int newsize)
 Resize. More...
 

Private Attributes

unsigned int size_
 Implements a fast sparse+dense vector data structure, with a size of n and a number k of nonzero elements. More...
 
unsigned int n_
 current number of elements More...
 
unsigned int * dInd_
 indices vector, dense (garbage exists past n_) More...
 
unsigned int * sInd_
 indices vector, sparse (lots of garbage in between entries) More...
 
T * data_
 data vector, sparse (lots of garbage in between entries) More...
 

Detailed Description

template<class T>
class Couenne::CouenneSparseBndVec< T >

Definition at line 16 of file CouenneSparseBndVec.hpp.

Constructor & Destructor Documentation

template<class T >
Couenne::CouenneSparseBndVec< T >::CouenneSparseBndVec ( unsigned int  size)
inline
template<class T >
Couenne::CouenneSparseBndVec< T >::CouenneSparseBndVec ( CouenneSparseBndVec< T > &  src)
inline
template<class T >
Couenne::CouenneSparseBndVec< T >::~CouenneSparseBndVec ( )
inline

Member Function Documentation

template<class T >
void Couenne::CouenneSparseBndVec< T >::reset ( )
inline

Reset (eeeeasy!)

Definition at line 83 of file CouenneSparseBndVec.hpp.

References Couenne::CouenneSparseBndVec< T >::n_.

template<class T >
T& Couenne::CouenneSparseBndVec< T >::operator[] ( register unsigned int  index)
inline

Access – the only chance for garbage to be returned (and for valgrind to complain) is when object[ind] is READ without making sure it has been written.

This should not happen to the end user as read operations are only performed on the dense structure, after this object has been populated.

Definition at line 91 of file CouenneSparseBndVec.hpp.

References Couenne::CouenneSparseBndVec< T >::data_, Couenne::CouenneSparseBndVec< T >::dInd_, Couenne::CouenneSparseBndVec< T >::n_, and Couenne::CouenneSparseBndVec< T >::sInd_.

template<class T >
T* Couenne::CouenneSparseBndVec< T >::data ( )
inline

Return data in DENSE format – use with care.

Definition at line 103 of file CouenneSparseBndVec.hpp.

References Couenne::CouenneSparseBndVec< T >::data_.

template<class T >
unsigned int* Couenne::CouenneSparseBndVec< T >::indices ( )
inline

Return indices in DENSE format – for use with data()

Definition at line 107 of file CouenneSparseBndVec.hpp.

References Couenne::CouenneSparseBndVec< T >::dInd_.

template<class T >
unsigned int Couenne::CouenneSparseBndVec< T >::nElements ( )
inline

Return current size.

Definition at line 111 of file CouenneSparseBndVec.hpp.

References Couenne::CouenneSparseBndVec< T >::n_.

template<class T >
void Couenne::CouenneSparseBndVec< T >::resize ( unsigned int  newsize)
inline

Resize.

Definition at line 115 of file CouenneSparseBndVec.hpp.

References Couenne::CouenneSparseBndVec< T >::size_.

Member Data Documentation

template<class T >
unsigned int Couenne::CouenneSparseBndVec< T >::size_
private

Implements a fast sparse+dense vector data structure, with a size of n and a number k of nonzero elements.

Usually, k<<n as happens in FBBT where k is the number of tightened variables and n is the number of variables. The main purpose is that of having a vector with

1) no O(n) initialization;

2) easy scan of the list of nonzero elements, i.e., O(k) rather than O(n).

Implemented based on the (simple but beautiful) idea found at

http://research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html

which in turn refers to a paper by Briggs and Torczon:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.7319

NOTE: This will make valgrind complain on every assignment to non-previously-assigned entries. Get over it. maximum size

Definition at line 42 of file CouenneSparseBndVec.hpp.

Referenced by Couenne::CouenneSparseBndVec< T >::CouenneSparseBndVec(), and Couenne::CouenneSparseBndVec< T >::resize().

template<class T >
unsigned int Couenne::CouenneSparseBndVec< T >::n_
private
template<class T >
unsigned int* Couenne::CouenneSparseBndVec< T >::dInd_
private
template<class T >
unsigned int* Couenne::CouenneSparseBndVec< T >::sInd_
private
template<class T >
T* Couenne::CouenneSparseBndVec< T >::data_
private

The documentation for this class was generated from the following file: