SoPlex Documentation
Loading...
Searching...
No Matches
VectorBase< R > Class Template Reference

Dense vector. More...

#include <vectorbase.h>

Inheritance diagram for VectorBase< R >:
SSVectorBase< Rational > SSVectorBase< R > UpdateVector< R >

Public Member Functions

bool isConsistent () const
 Consistency check.
 
Rational operator* (const VectorBase< Rational > &vec) const
 Inner product.
 
Construction and assignment
 VectorBase ()
 Constructor.
 
 VectorBase (int dimen, R *p_val)
 
 VectorBase (int p_dimen)
 
template<typename S >
 VectorBase (const VectorBase< S > &vec)
 
 VectorBase (const VectorBase< R > &&vec) noexcept
 
 VectorBase (const VectorBase< R > &vec)
 
template<class S >
VectorBase< R > & operator= (const VectorBase< S > &vec)
 Assignment operator.
 
VectorBase< R > & operator= (const VectorBase< R > &vec)
 Assignment operator.
 
VectorBase< R > & operator= (const VectorBase< R > &&vec)
 Move assignment operator.
 
VectorBase< R > & scaleAssign (int scaleExp, const VectorBase< R > &vec)
 scale and assign
 
VectorBase< R > & scaleAssign (const int *scaleExp, const VectorBase< R > &vec, bool negateExp=false)
 scale and assign
 
template<class S >
VectorBase< R > & operator= (const SVectorBase< S > &vec)
 Assignment operator.
 
template<class S >
VectorBase< R > & operator= (const SSVectorBase< S > &vec)
 Assignment operator.
 
template<class S >
VectorBase< R > & assign (const SVectorBase< S > &vec)
 Assign values of vec.
 
template<class S >
VectorBase< R > & assign (const SSVectorBase< S > &vec)
 Assign values of vec.
 
Arithmetic operations
void clear ()
 Set vector to contain all-zeros (keeping the same length)
 
template<class S >
VectorBase< R > & operator+= (const VectorBase< S > &vec)
 Addition.
 
template<class S >
VectorBase< R > & operator+= (const SVectorBase< S > &vec)
 Addition.
 
template<class S >
VectorBase< R > & operator+= (const SSVectorBase< S > &vec)
 Addition.
 
template<class S >
VectorBase< R > & operator-= (const VectorBase< S > &vec)
 Subtraction.
 
template<class S >
VectorBase< R > & operator-= (const SVectorBase< S > &vec)
 Subtraction.
 
template<class S >
VectorBase< R > & operator-= (const SSVectorBase< S > &vec)
 Subtraction.
 
template<class S >
VectorBase< R > & operator*= (const S &x)
 Scaling.
 
template<class S >
VectorBase< R > & operator/= (const S &x)
 Division.
 
R operator* (const VectorBase< R > &vec) const
 Inner product.
 
R operator* (const SVectorBase< R > &vec) const
 Inner product.
 
R operator* (const SSVectorBase< R > &vec) const
 Inner product.
 
R maxAbs () const
 Maximum absolute value, i.e., infinity norm.
 
R minAbs () const
 Minimum absolute value.
 
R length () const
 Floating point approximation of euclidian norm (without any approximation guarantee).
 
R length2 () const
 Squared norm.
 
template<class S , class T >
VectorBase< R > & multAdd (const S &x, const VectorBase< T > &vec)
 Addition of scaled vector.
 
template<class S , class T >
VectorBase< R > & multAdd (const S &x, const SVectorBase< T > &vec)
 Addition of scaled vector.
 
template<class S , class T >
VectorBase< R > & multSub (const S &x, const SVectorBase< T > &vec)
 Subtraction of scaled vector.
 
template<class S , class T >
VectorBase< R > & multAdd (const S &x, const SSVectorBase< T > &vec)
 Addition of scaled vector.
 

Protected Attributes

Data
std::vector< Rval
 Values of vector.
 

Friends

template<typename S >
class VectorBase
 

Access

bool operator== (const VectorBase< R > &vec1, const VectorBase< R > &vec2)
 Equality operator.
 
int dim () const
 Dimension of vector.
 
Roperator[] (int n)
 Return n 'th value by reference.
 
const Roperator[] (int n) const
 Return n 'th value.
 
const std::vector< R > & vec ()
 Return underlying std::vector.
 

Utilities

VectorBase< Roperator- (const VectorBase< R > &vec)
 
Rget_ptr ()
 Conversion to C-style pointer.
 
const Rget_const_ptr () const
 Conversion to C-style pointer.
 
std::vector< R >::const_iterator begin () const
 
std::vector< R >::iterator begin ()
 
std::vector< R >::const_iterator end () const
 
std::vector< R >::iterator end ()
 
int memSize () const
 
void reDim (int newdim, const bool setZero=true)
 Resets VectorBase's dimension to newdim.
 
void reSize (int newsize)
 Resets VectorBase's memory size to newsize.
 
const VectorBase< Roperator- (const VectorBase< R > &vec) const
 
const VectorBase< Roperator+ (const VectorBase< R > &v) const
 

Detailed Description

template<class R>
class soplex::VectorBase< R >

Dense vector.

Class VectorBase provides dense linear algebra vectors. Internally, VectorBase wraps std::vector.

After construction, the values of a VectorBase can be accessed with the subscript operator[](). Safety is provided by qchecking of array bound when accessing elements with the subscript operator[]() (only when compiled without -DNDEBUG).

A VectorBase is distinguished from a simple array of Reals or Rationals by providing a set of mathematical operations.

The following mathematical operations are provided by class VectorBase (VectorBase a, b; R x):

OperationDescription  
-= subtraction a -= b
+= addition a += b
* scalar product x = a * b
*= scaling a *= x
maxAbs() infinity norm a.maxAbs() == \(\|a\|_{\infty}\)
minAbs()

a.minAbs() == \(\min |a_i|\)

length() euclidian norm a.length() == \(\sqrt{a^2}\)
length2()square norm a.length2() == \(a^2\)
multAdd(x,b)add scaled vector a += x * b

When using any of these operations, the vectors involved must be of the same dimension. Also an SVectorBase b is allowed if it does not contain nonzeros with index greater than the dimension of a.q

Definition at line 85 of file vectorbase.h.

Constructor & Destructor Documentation

◆ VectorBase() [1/6]

template<class R >
VectorBase ( )

Constructor.

There is no default constructor since the storage for a VectorBase must be provided externally. Storage must be passed as a memory block val at construction. It must be large enough to fit at least dimen values.

Definition at line 101 of file vectorbase.h.

◆ VectorBase() [2/6]

template<class R >
VectorBase ( int dimen,
R * p_val )

Definition at line 101 of file vectorbase.h.

◆ VectorBase() [3/6]

template<class R >
VectorBase ( int p_dimen)
explicit

Definition at line 101 of file vectorbase.h.

◆ VectorBase() [4/6]

template<class R >
template<typename S >
VectorBase ( const VectorBase< S > & vec)

Definition at line 101 of file vectorbase.h.

◆ VectorBase() [5/6]

template<class R >
VectorBase ( const VectorBase< R > && vec)
noexcept

Definition at line 101 of file vectorbase.h.

◆ VectorBase() [6/6]

template<class R >
VectorBase ( const VectorBase< R > & vec)

Definition at line 101 of file vectorbase.h.

Member Function Documentation

◆ assign() [1/2]

template<class R >
template<class S >
VectorBase< R > & assign ( const SSVectorBase< S > & vec)

Assign values of vec.

Assigns all nonzeros of vec to the vector. All other values remain unchanged.

Definition at line 126 of file basevectors.h.

References DataArray< T >::DataArray(), DataArray< T >::operator=(), and DataArray< T >::size().

◆ assign() [2/2]

template<class R >
template<class S >
VectorBase< R > & assign ( const SVectorBase< S > & vec)

Assign values of vec.

Assigns all nonzeros of vec to the vector. All other values remain unchanged.

Definition at line 86 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ begin() [1/2]

template<class R >
std::vector< R >::iterator begin ( )

Definition at line 514 of file vectorbase.h.

References VectorBase< R >::val.

◆ begin() [2/2]

template<class R >
std::vector< R >::const_iterator begin ( ) const

Definition at line 509 of file vectorbase.h.

References VectorBase< R >::val.

◆ clear()

template<class R >
void clear ( )

Set vector to contain all-zeros (keeping the same length)

Definition at line 308 of file vectorbase.h.

References VectorBase< R >::val.

Referenced by SSVectorBase< R >::clear(), UpdateVector< R >::clear(), and SLUFactorRational::operator=().

◆ dim()

◆ end() [1/2]

template<class R >
std::vector< R >::iterator end ( )

Definition at line 525 of file vectorbase.h.

References VectorBase< R >::val.

◆ end() [2/2]

template<class R >
std::vector< R >::const_iterator end ( ) const

Definition at line 520 of file vectorbase.h.

References VectorBase< R >::val.

◆ get_const_ptr()

template<class R >
const R * get_const_ptr ( ) const

Conversion to C-style pointer.

This function serves for using a VectorBase in an C-style function. It returns a pointer to the first value of the array.

Definition at line 503 of file vectorbase.h.

References DataArray< T >::data, and VectorBase< R >::val.

◆ get_ptr()

template<class R >
R * get_ptr ( )

Conversion to C-style pointer.

This function serves for using a VectorBase in an C-style function. It returns a pointer to the first value of the array.

Todo
check whether this non-const c-style access should indeed be public

Definition at line 494 of file vectorbase.h.

References DataArray< T >::data, and VectorBase< R >::val.

Referenced by SSVectorBase< R >::get_ptr(), and SLUFactorRational::SLUFactorRational().

◆ isConsistent()

template<class R >
bool isConsistent ( ) const

Consistency check.

Definition at line 622 of file vectorbase.h.

Referenced by SSVectorBase< R >::isConsistent().

◆ length()

template<class R >
R length ( ) const

Floating point approximation of euclidian norm (without any approximation guarantee).

Definition at line 445 of file vectorbase.h.

References VectorBase< R >::length2(), and soplex::spxSqrt().

◆ length2()

template<class R >
R length2 ( ) const

Squared norm.

Definition at line 451 of file vectorbase.h.

Referenced by VectorBase< R >::length(), and SSVectorBase< R >::length2().

◆ maxAbs()

template<class R >
R maxAbs ( ) const

Maximum absolute value, i.e., infinity norm.

Definition at line 405 of file vectorbase.h.

References VectorBase< R >::dim(), soplex::spxAbs(), and VectorBase< R >::val.

Referenced by SSVectorBase< R >::maxAbs().

◆ memSize()

template<class R >
int memSize ( ) const

Definition at line 535 of file vectorbase.h.

References VectorBase< R >::val.

◆ minAbs()

template<class R >
R minAbs ( ) const

Minimum absolute value.

Definition at line 425 of file vectorbase.h.

References VectorBase< R >::dim(), soplex::spxAbs(), and VectorBase< R >::val.

◆ multAdd() [1/3]

template<class R >
template<class S , class T >
VectorBase< R > & multAdd ( const S & x,
const SSVectorBase< T > & vec )

Addition of scaled vector.

Definition at line 314 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ multAdd() [2/3]

template<class R >
template<class S , class T >
VectorBase< R > & multAdd ( const S & x,
const SVectorBase< T > & vec )

Addition of scaled vector.

Definition at line 280 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ multAdd() [3/3]

template<class R >
template<class S , class T >
VectorBase< R > & multAdd ( const S & x,
const VectorBase< T > & vec )

Addition of scaled vector.

Definition at line 458 of file vectorbase.h.

References VectorBase< R >::dim(), VectorBase< R >::val, and VectorBase< R >::vec().

Referenced by SSVectorBase< R >::multAdd(), and UpdateVector< R >::update().

◆ multSub()

template<class R >
template<class S , class T >
VectorBase< R > & multSub ( const S & x,
const SVectorBase< T > & vec )

Subtraction of scaled vector.

Definition at line 297 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator*() [1/4]

template<class R >
R operator* ( const SSVectorBase< R > & vec) const

Inner product.

Definition at line 252 of file basevectors.h.

References DataArray< T >::DataArray().

◆ operator*() [2/4]

template<class R >
R operator* ( const SVectorBase< R > & vec) const

Inner product.

Definition at line 235 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator*() [3/4]

template<class R >
R operator* ( const VectorBase< R > & vec) const

Inner product.

Definition at line 386 of file vectorbase.h.

References VectorBase< R >::dim(), VectorBase< R >::val, and VectorBase< R >::vec().

◆ operator*() [4/4]

Inner product.

Definition at line 632 of file vectorbase.h.

References DataArray< T >::DataArray().

◆ operator*=()

template<class R >
template<class S >
VectorBase< R > & operator*= ( const S & x)

Scaling.

Definition at line 360 of file vectorbase.h.

References VectorBase< R >::dim(), and VectorBase< R >::val.

◆ operator+()

template<class R >
const VectorBase< R > operator+ ( const VectorBase< R > & v) const

Definition at line 588 of file vectorbase.h.

References VectorBase< R >::dim(), and VectorBase< R >::val.

◆ operator+=() [1/3]

template<class R >
template<class S >
VectorBase< R > & operator+= ( const SSVectorBase< S > & vec)

Addition.

Definition at line 170 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator+=() [2/3]

template<class R >
template<class S >
VectorBase< R > & operator+= ( const SVectorBase< S > & vec)

Addition.

Definition at line 152 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator+=() [3/3]

template<class R >
template<class S >
VectorBase< R > & operator+= ( const VectorBase< S > & vec)

Addition.

Definition at line 316 of file vectorbase.h.

References VectorBase< R >::dim(), VectorBase< R >::val, and VectorBase< R >::vec().

Referenced by SSVectorBase< R >::operator+=().

◆ operator-()

template<class R >
const VectorBase< R > operator- ( const VectorBase< R > & vec) const

◆ operator-=() [1/3]

template<class R >
template<class S >
VectorBase< R > & operator-= ( const SSVectorBase< S > & vec)

Subtraction.

Definition at line 212 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator-=() [2/3]

template<class R >
template<class S >
VectorBase< R > & operator-= ( const SVectorBase< S > & vec)

Subtraction.

Definition at line 194 of file basevectors.h.

References DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator-=() [3/3]

◆ operator/=()

template<class R >
template<class S >
VectorBase< R > & operator/= ( const S & x)

Division.

Definition at line 373 of file vectorbase.h.

References VectorBase< R >::dim(), and VectorBase< R >::val.

◆ operator=() [1/5]

template<class R >
template<class S >
VectorBase< R > & operator= ( const SSVectorBase< S > & vec)

Assignment operator.

Assigning an SSVectorBase to a VectorBase using operator=() will set all values to 0 except the nonzeros of vec. This is diffent in method assign().

Todo
do we need this also in non-template version, because SSVectorBase can be automatically cast to VectorBase?

Assigning an SSVectorBase to a VectorBase using operator=() will set all values to 0 except the nonzeros of vec. This is different in method assign().

Definition at line 106 of file basevectors.h.

References DataArray< T >::clear(), and DataArray< T >::operator=().

◆ operator=() [2/5]

template<class R >
template<class S >
VectorBase< R > & operator= ( const SVectorBase< S > & vec)

Assignment operator.

Assigning an SVectorBase to a VectorBase using operator=() will set all values to 0 except the nonzeros of vec. This is diffent in method assign().

Assigning an SVectorBase to a VectorBase using operator=() will set all values to 0 except the nonzeros of vec. This is different in method assign().

Definition at line 66 of file basevectors.h.

References DataArray< T >::clear(), DataArray< T >::DataArray(), and DataArray< T >::size().

◆ operator=() [3/5]

template<class R >
VectorBase< R > & operator= ( const VectorBase< R > && vec)

Move assignment operator.

Definition at line 187 of file vectorbase.h.

References VectorBase< R >::val, and VectorBase< R >::vec().

◆ operator=() [4/5]

template<class R >
VectorBase< R > & operator= ( const VectorBase< R > & vec)

Assignment operator.

Definition at line 174 of file vectorbase.h.

References VectorBase< R >::val, and VectorBase< R >::vec().

◆ operator=() [5/5]

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

Assignment operator.

Definition at line 157 of file vectorbase.h.

References VectorBase< R >::val, and VectorBase< R >::vec().

Referenced by UpdateVector< R >::operator=(), and SSVectorBase< R >::operator=().

◆ operator[]() [1/2]

template<class R >
R & operator[] ( int n)

Return n 'th value by reference.

Definition at line 276 of file vectorbase.h.

References VectorBase< R >::dim(), and VectorBase< R >::val.

◆ operator[]() [2/2]

template<class R >
const R & operator[] ( int n) const

Return n 'th value.

Definition at line 283 of file vectorbase.h.

References VectorBase< R >::dim(), and VectorBase< R >::val.

◆ reDim()

◆ reSize()

template<class R >
void reSize ( int newsize)

Resets VectorBase's memory size to newsize.

Definition at line 560 of file vectorbase.h.

References VectorBase< R >::val.

Referenced by SSVectorBase< R >::reMem().

◆ scaleAssign() [1/2]

template<class R >
VectorBase< R > & scaleAssign ( const int * scaleExp,
const VectorBase< R > & vec,
bool negateExp = false )

scale and assign

Definition at line 211 of file vectorbase.h.

References VectorBase< R >::dim(), VectorBase< R >::val, and VectorBase< R >::vec().

◆ scaleAssign() [2/2]

template<class R >
VectorBase< R > & scaleAssign ( int scaleExp,
const VectorBase< R > & vec )

scale and assign

Definition at line 194 of file vectorbase.h.

References VectorBase< R >::dim(), VectorBase< R >::val, and VectorBase< R >::vec().

◆ vec()

Friends And Related Symbol Documentation

◆ operator-

template<class R >
VectorBase< R > operator- ( const VectorBase< R > & vec)
friend

Definition at line 605 of file vectorbase.h.

◆ operator==

template<class R >
bool operator== ( const VectorBase< R > & vec1,
const VectorBase< R > & vec2 )
friend

Equality operator.

Definition at line 290 of file vectorbase.h.

◆ VectorBase

template<class R >
template<typename S >
friend class VectorBase
friend

Definition at line 91 of file vectorbase.h.

Member Data Documentation

◆ val