26#ifndef _CXSC_INTVECTOR_HPP_INCLUDED
27#define _CXSC_INTVECTOR_HPP_INCLUDED
29#include "xscclass.hpp"
58#ifdef _CXSC_FRIEND_TPL
59template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
65template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
71 template <
class V>
friend void _vresize(V &rv)
noexcept;
72 template <
class V,
class S>
friend void _vresize(V &rv,
const int &len)
78 template <
class V,
class S>
friend void _vresize(V &rv,
const int &lb,
const int &ub)
84 template <
class V1,
class V2,
class S>
friend V1 &_vvassign(V1 &rv1,
const V2 &rv2)
noexcept;
85 template <
class V,
class S>
friend V & _vsassign(V &rv,
const S &r)
noexcept;
86 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
noexcept;
87 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
93template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
99template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
noexcept;
100template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
106template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
noexcept;
109 template <
class DP,
class V1,
class V2>
friend void _vvaccu(DP &dp,
const V1 & rv1,
const V2 &rv2)
115 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
121 template <
class V,
class S>
friend V &_vsmultassign(V &rv,
const S &r)
noexcept;
122 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
noexcept;
123 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
noexcept;
124 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
130 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
136 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
142 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
148 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
154 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
160 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
166 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
172 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
178 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
184 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
190 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
196 template <
class V>
friend V _vminus(
const V &rv)
noexcept;
197 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
noexcept;
198 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
204 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
210 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
216 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
222 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
228 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
234 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
240 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
246template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
252template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
260template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
267 template <
class V,
class S,
class E>
friend E _vsdiv(
const V &rv,
const S &s)
noexcept;
268 template <
class V,
class S>
friend V &_vsdivassign(V &rv,
const S &r)
noexcept;
269 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
noexcept;
270 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
noexcept;
271 template <
class V,
class S,
class E>
friend E _vsmult(
const V &rv,
const S &s)
noexcept;
272 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
noexcept;
273 template <
class V1,
class V2>
friend bool _vveq(
const V1 &rv1,
const V2 &rv2)
noexcept;
274 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
noexcept;
275 template <
class V1,
class V2>
friend bool _vvneq(
const V1 &rv1,
const V2 &rv2)
noexcept;
276 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
noexcept;
277 template <
class V1,
class V2>
friend bool _vvless(
const V1 &rv1,
const V2 &rv2)
noexcept;
278 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
noexcept;
279 template <
class V1,
class V2>
friend bool _vvleq(
const V1 &rv1,
const V2 &rv2)
noexcept;
280 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
noexcept;
281 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
noexcept;
282 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
noexcept;
283 template <
class V>
friend bool _vnot(
const V &rv)
noexcept;
284 template <
class V>
friend void *_vvoid(
const V &rv)
noexcept;
285 template <
class V,
class E>
friend E _vabs(
const V &rv)
noexcept;
286 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
noexcept;
287 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
288 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
289 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
290 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
291 template <
class VS>
friend bool _vsnot(
const VS &sl)
noexcept;
292 template <
class VS>
friend void *_vsvoid(
const VS &sl)
noexcept;
293 template <
class V>
friend std::ostream &_vout(std::ostream &s,
const V &rv)
noexcept;
294 template <
class V>
friend std::istream &_vin(std::istream &s, V &rv)
noexcept;
296template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
noexcept;
297 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
noexcept;
311 explicit INLINE
intvector(
const class index &i)
noexcept;
314 explicit INLINE
intvector(
const int &i1,
const int &i2)
323 explicit INLINE
intvector(
const int &)
noexcept;
371 friend INLINE
int Lb(
const intvector &rv)
noexcept {
return rv.l; }
373 friend INLINE
int Ub(
const intvector &rv)
noexcept {
return rv.u; }
411 INLINE
operator void*()
noexcept;
433#ifdef _CXSC_FRIEND_TPL
435 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
441 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
noexcept;
442 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
448 template <
class VS,
class S>
friend VS & _vssassign(VS &sl,
const S &r)
noexcept;
450 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
noexcept;
451 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
noexcept;
453 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
noexcept;
454 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
noexcept;
455 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
noexcept;
456 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
noexcept;
457 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
noexcept;
458 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
noexcept;
459 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
noexcept;
460 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
461 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
462 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
463 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
464 template <
class VS>
friend bool _vsnot(
const VS &sl)
noexcept;
465 template <
class VS>
friend void *_vsvoid(
const VS &sl)
noexcept;
466 template <
class V>
friend std::ostream &_vsout(std::ostream &s,
const V &rv)
noexcept;
467 template <
class V>
friend std::istream &_vsin(std::istream &s, V &rv)
noexcept;
470 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
476 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
482 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
noexcept;
483 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
noexcept;
484 template <
class VS,
class V,
class E>
friend E _vsvmult(
const VS & sl,
const V &rv)
490 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
496 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
502 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
508 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
514 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
520 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
526 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
532 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
538 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
544 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
noexcept;
545 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
551 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
557 template <
class VS1,
class VS2,
class E>
friend E _vsvsmult(
const VS1 & sl1,
const VS2 &sl2)
569 explicit INLINE
intvector_slice(
intvector &a,
const int &lb,
const int &ub)
noexcept:dat(a.dat),l(a.l),u(a.u),size(ub-lb+1),start(lb),end(ub) { }
687 INLINE
operator void*()
noexcept;
721 INLINE
bool operator !(
const intvector &rv)
noexcept;
966 INLINE std::ostream &operator <<(std::ostream &s,
const intvector &rv)
noexcept;
968 INLINE std::ostream &operator <<(std::ostream &o,
const intvector_slice &sl)
noexcept;
970 INLINE std::istream &operator >>(std::istream &s,
intvector &rv)
noexcept;
972 INLINE std::istream &operator >>(std::istream &s,
intvector_slice &rv)
noexcept;
979extern std::ostream& operator<< ( std::ostream&,
intvector& );
986#include "intvector.inl"
The Data Type dotprecision.
The Data Type intmatrix_slice.
The Data Type intmatrix_subv.
The Data Type intvector_slice.
intvector_slice(const intvector_slice &a) noexcept
Constructor of class intvector_slice.
intvector_slice & operator-=(const intvector &rv) noexcept
Implementation of subtraction and allocation operation.
friend int Lb(const intvector_slice &sl) noexcept
Returns the lower bound of the vector.
friend int VecLen(const intvector_slice &sl) noexcept
Returns the dimension of the vector.
intvector_slice & operator+=(const intvector &rv) noexcept
Implementation of addition and allocation operation.
intvector_slice & operator/=(const int &r) noexcept
Implementation of division and allocation operation.
friend int Ub(const intvector_slice &sl) noexcept
Returns the upper bound of the vector.
intvector_slice(intvector &a, const int &lb, const int &ub) noexcept
Constructor of class intvector_slice.
int & operator[](const int &i) noexcept
Operator for accessing the single elements of the vector.
intvector_slice & operator()() noexcept
Operator for accessing the whole vector.
intvector_slice & operator*=(const int &r) noexcept
Implementation of multiplication and allocation operation.
intvector_slice & operator=(const intvector_slice &sl) noexcept
Constructor of class intvector_slice.
intvector_slice(intvector_slice &a, const int &lb, const int &ub) noexcept
Constructor of class intvector_slice.
intvector() noexcept
Constructor of class intvector.
friend int Ub(const intvector &rv) noexcept
Returns the upper bound of the vector.
friend intvector & SetUb(intvector &rv, const int &u) noexcept
Sets the upper bound of the vector.
int & operator[](const int &i) noexcept
Operator for accessing the single elements of the vector.
friend int VecLen(const intvector &rv) noexcept
Returns the dimension of the vector.
intvector & operator()() noexcept
Operator for accessing the whole vector.
friend int Lb(const intvector &rv) noexcept
Returns the lower bound of the vector.
friend intvector & SetLb(intvector &rv, const int &l) noexcept
Sets the lower bound of the vector.
intvector & operator=(const intvector &rv) noexcept
Implementation of standard assigning operator.
The namespace cxsc, providing all functionality of the class library C-XSC.
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc) noexcept
Implementation of standard algebraic addition and allocation operation.
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
intvector _intvector(const int &r) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
void DoubleSize(cimatrix &A)
Doubles the size of the matrix.
cimatrix & operator*=(cimatrix &m, const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
void Resize(cimatrix &A) noexcept
Resizes the matrix.
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.