20 #ifndef _VECTORBASE_H_ 21 #define _VECTORBASE_H_ 30 template <
class R >
class SVectorBase;
31 template <
class R >
class SSVectorBase;
115 assert(
dim() == vec.dim());
117 for(
int i = 0; i <
dimen; i++ )
131 assert(
dim() == vec.dim());
133 for(
int i = 0; i <
dimen; i++ )
147 assert(
dim() == vec.
dim());
149 for(
int i = 0; i <
dimen; i++ )
150 val[i] =
spxLdexp(vec[i], scaleExp);
163 assert(
dim() == vec.
dim());
167 for(
int i = 0; i <
dimen; i++ )
168 val[i] =
spxLdexp(vec[i], -scaleExp[i]);
172 for(
int i = 0; i <
dimen; i++ )
173 val[i] =
spxLdexp(vec[i], scaleExp[i]);
223 assert(n >= 0 && n < dimen);
230 assert(n >= 0 && n < dimen);
239 else if( vec1.dim() != vec2.dim() )
243 for(
int i = 0; i < vec1.dim(); i++ )
245 if( vec1[i] != vec2[i] )
264 for(
int i = 0; i <
dimen; i++ )
273 assert(
dim() == vec.dim());
274 assert(
dim() == dimen);
276 for(
int i = 0; i <
dimen; i++ )
294 assert(
dim() == vec.dim());
295 assert(
dim() == dimen);
297 for(
int i = 0; i <
dimen; i++ )
315 assert(
dim() == dimen);
317 for(
int i = 0; i <
dimen; i++ )
329 for(
int i = 0; i <
dim(); i++ )
338 assert(vec.dim() ==
dimen);
342 for(
int i = 0; i <
dimen; i++ )
343 x += val[i] * vec.val[i];
358 assert(
dim() == dimen);
362 for(
int i = 0; i <
dimen; i++ )
379 assert(
dim() == dimen);
383 for(
int i = 1; i <
dimen; i++ )
405 return (*
this) * (*this);
409 template <
class S,
class T >
412 assert(vec.dim() ==
dimen);
414 for(
int i = 0; i <
dimen; i++ )
415 val[i] += x * vec.val[i];
421 template <
class S,
class T >
425 template <
class S,
class T >
429 template <
class S,
class T >
461 #ifdef ENABLE_CONSISTENCY_CHECKS 462 if(
dim() > 0 && val == 0 )
482 assert(
dim() == vec.
dim());
501 assert(
dim() == vec.
dim());
503 for(
int i = 0; i <
dimen; i++ )
525 #ifndef SOPLEX_LEGACY 539 for(
int i = 1; i <
dimen && i < vec.
dim(); i++ )
547 #endif // _VECTORBASE_H_ Rational spxAbs(const Rational &r)
Absolute.
Rational & addProduct(const Rational &r, const Rational &s)
add product of two rationals
VectorBase< Real > & scaleAssign(int scaleExp, const VectorBase< Real > &vec)
scale and assign
R minAbs() const
Minimum absolute value.
VectorBase< R > & operator=(const VectorBase< S > &vec)
Assignment operator.
R length2() const
Squared norm.
Dense vector.Class VectorBase provides dense linear algebra vectors. It does not provide memory manag...
Real length() const
Floating point approximation of euclidian norm (without any approximation guarantee).
Wrapper for GMP type mpq_class.We wrap mpq_class so that we can replace it by a double type if GMP is...
VectorBase< R > & operator+=(const VectorBase< S > &vec)
Addition.
VectorBase< Real > & scaleAssign(const int *scaleExp, const VectorBase< Real > &vec, bool negateExp=false)
scale and assign
Semi sparse vector.This class implements semi-sparse vectors. Such are DVectorBases where the indices...
const R * get_const_ptr() const
Conversion to C-style pointer.
R * get_ptr()
Conversion to C-style pointer.
Real spxLdexp(Real x, int exp)
returns x * 2^exp
Real spxSqrt(Real a)
returns square root
VectorBase< R > & operator*=(const S &x)
Scaling.
friend bool operator==(const VectorBase< R > &vec1, const VectorBase< R > &vec2)
Equality operator.
bool isConsistent() const
Consistency check.
R & operator[](int n)
Return n 'th value by reference.
VectorBase< R > & multAdd(const S &x, const VectorBase< T > &vec)
Addition of scaled vector.
int dim() const
Dimension of vector.
Everything should be within this namespace.
VectorBase< R > & operator-=(const VectorBase< S > &vec)
Subtraction.
R operator*(const VectorBase< R > &vec) const
Inner product.
void clear()
Set vector to 0.
const R & operator[](int n) const
Return n 'th value.
int dimen
Dimension of vector.
VectorBase< R > & operator/=(const S &x)
Division.
Sparse vectors.Class SVectorBase provides packed sparse vectors. Such are a sparse vectors...
#define MSGinconsistent(name)
VectorBase< R > & assign(const SVectorBase< S > &vec)
Assign values of vec.
R maxAbs() const
Maximum absolute value, i.e., infinity norm.
VectorBase< R > & multSub(const S &x, const SVectorBase< T > &vec)
Subtraction of scaled vector.
VectorBase< R > & operator=(const VectorBase< R > &vec)
Assignment operator.