theplu::yat::utility::Vector Class Reference

This is the yat interface to GSL vector. More...

#include <yat/utility/Vector.h>

Inheritance diagram for theplu::yat::utility::Vector:

theplu::yat::utility::VectorMutable theplu::yat::utility::VectorBase

List of all members.

Public Types

typedef double & reference
typedef StrideIterator< double * > iterator
 mutable iterator
typedef double value_type
typedef const double & const_reference
typedef StrideIterator< const
double * > 
const_iterator
 VectorBase::const_iterator.

Public Member Functions

 Vector (void)
 The default constructor.
 Vector (size_t n, double init_value=0)
 Allocates memory space for n elements, and sets all elements to init_value.
 Vector (const Vector &other)
 The copy constructor.
 Vector (const VectorBase &other)
 Copy a VectorBase.
 Vector (std::istream &, char sep='\0') throw (utility::IO_error, std::exception)
 The istream constructor.
 ~Vector (void)
bool isview (void) const
void resize (size_t, double init_value=0)
 Resize Vector.
const Vectoroperator= (const Vector &)
 The assignment operator.
const Vectoroperator= (const VectorBase &)
 The assignment operator.
void all (double value)
iterator begin (void)
const_iterator begin (void) const
void div (const VectorBase &other)
 This function performs element-wise division, $ this_i = this_i / other_i \; \forall i $.
iterator end (void)
const_iterator end (void) const
gsl_vector * gsl_vector_p (void)
const gsl_vector * gsl_vector_p (void) const
void mul (const VectorBase &other)
 This function performs element-wise multiplication, $ this_i = this_i * other_i \; \forall i $.
void reverse (void)
 Reverse the order of elements in the VectorMutable.
void swap (size_t i, size_t j)
 Exchange elements i and j.
double & operator() (size_t i)
 Element access operator.
const double & operator() (size_t i) const
 Element access operator.
const VectorMutableoperator+= (const VectorBase &)
 Addition and assign operator. VectorBase addition, $ this_i = this_i + other_i \; \forall i $.
const VectorMutableoperator+= (double d)
 Add a constant to a VectorBase, $ this_i = this_i + d \; \forall i $.
const VectorMutableoperator-= (const VectorBase &)
 Subtract and assign operator. VectorBase subtraction, $ this_i = this_i - other_i \; \forall i $.
const VectorMutableoperator-= (double d)
 Subtract a constant to a VectorBase, $ this_i = this_i - d \; \forall i $.
const VectorMutableoperator*= (double d)
 Multiply with scalar and assign operator, $ this_i = this_i * d \; \forall i $.
bool equal (const VectorBase &, const double precision=0) const
 Check whether VectorBases are equal within a user defined precision, set by precision.
size_t size (void) const
bool operator== (const VectorBase &) const
 Comparison operator. Takes linear time.
bool operator!= (const VectorBase &) const
 Comparison operator. Takes linear time.
double operator* (const VectorBase &) const

Protected Attributes

gsl_vector * vec_
const gsl_vector * const_vec_
 pointer to underlying GSL vector

Related Functions

(Note that these are not member functions.)

void swap (Vector &, Vector &)
 Swap Vector elements by copying.
Vector operator* (const VectorBase &, const Matrix &)
 Matrix Vector multiplication.
bool isnull (const VectorBase &)
 Check if all elements of the VectorBase are zero.
double max (const VectorBase &)
 Get the maximum value of the VectorBase.
size_t max_index (const VectorBase &)
 Locate the maximum value in the VectorBase.
double min (const VectorBase &)
 Get the minimum value of the VectorBase.
size_t min_index (const VectorBase &)
 Locate the minimum value in the VectorBase.
bool nan (const VectorBase &templat, Vector &flag)
 Create a VectorBase flag indicating NaN's in another VectorBase templat.
void sort_index (std::vector< size_t > &sort_index, const VectorBase &invec)
void sort_smallest_index (std::vector< size_t > &sort_index, size_t k, const VectorBase &invec)
void sort_largest_index (std::vector< size_t > &sort_index, size_t k, const VectorBase &invec)
double sum (const VectorBase &)
 Calculate the sum of all VectorBase elements.
std::ostream & operator<< (std::ostream &s, const VectorBase &v)
 The output operator for the VectorBase class.


Detailed Description

This is the yat interface to GSL vector.

File streams:
Reading and writing vectors to file streams are of course supported. These are implemented without using GSL functionality, and thus binary read and write to streams are not supported.
Vector views: GSL vector views are supported in classes
VectorView and VectorConstView

Member Typedef Documentation

reference type is double&

Since:
New in yat 0.5

value_type is double

Since:
New in yat 0.5

typedef const double& theplu::yat::utility::VectorBase::const_reference [inherited]

const_reference type is const double&

Since:
New in yat 0.5


Constructor & Destructor Documentation

theplu::yat::utility::Vector::Vector ( size_t  n,
double  init_value = 0 
) [explicit]

Allocates memory space for n elements, and sets all elements to init_value.

Exceptions:
GSL_error if memory allocation fails.

theplu::yat::utility::Vector::Vector ( const Vector other  ) 

The copy constructor.

Exceptions:
A GSL_error is indirectly thrown if memory allocation fails.

theplu::yat::utility::Vector::Vector ( const VectorBase other  )  [explicit]

Copy a VectorBase.

Exceptions:
A GSL_error is indirectly thrown if memory allocation fails.

theplu::yat::utility::Vector::Vector ( std::istream &  ,
char  sep = '\0' 
) throw (utility::IO_error, std::exception) [explicit]

The istream constructor.

Either elements should be separated with white space characters (default), or elements should be separated by the delimiter sep. When delimiter sep is used empty elements are stored as NaN's (except that empty lines are ignored). The end of input to the Vector is at end of file marker.

Exceptions:
GSL_error if memory allocation fails, IO_error if unexpected input is found in the input stream.

theplu::yat::utility::Vector::~Vector ( void   ) 

The destructor.


Member Function Documentation

bool theplu::yat::utility::Vector::isview ( void   )  const [virtual]

Returns:
false

Implements theplu::yat::utility::VectorMutable.

void theplu::yat::utility::Vector::resize ( size_t  ,
double  init_value = 0 
)

Resize Vector.

All elements are set to init_value.

Note:
Underlying GSL vector is destroyed and a view into this Vector becomes invalid.
Exceptions:
GSL_error if memory allocation fails.

const Vector& theplu::yat::utility::Vector::operator= ( const Vector  ) 

The assignment operator.

Note:
Invalidates views of Vector.
Returns:
A const reference to the resulting Vector.
Exceptions:
GSL_error if assignment fails.

const Vector& theplu::yat::utility::Vector::operator= ( const VectorBase  ) 

The assignment operator.

Note:
Invalidates views of Vector.
Returns:
A const reference to the resulting Vector.
Exceptions:
GSL_error if assignment fails.

Reimplemented from theplu::yat::utility::VectorBase.

void theplu::yat::utility::VectorMutable::all ( double  value  )  [inherited]

Set all elements to value.

iterator theplu::yat::utility::VectorMutable::begin ( void   )  [inherited]

Returns:
mutable iterator to start of VectorMutable

const_iterator theplu::yat::utility::VectorBase::begin ( void   )  const [inherited]

Returns:
read-only iterator to start of VectorBase

void theplu::yat::utility::VectorMutable::div ( const VectorBase other  )  [inherited]

This function performs element-wise division, $ this_i = this_i / other_i \; \forall i $.

Exceptions:
GSL_error if dimensions mis-match.

iterator theplu::yat::utility::VectorMutable::end ( void   )  [inherited]

Returns:
mutable iterator to end of VectorMutable

const_iterator theplu::yat::utility::VectorBase::end ( void   )  const [inherited]

Returns:
read-only iterator to end of VectorBase

gsl_vector* theplu::yat::utility::VectorMutable::gsl_vector_p ( void   )  [inherited]

Returns:
A pointer to the internal GSL vector,

const gsl_vector* theplu::yat::utility::VectorBase::gsl_vector_p ( void   )  const [inherited]

Returns:
A const pointer to the internal GSL vector,

void theplu::yat::utility::VectorMutable::mul ( const VectorBase other  )  [inherited]

This function performs element-wise multiplication, $ this_i = this_i * other_i \; \forall i $.

Exceptions:
GSL_error if dimensions mis-match.

double& theplu::yat::utility::VectorMutable::operator() ( size_t  i  )  [inherited]

Element access operator.

Returns:
Reference to element i.
Exceptions:
If GSL range checks are enabled in the underlying GSL library a GSL_error exception is thrown if either index is out of range.

const double& theplu::yat::utility::VectorBase::operator() ( size_t  i  )  const [inherited]

Element access operator.

Returns:
Const reference to element i.
Exceptions:
If GSL range checks are enabled in the underlying GSL library a GSL_error exception is thrown if either index is out of range.

const VectorMutable& theplu::yat::utility::VectorMutable::operator+= ( const VectorBase  )  [inherited]

Addition and assign operator. VectorBase addition, $ this_i = this_i + other_i \; \forall i $.

Returns:
A const reference to the resulting VectorBase.
Exceptions:
GSL_error if dimensions mis-match.

const VectorMutable& theplu::yat::utility::VectorMutable::operator+= ( double  d  )  [inherited]

Add a constant to a VectorBase, $ this_i = this_i + d \; \forall i $.

Returns:
A const reference to the resulting VectorBase.

const VectorMutable& theplu::yat::utility::VectorMutable::operator-= ( const VectorBase  )  [inherited]

Subtract and assign operator. VectorBase subtraction, $ this_i = this_i - other_i \; \forall i $.

Returns:
A const reference to the resulting VectorBase.
Exceptions:
GSL_error if dimensions mis-match.

const VectorMutable& theplu::yat::utility::VectorMutable::operator-= ( double  d  )  [inherited]

Subtract a constant to a VectorBase, $ this_i = this_i - d \; \forall i $.

Returns:
A const reference to the resulting VectorBase.

const VectorMutable& theplu::yat::utility::VectorMutable::operator*= ( double  d  )  [inherited]

Multiply with scalar and assign operator, $ this_i = this_i * d \; \forall i $.

Returns:
A const reference to the resulting VectorBase.

bool theplu::yat::utility::VectorBase::equal ( const VectorBase ,
const double  precision = 0 
) const [inherited]

Check whether VectorBases are equal within a user defined precision, set by precision.

Returns:
True if each element deviates less or equal than d. If any VectorBase contain a NaN, false is always returned.
See also:
operator== and operator!=

size_t theplu::yat::utility::VectorBase::size ( void   )  const [inherited]

Returns:
number of elements in the VectorBase.

bool theplu::yat::utility::VectorBase::operator== ( const VectorBase  )  const [inherited]

Comparison operator. Takes linear time.

Checks are performed with exact matching, i.e., rounding off effects may destroy comparison. Use the equal function for comparing elements within a user defined precision.

Returns:
True if all elements are equal otherwise false.
See also:
equal(const VectorBase&, const double precision=0)

bool theplu::yat::utility::VectorBase::operator!= ( const VectorBase  )  const [inherited]

Comparison operator. Takes linear time.

Checks are performed with exact matching, i.e., rounding off effects may destroy comparison. Use the equal function for comparing elements within a user defined precision.

Returns:
False if all elements are equal otherwise true.
See also:
equal(const VectorBase&, const double precision=0)

double theplu::yat::utility::VectorBase::operator* ( const VectorBase  )  const [inherited]

Returns:
The dot product.


Friends And Related Function Documentation

void swap ( Vector ,
Vector  
) [related]

Swap Vector elements by copying.

The two Vectors must have the same length.

Exceptions:
GSL_error if Vector lengths differs.

bool isnull ( const VectorBase  )  [related, inherited]

Check if all elements of the VectorBase are zero.

Returns:
True if all elements in the VectorBase is zero, false othwerwise.

double max ( const VectorBase  )  [related, inherited]

Get the maximum value of the VectorBase.

Returns:
The maximum value of the VectorBase.

size_t max_index ( const VectorBase  )  [related, inherited]

Locate the maximum value in the VectorBase.

Returns:
The index to the maximum value of the VectorBase.
Note:
Lower index has precedence.

double min ( const VectorBase  )  [related, inherited]

Get the minimum value of the VectorBase.

Returns:
The minimum value of the VectorBase.

size_t min_index ( const VectorBase  )  [related, inherited]

Locate the minimum value in the VectorBase.

Returns:
The index to the minimum value of the VectorBase.
Note:
Lower index has precedence.

bool nan ( const VectorBase templat,
Vector flag 
) [related, inherited]

Create a VectorBase flag indicating NaN's in another VectorBase templat.

The flag VectorBase is changed to contain 1's and 0's only. A 1 means that the corresponding element in the templat VectorBase is valid and a zero means that the corresponding element is a NaN.

Note:
Space for vector flag is reallocated to fit the size of VectorBase templat if sizes mismatch.
Returns:
True if the templat VectorBase contains at least one NaN.

void sort_index ( std::vector< size_t > &  sort_index,
const VectorBase invec 
) [related, inherited]

Create a vector sort_index containing the indeces of elements in a another VectorBase invec. The elements of sort_index give the index of the VectorBase element which would have been stored in that position if the VectorBase had been sorted in place. The first element of sort_index gives the index of the least element in invec, and the last element of sort_index gives the index of the greatest element in invec . The VectorBase invec is not changed.

void sort_smallest_index ( std::vector< size_t > &  sort_index,
size_t  k,
const VectorBase invec 
) [related, inherited]

Similar to sort_index but creates a VectorBase with indices to the k smallest elements in invec.

void sort_largest_index ( std::vector< size_t > &  sort_index,
size_t  k,
const VectorBase invec 
) [related, inherited]

Similar to sort_index but creates a VectorBase with indices to the k largest elements in invec.

double sum ( const VectorBase  )  [related, inherited]

Calculate the sum of all VectorBase elements.

Returns:
The sum.

std::ostream & operator<< ( std::ostream &  s,
const VectorBase v 
) [related, inherited]

The output operator for the VectorBase class.

Elements in VectorBase v are sent to ostream s and separated with the fill character of stream s, s.fill(). If you, for example, want to print the VectorBase v with the elements separated by a ':', you do so by:

		 s << setfill(':') << v; 
		 


Member Data Documentation

gsl_vector* theplu::yat::utility::VectorMutable::vec_ [protected, inherited]

pointer to underlying GSL vector. Should always point to same gsl_vector as const_vec_ in base class does. This pointer should by used for mutable operations. Do not use this in const functions; use const_vec_ inherited from BaseVector.


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

Generated on Tue Jan 18 02:21:18 2011 for yat by  doxygen 1.5.5