yat  0.20.3pre
Public Types | Public Member Functions | Protected Attributes | Related Functions | List of all members
theplu::yat::utility::VectorMutable Class Referenceabstract

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

#include <yat/utility/VectorMutable.h>

Inheritance diagram for theplu::yat::utility::VectorMutable:
theplu::yat::utility::VectorBase theplu::yat::utility::BasicVector< VectorBase > theplu::yat::utility::Vector theplu::yat::utility::VectorView

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.
 
typedef VectorBase derived_type
 

Public Member Functions

 VectorMutable (void)
 default constructor
 
 VectorMutable (gsl_vector *)
 Constructor.
 
 VectorMutable (const gsl_vector *)
 Constructor.
 
virtual ~VectorMutable (void)
 
void all (double value)
 
iterator begin (void)
 
void div (const VectorBase &other)
 This function performs element-wise division, $ this_i = this_i / other_i \; \forall i $. More...
 
iterator end (void)
 
gsl_vector * gsl_vector_p (void)
 
virtual bool isview (void) const =0
 
void mul (const VectorBase &other)
 This function performs element-wise multiplication, $ this_i = this_i * other_i \; \forall i $. More...
 
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. More...
 
const VectorMutableoperator+= (const VectorBase &)
 Addition and assign operator. VectorBase addition, $ this_i = this_i + other_i \; \forall i $. More...
 
template<class T >
VectorMutableoperator+= (const VectorExpression< T > &rhs)
 Addition and assign operator. More...
 
const VectorMutableoperator+= (double d)
 Add a constant to a VectorBase, $ this_i = this_i + d \; \forall i $. More...
 
const VectorMutableoperator-= (const VectorBase &)
 Subtract and assign operator. VectorBase subtraction, $ this_i = this_i - other_i \; \forall i $. More...
 
template<class T >
VectorMutableoperator-= (const VectorExpression< T > &rhs)
 Subtraction and assign operator. More...
 
const VectorMutableoperator-= (double d)
 Subtract a constant to a VectorBase, $ this_i = this_i - d \; \forall i $. More...
 
const VectorMutableoperator*= (double d)
 Multiply with scalar and assign operator, $ this_i = this_i * d \; \forall i $. More...
 
const VectorMutableoperator= (const VectorMutable &)
 assignment More...
 
const VectorMutableoperator= (const VectorBase &)
 assignment More...
 
template<class T >
VectorMutableoperator= (const VectorExpression< T > &rhs)
 assignment from vector expression More...
 
const_iterator begin (void) const
 
const_iterator end (void) const
 
const gsl_vector * gsl_vector_p (void) const
 
const_iterator begin (void) const
 
const_iterator end (void) const
 
bool equal (const VectorBase &, const double precision=0) const
 Check whether VectorBases are equal within a user defined precision, set by precision. More...
 
const gsl_vector * gsl_vector_p (void) const
 
size_t size (void) const
 
const double & operator() (size_t i) const
 Element access operator. More...
 
bool operator== (const VectorBase &) const
 Comparison operator. Takes linear time. More...
 
bool operator!= (const VectorBase &) const
 Comparison operator. Takes linear time. More...
 
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.)

template<class Derived1 , class Derived2 >
double operator* (const BasicVector< Derived1 > &lhs, const BasicVector< Derived2 > &rhs)
 
template<typename T >
expression::ScaledVector< T > operator* (double k, const BasicVector< T > &vec)
 scale a vector expression More...
 
template<typename T >
expression::ScaledVector< T > operator* (const BasicVector< T > &vec, double k)
 scale a vector expression More...
 
template<class MATRIX , class VECTOR >
expression::MatrixVector< MATRIX, VECTOR > operator* (const BasicMatrix< MATRIX > &lhs, const BasicVector< VECTOR > &rhs)
 
template<class MATRIX , class VECTOR >
expression::MatrixVector< MatrixExpression< expression::TransposedMatrix< MATRIX > >, VECTOR > operator* (const BasicVector< VECTOR > &lhs, const BasicMatrix< MATRIX > &rhs)
 
template<class Derived1 , class Derived2 >
expression::VectorBinary< Derived1, Derived2, expression::Plusoperator+ (const BasicVector< Derived1 > &lhs, const BasicVector< Derived2 > &rhs)
 
template<class Derived1 , class Derived2 >
expression::VectorBinary< Derived1, Derived2, expression::Minusoperator- (const BasicVector< Derived1 > &lhs, const BasicVector< Derived2 > &rhs)
 
template<typename T >
expression::ScaledVector< T > operator- (const BasicVector< T > &vec)
 negation operator More...
 
bool isnull (const VectorBase &)
 Check if all elements of the VectorBase are zero. More...
 
double max (const VectorBase &)
 Get the maximum value of the VectorBase. More...
 
size_t max_index (const VectorBase &)
 Locate the maximum value in the VectorBase. More...
 
double min (const VectorBase &)
 Get the minimum value of the VectorBase. More...
 
size_t min_index (const VectorBase &)
 Locate the minimum value in the VectorBase. More...
 
bool nan (const VectorBase &templat, Vector &flag)
 Create a VectorBase flag indicating NaN's in another VectorBase templat. More...
 
double norm2_squared (const VectorBase &v)
 
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. More...
 
std::ostream & operator<< (std::ostream &s, const VectorBase &v)
 The output operator for the VectorBase class. More...
 

Detailed Description

This is the mutable interface to GSL vector.

This class contains the mutable interface to vector classes.

The non-mutable interface is inherited from VectorBase. When dealing with const vectors, it is preferable to use the VectorBase signature because this allows usage of VectorConstView too.

Member Typedef Documentation

◆ const_reference

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

const_reference type is const double&

Since
New in yat 0.5

◆ derived_type

Class that inherits from BasicVector

◆ reference

reference type is double&

Since
New in yat 0.5

◆ value_type

value_type is double

Since
New in yat 0.5

Constructor & Destructor Documentation

◆ ~VectorMutable()

virtual theplu::yat::utility::VectorMutable::~VectorMutable ( void  )
virtual

The destructor.

Member Function Documentation

◆ all()

void theplu::yat::utility::VectorMutable::all ( double  value)

Set all elements to value.

◆ begin() [1/3]

const_iterator theplu::yat::utility::VectorBase::begin ( void  ) const
inherited
Returns
read-only iterator to start of VectorBase

◆ begin() [2/3]

iterator theplu::yat::utility::VectorMutable::begin ( void  )
Returns
mutable iterator to start of VectorMutable

◆ begin() [3/3]

const_iterator theplu::yat::utility::VectorBase::begin
Returns
read-only iterator to start of VectorBase

◆ div()

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

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

Exceptions
GSL_errorif dimensions mis-match.

◆ end() [1/3]

const_iterator theplu::yat::utility::VectorBase::end ( void  ) const
inherited
Returns
read-only iterator to end of VectorBase

◆ end() [2/3]

iterator theplu::yat::utility::VectorMutable::end ( void  )
Returns
mutable iterator to end of VectorMutable

◆ end() [3/3]

const_iterator theplu::yat::utility::VectorBase::end
Returns
read-only iterator to end of VectorBase

◆ equal()

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!=

◆ gsl_vector_p() [1/3]

const gsl_vector* theplu::yat::utility::VectorBase::gsl_vector_p ( void  ) const
inherited
Returns
A const pointer to the internal GSL vector,

◆ gsl_vector_p() [2/3]

gsl_vector* theplu::yat::utility::VectorMutable::gsl_vector_p ( void  )
Returns
A pointer to the internal GSL vector,

◆ gsl_vector_p() [3/3]

const gsl_vector* theplu::yat::utility::VectorBase::gsl_vector_p
Returns
A const pointer to the internal GSL vector,

◆ isview()

virtual bool theplu::yat::utility::VectorMutable::isview ( void  ) const
pure virtual

Check if the vector object is a view (sub-vector) to another vector.

Returns
True if the object is a view, false othwerwise.

Implements theplu::yat::utility::VectorBase.

Implemented in theplu::yat::utility::VectorView, and theplu::yat::utility::Vector.

◆ mul()

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

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

Exceptions
GSL_errorif dimensions mis-match.

◆ operator!=()

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)

◆ operator()() [1/2]

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

Element access operator.

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

◆ operator()() [2/2]

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

Element access operator.

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

◆ operator*()

double theplu::yat::utility::VectorBase::operator* ( const VectorBase ) const
inherited
Returns
The dot product.

◆ operator*=()

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

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

Returns
A const reference to the resulting VectorBase.

◆ operator+=() [1/3]

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

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

Returns
A const reference to the resulting VectorMutable.
Exceptions
GSL_errorif dimensions mis-match.

◆ operator+=() [2/3]

template<class T >
VectorMutable& theplu::yat::utility::VectorMutable::operator+= ( const VectorExpression< T > &  rhs)
inline

Addition and assign operator.

Returns
A reference to the resulting VectorMutable.

◆ operator+=() [3/3]

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

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

Returns
A const reference to the resulting VectorBase.

◆ operator-=() [1/3]

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

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

Returns
A const reference to the resulting VectorBase.
Exceptions
GSL_errorif dimensions mis-match.

◆ operator-=() [2/3]

template<class T >
VectorMutable& theplu::yat::utility::VectorMutable::operator-= ( const VectorExpression< T > &  rhs)
inline

Subtraction and assign operator.

Returns
A reference to the resulting VectorMutable.

◆ operator-=() [3/3]

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

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

Returns
A const reference to the resulting VectorBase.

◆ operator=() [1/3]

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

assignment

Since
New in yat 0.14

◆ operator=() [2/3]

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

assignment

Since
New in yat 0.14

◆ operator=() [3/3]

template<class T >
VectorMutable& theplu::yat::utility::VectorMutable::operator= ( const VectorExpression< T > &  rhs)
inline

assignment from vector expression

Since
New in yat 0.15

◆ operator==()

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)

◆ size()

size_t theplu::yat::utility::VectorBase::size ( void  ) const
inherited
Returns
number of elements in the VectorBase.

Friends And Related Function Documentation

◆ isnull()

bool isnull ( const VectorBase )
related

Check if all elements of the VectorBase are zero.

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

◆ max()

double max ( const VectorBase )
related

Get the maximum value of the VectorBase.

Returns
The maximum value of the VectorBase.

◆ max_index()

size_t max_index ( const VectorBase )
related

Locate the maximum value in the VectorBase.

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

◆ min()

double min ( const VectorBase )
related

Get the minimum value of the VectorBase.

Returns
The minimum value of the VectorBase.

◆ min_index()

size_t min_index ( const VectorBase )
related

Locate the minimum value in the VectorBase.

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

◆ nan()

bool nan ( const VectorBase templat,
Vector flag 
)
related

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.

◆ norm2_squared()

double norm2_squared ( const VectorBase v)
related
Returns
L2 norm squared, or the dot product of v with itself
Since
New in yat 0.18

◆ operator*() [1/5]

template<class MATRIX , class VECTOR >
expression::MatrixVector< MATRIX, VECTOR > operator* ( const BasicMatrix< MATRIX > &  lhs,
const BasicVector< VECTOR > &  rhs 
)
related

Calculate product of Matrix expression and Vector expression

Since
new in yat 0.15

◆ operator*() [2/5]

template<class MATRIX , class VECTOR >
expression::MatrixVector< MatrixExpression< expression::TransposedMatrix< MATRIX > >, VECTOR > operator* ( const BasicVector< VECTOR > &  lhs,
const BasicMatrix< MATRIX > &  rhs 
)
related

Calculate product of Vector expression and Matrix expression

Since
new in yat 0.15

◆ operator*() [3/5]

template<class Derived1 , class Derived2 >
double operator* ( const BasicVector< Derived1 > &  lhs,
const BasicVector< Derived2 > &  rhs 
)
related
Since
New in yat 0.15

◆ operator*() [4/5]

template<typename T >
expression::ScaledVector< T > operator* ( double  k,
const BasicVector< T > &  vec 
)
related

scale a vector expression

Since
new in yat 0.15

◆ operator*() [5/5]

template<typename T >
expression::ScaledVector< T > operator* ( const BasicVector< T > &  vec,
double  k 
)
related

scale a vector expression

Since
new in yat 0.15

◆ operator+()

template<class Derived1 , class Derived2 >
expression::VectorBinary< Derived1, Derived2, expression::Plus > operator+ ( const BasicVector< Derived1 > &  lhs,
const BasicVector< Derived2 > &  rhs 
)
related

Element-wise addition of vectors

Since
new in yat 0.15

◆ operator-() [1/2]

template<class Derived1 , class Derived2 >
expression::VectorBinary< Derived1, Derived2, expression::Minus > operator- ( const BasicVector< Derived1 > &  lhs,
const BasicVector< Derived2 > &  rhs 
)
related

Element-wise subtraction of vectors

Since
new in yat 0.15

◆ operator-() [2/2]

template<typename T >
expression::ScaledVector< T > operator- ( const BasicVector< T > &  vec)
related

negation operator

Since
new in yat 0.15

◆ operator<<()

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

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;

◆ sort_index()

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

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.

◆ sort_largest_index()

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

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

◆ sort_smallest_index()

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

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

◆ sum()

double sum ( const VectorBase )
related

Calculate the sum of all VectorBase elements.

Returns
The sum.

Member Data Documentation

◆ vec_

gsl_vector* theplu::yat::utility::VectorMutable::vec_
protected

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 Sat Feb 18 2023 03:31:45 for yat by  doxygen 1.8.14