26#ifndef _CXSC_IVECTOR_HPP_INCLUDED
27#define _CXSC_IVECTOR_HPP_INCLUDED
29#include "xscclass.hpp"
33#include "interval.hpp"
69#ifdef _CXSC_FRIEND_TPL
72template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
78template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
84 template <
class V>
friend void _vresize(V &rv)
noexcept;
85 template <
class V,
class S>
friend void _vresize(V &rv,
const int &len)
91 template <
class V,
class S>
friend void _vresize(V &rv,
const int &lb,
const int &ub)
97 template <
class V1,
class V2,
class S>
friend V1 &_vvassign(V1 &rv1,
const V2 &rv2)
noexcept;
98 template <
class V,
class S>
friend V & _vsassign(V &rv,
const S &r)
noexcept;
99 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
noexcept;
100template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
106template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
112template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
noexcept;
113 template <
class V1,
class V2>
friend V1 &_vvsetinf(V1 &rv1,
const V2 &rv2)
119 template <
class V1,
class V2>
friend V1 &_vvsetsup(V1 &rv1,
const V2 &rv2)
125 template <
class V,
class VS>
friend V &_vvssetinf(V &rv,
const VS &sl)
131 template <
class V,
class VS>
friend V &_vvssetsup(V &rv,
const VS &sl)
137template <
class V,
class MV>
friend V &_vmvsetinf(V &rv,
const MV &v)
143template <
class V,
class MV>
friend V &_vmvsetsup(V &rv,
const MV &v)
149 template <
class V1,
class V2>
friend V1 &_vvusetinf(V1 &rv1,
const V2 &rv2)
155 template <
class V1,
class V2>
friend V1 &_vvusetsup(V1 &rv1,
const V2 &rv2)
161 template <
class V,
class VS>
friend V &_vvsusetinf(V &rv,
const VS &sl)
167 template <
class V,
class VS>
friend V &_vvsusetsup(V &rv,
const VS &sl)
173template <
class V,
class MV>
friend V &_vmvusetinf(V &rv,
const MV &v)
179template <
class V,
class MV>
friend V &_vmvusetsup(V &rv,
const MV &v)
185 template <
class V,
class S>
friend V &_vssetinf(V &v,
const S &s)
noexcept;
186 template <
class V,
class S>
friend V &_vssetsup(V &v,
const S &s)
noexcept;
187 template <
class V,
class S>
friend V &_vsusetinf(V &v,
const S &s)
noexcept;
188 template <
class V,
class S>
friend V &_vsusetsup(V &v,
const S &s)
noexcept;
189 template <
class V,
class E>
friend E _vabs(
const V &rv)
noexcept;
190 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
noexcept;
191template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
noexcept;
192 template <
class V,
class E>
friend E _vdiam(
const V &rv)
noexcept;
193 template <
class V,
class E>
friend E _vmid(
const V &rv)
noexcept;
194 template <
class V,
class E>
friend E _vinf(
const V &rv)
noexcept;
195 template <
class V,
class E>
friend E _vsup(
const V &rv)
noexcept;
198 template <
class DP,
class V1,
class V2>
friend void _vvaccu(DP &dp,
const V1 & rv1,
const V2 &rv2)
204 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
210 template <
class V1,
class V2,
class E>
friend E _vvimult(
const V1 & rv1,
const V2 &rv2)
216 template <
class VS,
class V,
class E>
friend E _vsvimult(
const VS & sl,
const V &rv)
222 template <
class V,
class S>
friend V &_vsmultassign(V &rv,
const S &r)
noexcept;
223 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
229 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
235 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
241 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
247 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
253 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
259 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
265 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
271 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
277 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
283 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
289 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
295 template <
class V>
friend V _vminus(
const V &rv)
noexcept;
296 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
noexcept;
297 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
303 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
309 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
315 template <
class V1,
class V2,
class E>
friend E _vvconv(
const V1 &rv1,
const V2 &rv2)
321 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
327 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
333 template <
class V1,
class V2>
friend V1 &_vvconvassign(V1 &rv1,
const V2 &rv2)
339 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
345 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
351 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
357 template <
class V1,
class V2,
class E>
friend E _vvsect(
const V1 &rv1,
const V2 &rv2)
363 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
369 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
375 template <
class V1,
class V2>
friend V1 &_vvsectassign(V1 &rv1,
const V2 &rv2)
381 template <
class V,
class VS>
friend V &_vvssectassign(V &rv,
const VS &sl)
387 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
393 template <
class VS1,
class VS2>
friend VS1 &_vsvssectassign(VS1 &sl1,
const VS2 &sl2)
399 template <
class MV1,
class MV2,
class E>
friend E _mvmvsect(
const MV1 &rv1,
const MV2 &rv2)
405 template <
class MV,
class V,
class E>
friend E _mvvsect(
const MV &rv1,
const V &rv2)
411template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
417template <
class V,
class MV>
friend V &_vmvsectassign(V &rv,
const MV &v)
423 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
429 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
435template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
441template <
class V,
class MV>
friend V &_vmvconvassign(V &rv,
const MV &v)
447 template <
class V,
class MV,
class S>
friend S _vmvimult(
const V &rv1,
const MV &rv2)
454 template <
class V,
class S,
class E>
friend E _vsdiv(
const V &rv,
const S &s)
noexcept;
455 template <
class V,
class S>
friend V &_vsdivassign(V &rv,
const S &r)
noexcept;
456 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
noexcept;
457 template <
class V,
class S,
class E>
friend E _vsmult(
const V &rv,
const S &s)
noexcept;
458 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
noexcept;
459 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
noexcept;
460 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
466 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
472 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
478 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
484 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
490template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
496template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
502 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
noexcept;
503template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
510 template <
class V1,
class V2>
friend bool _vveq(
const V1 &rv1,
const V2 &rv2)
noexcept;
511 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
noexcept;
512 template <
class V1,
class V2>
friend bool _vvneq(
const V1 &rv1,
const V2 &rv2)
noexcept;
513 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
noexcept;
514 template <
class V1,
class V2>
friend bool _vvless(
const V1 &rv1,
const V2 &rv2)
noexcept;
515 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
noexcept;
516 template <
class V1,
class V2>
friend bool _vvleq(
const V1 &rv1,
const V2 &rv2)
noexcept;
517 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
noexcept;
518 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
noexcept;
519 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
noexcept;
520 template <
class V>
friend bool _vnot(
const V &rv)
noexcept;
521 template <
class V>
friend void *_vvoid(
const V &rv)
noexcept;
522 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
523 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
524 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
525 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
526 template <
class VS>
friend bool _vsnot(
const VS &sl)
noexcept;
527 template <
class VS>
friend void *_vsvoid(
const VS &sl)
noexcept;
528 template <
class V>
friend std::ostream &_vout(std::ostream &s,
const V &rv)
noexcept;
529 template <
class V>
friend std::istream &_vin(std::istream &s, V &rv)
noexcept;
532template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
539template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
noexcept;
540 template <
class M,
class V,
class E>
friend E _mvimult(
const M &m,
const V &v)
546 template <
class V,
class M,
class E>
friend E _vmimult(
const V &v,
const M &m)
552 template <
class V,
class M,
class S>
friend V &_vmimultassign(V &v,
const M &m)
558 template <
class MS,
class V,
class E>
friend E _msvimult(
const MS &ms,
const V &v)
564 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
570 template <
class V,
class MS,
class S>
friend V &_vmsimultassign(V &v,
const MS &ms)
585 template <
class V1,
class V2,
class E>
friend E _vvcimult(
const V1 & rv1,
const V2 &rv2)
591 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
599 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
605 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
611 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
617 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
625template <
class V1,
class V2>
friend V1 &_vvsetim(V1 &rv1,
const V2 &rv2)
631template <
class V1,
class V2>
friend V1 &_vvsetre(V1 &rv1,
const V2 &rv2)
637 template <
class V,
class E>
friend E _vim(
const V &rv)
noexcept;
638 template <
class V,
class E>
friend E _vre(
const V &rv)
noexcept;
640 template <
class VS,
class V>
friend VS &_vsvsetim(VS &sl,
const V &rv)
646 template <
class VS,
class V>
friend VS &_vsvsetre(VS &sl,
const V &rv)
652template <
class MV,
class V>
friend MV &_mvvsetre(MV &v,
const V &rv)
658template <
class MV,
class V>
friend MV &_mvvsetim(MV &v,
const V &rv)
664template <
class MV,
class V>
friend V _mvim(
const MV &mv)
noexcept;
665template <
class MV,
class V>
friend V _mvre(
const MV &mv)
noexcept;
669 template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
681 template <
class V1,
class V2,
class E>
friend E _vvlimult(
const V1 & rv1,
const V2 &rv2)
687 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
695 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
701 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
707 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
713 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
723 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
737 explicit INLINE
ivector(
const int &i)
noexcept;
740 explicit INLINE
ivector(
const class index &i)
noexcept;
743 explicit INLINE
ivector(
const int &i1,
const int &i2)
897 INLINE
~ivector() {
delete [] dat; }
908 friend INLINE
int Lb(
const ivector &rv)
noexcept {
return rv.l; }
910 friend INLINE
int Ub(
const ivector &rv)
noexcept {
return rv.u; }
950 INLINE
operator void*()
noexcept;
977#ifdef _CXSC_FRIEND_TPL
981 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
987 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
noexcept;
988 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
994 template <
class VS,
class S>
friend VS & _vssassign(VS &sl,
const S &r)
noexcept;
995 template <
class VS,
class V>
friend VS &_vsvsetinf(VS &sl,
const V &rv)
1001 template <
class VS,
class V>
friend VS &_vsvsetsup(VS &sl,
const V &rv)
1002#if(CXSC_INDEX_CHECK)
1007 template <
class VS1,
class VS2>
friend VS1 &_vsvssetinf(VS1 &sl1,
const VS2 &sl2)
1008#if(CXSC_INDEX_CHECK)
1013 template <
class VS1,
class VS2>
friend VS1 &_vsvssetsup(VS1 &sl1,
const VS2 &sl2)
1014#if(CXSC_INDEX_CHECK)
1019 template <
class VS,
class V>
friend VS &_vsvusetinf(VS &sl,
const V &rv)
1020#if(CXSC_INDEX_CHECK)
1025 template <
class VS,
class V>
friend VS &_vsvusetsup(VS &sl,
const V &rv)
1026#if(CXSC_INDEX_CHECK)
1031 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetinf(VS1 &sl1,
const VS2 &sl2)
1032#if(CXSC_INDEX_CHECK)
1037 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetsup(VS1 &sl1,
const VS2 &sl2)
1038#if(CXSC_INDEX_CHECK)
1043 template <
class VS,
class S>
friend VS &_vsssetinf(VS &vs,
const S &s)
noexcept;
1044 template <
class VS,
class S>
friend VS &_vsssetsup(VS &vs,
const S &s)
noexcept;
1045 template <
class VS,
class S>
friend VS &_vssusetinf(VS &vs,
const S &s)
noexcept;
1046 template <
class VS,
class S>
friend VS &_vssusetsup(VS &vs,
const S &s)
noexcept;
1048 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
1049#if(CXSC_INDEX_CHECK)
1054 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
1055#if(CXSC_INDEX_CHECK)
1061 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
noexcept;
1062 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
noexcept;
1064 template <
class VS,
class V,
class E>
friend E _vsvimult(
const VS & sl,
const V &rv)
1065#if(CXSC_INDEX_CHECK)
1070 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
noexcept;
1071 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
noexcept;
1072 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
1073#if(CXSC_INDEX_CHECK)
1078 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
1079#if(CXSC_INDEX_CHECK)
1084 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
1085#if(CXSC_INDEX_CHECK)
1090 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
1091#if(CXSC_INDEX_CHECK)
1096 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
1097#if(CXSC_INDEX_CHECK)
1102 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
1103#if(CXSC_INDEX_CHECK)
1108 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
1109#if(CXSC_INDEX_CHECK)
1114 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
1115#if(CXSC_INDEX_CHECK)
1120 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
1121#if(CXSC_INDEX_CHECK)
1126 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
noexcept;
1127 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
1128#if(CXSC_INDEX_CHECK)
1133 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
1134#if(CXSC_INDEX_CHECK)
1139 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
1140#if(CXSC_INDEX_CHECK)
1145 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
1146#if(CXSC_INDEX_CHECK)
1151 template <
class V,
class VS>
friend V &_vvssectassign(V &rv,
const VS &sl)
1152#if(CXSC_INDEX_CHECK)
1157 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
1158#if(CXSC_INDEX_CHECK)
1163 template <
class VS1,
class VS2>
friend VS1 &_vsvssectassign(VS1 &sl1,
const VS2 &sl2)
1164#if(CXSC_INDEX_CHECK)
1169 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
1170#if(CXSC_INDEX_CHECK)
1175 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
1176#if(CXSC_INDEX_CHECK)
1181 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
1182#if(CXSC_INDEX_CHECK)
1187 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
1188#if(CXSC_INDEX_CHECK)
1193 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
1194#if(CXSC_INDEX_CHECK)
1199 template <
class VS,
class M,
class S>
friend VS &_vsmimultassign(VS &v,
const M &m)
1200#if(CXSC_INDEX_CHECK)
1206 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
noexcept;
1207 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
noexcept;
1208 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
noexcept;
1209 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
noexcept;
1210 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
noexcept;
1211 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
noexcept;
1212 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
noexcept;
1213 template <
class VS,
class E>
friend E _vsdiam(
const VS &sl)
noexcept;
1214 template <
class VS,
class E>
friend E _vsmid(
const VS &sl)
noexcept;
1215 template <
class VS,
class E>
friend E _vsinf(
const VS &sl)
noexcept;
1216 template <
class VS,
class E>
friend E _vssup(
const VS &sl)
noexcept;
1217 template <
class VS1,
class VS2,
class E>
friend E _vsvsimult(
const VS1 & sl1,
const VS2 &sl2)
1218#if(CXSC_INDEX_CHECK)
1223 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
1224 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
1225 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
1226 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
1227 template <
class VS>
friend bool _vsnot(
const VS &sl)
noexcept;
1228 template <
class VS>
friend void *_vsvoid(
const VS &sl)
noexcept;
1229 template <
class V>
friend std::ostream &_vsout(std::ostream &s,
const V &rv)
noexcept;
1230 template <
class V>
friend std::istream &_vsin(std::istream &s, V &rv)
noexcept;
1233 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
1234#if(CXSC_INDEX_CHECK)
1241 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
1242#if(CXSC_INDEX_CHECK)
1247 template <
class V,
class VS>
friend V &_vvssetim(V &rv,
const VS &sl)
1248#if(CXSC_INDEX_CHECK)
1253 template <
class V,
class VS>
friend V &_vvssetre(V &rv,
const VS &sl)
1254#if(CXSC_INDEX_CHECK)
1259 template <
class VS1,
class VS2>
friend VS1 &_vsvssetim(VS1 &sl1,
const VS2 &sl2)
1260#if(CXSC_INDEX_CHECK)
1265 template <
class VS1,
class VS2>
friend VS1 &_vsvssetre(VS1 &sl1,
const VS2 &sl2)
1266#if(CXSC_INDEX_CHECK)
1274template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
1275#if(CXSC_INDEX_CHECK)
1284 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
1285#if(CXSC_INDEX_CHECK)
1294template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
1295#if(CXSC_INDEX_CHECK)
1306 explicit INLINE
ivector_slice(
ivector &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) { }
1308 explicit INLINE
ivector_slice(
ivector_slice &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) { }
1325#if(CXSC_INDEX_CHECK)
1332#if(CXSC_INDEX_CHECK)
1341#if(CXSC_INDEX_CHECK)
1348#if(CXSC_INDEX_CHECK)
1358#if(CXSC_INDEX_CHECK)
1365#if(CXSC_INDEX_CHECK)
1374#if(CXSC_INDEX_CHECK)
1381#if(CXSC_INDEX_CHECK)
1392#if(CXSC_INDEX_CHECK)
1405#if(CXSC_INDEX_CHECK)
1413#if(CXSC_INDEX_CHECK)
1423#if(CXSC_INDEX_CHECK)
1430#if(CXSC_INDEX_CHECK)
1444#if(CXSC_INDEX_CHECK)
1451#if(CXSC_INDEX_CHECK)
1460#if(CXSC_INDEX_CHECK)
1467#if(CXSC_INDEX_CHECK)
1474#if(CXSC_INDEX_CHECK)
1481#if(CXSC_INDEX_CHECK)
1488#if(CXSC_INDEX_CHECK)
1495#if(CXSC_INDEX_CHECK)
1502#if(CXSC_INDEX_CHECK)
1509#if(CXSC_INDEX_CHECK)
1517#if(CXSC_INDEX_CHECK)
1524#if(CXSC_INDEX_CHECK)
1531#if(CXSC_INDEX_CHECK)
1538#if(CXSC_INDEX_CHECK)
1545#if(CXSC_INDEX_CHECK)
1552#if(CXSC_INDEX_CHECK)
1559#if(CXSC_INDEX_CHECK)
1566#if(CXSC_INDEX_CHECK)
1571 INLINE
operator void*()
noexcept;
1610 INLINE ivector
_ivector(
const interval &r)
noexcept;
1614 INLINE ivector
_ivector(
const real &r)
noexcept;
1616 INLINE ivector
_ivector(
const rvector_slice &rs)
noexcept;
1618 INLINE ivector
_ivector(
const rvector &rs)
noexcept;
1622 INLINE ivector
_ivector(
const rmatrix_subv &rs)
noexcept;
1625 INLINE ivector &SetInf(ivector &iv,
const rvector &rv)
1626#if(CXSC_INDEX_CHECK)
1632 INLINE ivector_slice &SetInf(ivector_slice &iv,
const rvector &rv)
1633#if(CXSC_INDEX_CHECK)
1639 INLINE ivector &SetInf(ivector &iv,
const rvector_slice &rv)
1640#if(CXSC_INDEX_CHECK)
1646 INLINE ivector_slice &SetInf(ivector_slice &iv,
const rvector_slice &rv)
1647#if(CXSC_INDEX_CHECK)
1653 INLINE ivector &UncheckedSetInf(ivector &iv,
const rvector &rv)
1654#if(CXSC_INDEX_CHECK)
1660 INLINE ivector_slice &UncheckedSetInf(ivector_slice &iv,
const rvector &rv)
1661#if(CXSC_INDEX_CHECK)
1667 INLINE ivector &UncheckedSetInf(ivector &iv,
const rvector_slice &rv)
1668#if(CXSC_INDEX_CHECK)
1674 INLINE ivector_slice &UncheckedSetInf(ivector_slice &iv,
const rvector_slice &rv)
1675#if(CXSC_INDEX_CHECK)
1682 INLINE ivector &SetSup(ivector &iv,
const rvector &rv)
1683#if(CXSC_INDEX_CHECK)
1689 INLINE ivector_slice &SetSup(ivector_slice &iv,
const rvector &rv)
1690#if(CXSC_INDEX_CHECK)
1696 INLINE ivector &SetSup(ivector &iv,
const rvector_slice &rv)
1697#if(CXSC_INDEX_CHECK)
1703 INLINE ivector_slice &SetSup(ivector_slice &iv,
const rvector_slice &rv)
1704#if(CXSC_INDEX_CHECK)
1710 INLINE ivector &UncheckedSetSup(ivector &iv,
const rvector &rv)
1711#if(CXSC_INDEX_CHECK)
1717 INLINE ivector_slice &UncheckedSetSup(ivector_slice &iv,
const rvector &rv)
1718#if(CXSC_INDEX_CHECK)
1724 INLINE ivector &UncheckedSetSup(ivector &iv,
const rvector_slice &rv)
1725#if(CXSC_INDEX_CHECK)
1731 INLINE ivector_slice &UncheckedSetSup(ivector_slice &iv,
const rvector_slice &rv)
1732#if(CXSC_INDEX_CHECK)
1739 INLINE ivector &SetSup(ivector &iv,
const real &r)
noexcept;
1741 INLINE ivector &SetInf(ivector &iv,
const real &r)
noexcept;
1743 INLINE ivector &UncheckedSetSup(ivector &iv,
const real &r)
noexcept;
1747 INLINE ivector_slice &SetSup(ivector_slice &iv,
const real &r)
noexcept;
1749 INLINE ivector_slice &SetInf(ivector_slice &iv,
const real &r)
noexcept;
1751 INLINE ivector_slice &UncheckedSetSup(ivector_slice &iv,
const real &r)
noexcept;
1753 INLINE ivector_slice &
SetUncheckedInf(ivector_slice &iv,
const real &r)
noexcept;
1756 INLINE
void Resize(ivector &rv)
noexcept;
1758 INLINE
void Resize(ivector &rv,
const int &len)
1759#if(CXSC_INDEX_CHECK)
1765 INLINE
void Resize(ivector &rv,
const int &lb,
const int &ub)
1766#if(CXSC_INDEX_CHECK)
1773 INLINE ivector
abs(
const ivector &rv)
noexcept;
1775 INLINE ivector
abs(
const ivector_slice &sl)
noexcept;
1777 INLINE rvector
absmin(
const ivector &rv)
noexcept;
1779 INLINE rvector
absmax(
const ivector_slice &sl)
noexcept;
1781 INLINE rvector
absmin(
const ivector &rv)
noexcept;
1783 INLINE rvector
absmax(
const ivector_slice &sl)
noexcept;
1785 INLINE rvector
diam(
const ivector &v)
noexcept;
1787 INLINE rvector
diam(
const ivector_slice &v)
noexcept;
1789 INLINE rvector
mid(
const ivector &v)
noexcept;
1791 INLINE rvector
mid(
const ivector_slice &v)
noexcept;
1793 INLINE rvector Inf(
const ivector &v)
noexcept;
1795 INLINE rvector Inf(
const ivector_slice &v)
noexcept;
1797 INLINE rvector Sup(
const ivector &v)
noexcept;
1799 INLINE rvector Sup(
const ivector_slice &v)
noexcept;
1801 INLINE
bool operator !(
const ivector &rv)
noexcept;
1803 INLINE
bool operator !(
const ivector_slice &sl)
noexcept;
1810 INLINE ivector
operator *(
const ivector &rv,
const interval &s)
noexcept;
1812 INLINE ivector
operator *(
const ivector_slice &sl,
const interval &s)
noexcept;
1814 INLINE ivector
operator *(
const interval &s,
const ivector &rv)
noexcept;
1816 INLINE ivector
operator *(
const interval &s,
const ivector_slice &sl)
noexcept;
1818 INLINE ivector &
operator *=(ivector &rv,
const interval &r)
noexcept;
1821 INLINE ivector
operator /(
const ivector &rv,
const interval &s)
noexcept;
1823 INLINE ivector
operator /(
const ivector_slice &sl,
const interval &s)
noexcept;
1825 INLINE ivector &
operator /=(ivector &rv,
const interval &r)
noexcept;
1830 INLINE ivector
operator *(
const ivector &rv,
const real &s)
noexcept;
1832 INLINE ivector
operator *(
const ivector_slice &sl,
const real &s)
noexcept;
1834 INLINE ivector
operator *(
const real &s,
const ivector &rv)
noexcept;
1836 INLINE ivector
operator *(
const real &s,
const ivector_slice &sl)
noexcept;
1838 INLINE ivector &
operator *=(ivector &rv,
const real &r)
noexcept;
1841 INLINE ivector
operator /(
const ivector &rv,
const real &s)
noexcept;
1843 INLINE ivector
operator /(
const ivector_slice &sl,
const real &s)
noexcept;
1845 INLINE ivector &
operator /=(ivector &rv,
const real &r)
noexcept;
1848 INLINE ivector
operator *(
const rvector &rv,
const interval &s)
noexcept;
1850 INLINE ivector
operator *(
const rvector_slice &sl,
const interval &s)
noexcept;
1852 INLINE ivector
operator *(
const interval &s,
const rvector &rv)
noexcept;
1854 INLINE ivector
operator *(
const interval &s,
const rvector_slice &sl)
noexcept;
1857 INLINE ivector
operator /(
const rvector &rv,
const interval &s)
noexcept;
1859 INLINE ivector
operator /(
const rvector_slice &sl,
const interval &s)
noexcept;
1865 INLINE std::ostream &operator <<(std::ostream &s,
const ivector &rv)
noexcept;
1867 INLINE std::ostream &operator <<(std::ostream &o,
const ivector_slice &sl)
noexcept;
1869 INLINE std::istream &operator >>(std::istream &s, ivector &rv)
noexcept;
1871 INLINE std::istream &operator >>(std::istream &s, ivector_slice &rv)
noexcept;
1876 void accumulate(idotprecision &dp,
const ivector &);
1879 void accumulate(idotprecision &dp,
const rvector &);
1882 void accumulate(idotprecision &dp,
const ivector & rv1,
const ivector &rv2)
1883#if(CXSC_INDEX_CHECK)
1889 void accumulate(idotprecision &dp,
const ivector_slice & sl,
const ivector &rv)
1890#if(CXSC_INDEX_CHECK)
1896 void accumulate(idotprecision &dp,
const ivector &rv,
const ivector_slice &sl)
1897#if(CXSC_INDEX_CHECK)
1903 void accumulate(idotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
1904#if(CXSC_INDEX_CHECK)
1910 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
1911#if(CXSC_INDEX_CHECK)
1917 void accumulate(idotprecision &dp,
const ivector_slice & rv1,
const imatrix_subv &rv2)
1918#if(CXSC_INDEX_CHECK)
1924 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector_slice &rv2)
1925#if(CXSC_INDEX_CHECK)
1931 void accumulate(idotprecision &dp,
const ivector_slice & sl1,
const ivector_slice &sl2)
1932#if(CXSC_INDEX_CHECK)
1938 void accumulate(cidotprecision &dp,
const ivector & rv1,
const ivector &rv2)
1939#if(CXSC_INDEX_CHECK)
1945 void accumulate(cidotprecision &dp,
const ivector_slice & sl,
const ivector &rv)
1946#if(CXSC_INDEX_CHECK)
1952 void accumulate(cidotprecision &dp,
const ivector &rv,
const ivector_slice &sl)
1953#if(CXSC_INDEX_CHECK)
1959 void accumulate(cidotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
1960#if(CXSC_INDEX_CHECK)
1966 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
1967#if(CXSC_INDEX_CHECK)
1973 void accumulate(cidotprecision &dp,
const ivector_slice & sl1,
const ivector_slice &sl2)
1974#if(CXSC_INDEX_CHECK)
1981 INLINE interval
operator *(
const ivector & rv1,
const ivector &rv2)
1982#if(CXSC_INDEX_CHECK)
1988 INLINE interval
operator *(
const ivector_slice &sl,
const ivector &rv)
1989#if(CXSC_INDEX_CHECK)
1995 INLINE interval
operator *(
const ivector &rv,
const ivector_slice &sl)
1996#if(CXSC_INDEX_CHECK)
2002 INLINE interval
operator *(
const ivector_slice & sl1,
const ivector_slice &sl2)
2003#if(CXSC_INDEX_CHECK)
2010 INLINE
const ivector &operator +(
const ivector &rv)
noexcept;
2012 INLINE ivector operator +(
const ivector_slice &sl)
noexcept;
2015 INLINE ivector operator +(
const ivector &rv1,
const ivector &rv2)
2016#if(CXSC_INDEX_CHECK)
2022 INLINE ivector operator +(
const ivector &rv,
const ivector_slice &sl)
2023#if(CXSC_INDEX_CHECK)
2029 INLINE ivector operator +(
const ivector_slice &sl,
const ivector &rv)
2030#if(CXSC_INDEX_CHECK)
2036 INLINE ivector operator +(
const ivector_slice &sl1,
const ivector_slice &sl2)
2037#if(CXSC_INDEX_CHECK)
2043 INLINE ivector &
operator +=(ivector &rv1,
const ivector &rv2)
2044#if(CXSC_INDEX_CHECK)
2050 INLINE ivector &
operator +=(ivector &rv,
const ivector_slice &sl)
2051#if(CXSC_INDEX_CHECK)
2058 INLINE ivector operator -(
const ivector &rv)
noexcept;
2060 INLINE ivector operator -(
const ivector_slice &sl)
noexcept;
2062 INLINE ivector operator -(
const ivector &rv1,
const ivector &rv2)
2063#if(CXSC_INDEX_CHECK)
2069 INLINE ivector operator -(
const ivector &rv,
const ivector_slice &sl)
2070#if(CXSC_INDEX_CHECK)
2076 INLINE ivector operator -(
const ivector_slice &sl,
const ivector &rv)
2077#if(CXSC_INDEX_CHECK)
2083 INLINE ivector operator -(
const ivector_slice &sl1,
const ivector_slice &sl2)
2084#if(CXSC_INDEX_CHECK)
2090 INLINE ivector & operator -=(ivector &rv1,
const ivector &rv2)
2091#if(CXSC_INDEX_CHECK)
2097 INLINE ivector &operator -=(ivector &rv,
const ivector_slice &sl)
2098#if(CXSC_INDEX_CHECK)
2105 INLINE ivector operator |(
const ivector &rv1,
const ivector &rv2)
2106#if(CXSC_INDEX_CHECK)
2112 INLINE ivector operator |(
const ivector &rv,
const ivector_slice &sl)
2113#if(CXSC_INDEX_CHECK)
2119 INLINE ivector operator |(
const ivector_slice &sl,
const ivector &rv)
2120#if(CXSC_INDEX_CHECK)
2126 INLINE ivector operator |(
const ivector_slice &sl1,
const ivector_slice &sl2)
2127#if(CXSC_INDEX_CHECK)
2133 INLINE ivector & operator |=(ivector &rv1,
const ivector &rv2)
2134#if(CXSC_INDEX_CHECK)
2140 INLINE ivector &operator |=(ivector &rv,
const ivector_slice &sl)
2141#if(CXSC_INDEX_CHECK)
2148 INLINE ivector operator &(
const ivector &rv1,
const ivector &rv2)
2149#if(CXSC_INDEX_CHECK)
2155 INLINE ivector operator &(
const ivector &rv,
const ivector_slice &sl)
2156#if(CXSC_INDEX_CHECK)
2162 INLINE ivector operator &(
const ivector_slice &sl,
const ivector &rv)
2163#if(CXSC_INDEX_CHECK)
2169 INLINE ivector operator &(
const ivector_slice &sl1,
const ivector_slice &sl2)
2170#if(CXSC_INDEX_CHECK)
2176 INLINE ivector & operator &=(ivector &rv1,
const ivector &rv2)
2177#if(CXSC_INDEX_CHECK)
2183 INLINE ivector &operator &=(ivector &rv,
const ivector_slice &sl)
2184#if(CXSC_INDEX_CHECK)
2191 INLINE
bool operator ==(
const ivector &rv1,
const ivector &rv2)
noexcept;
2193 INLINE
bool operator ==(
const ivector_slice &sl1,
const ivector_slice &sl2)
noexcept;
2195 INLINE
bool operator ==(
const ivector_slice &sl,
const ivector &rv)
noexcept;
2197 INLINE
bool operator ==(
const ivector &rv,
const ivector_slice &sl)
noexcept;
2199 INLINE
bool operator !=(
const ivector &rv1,
const ivector &rv2)
noexcept;
2201 INLINE
bool operator !=(
const ivector_slice &sl1,
const ivector_slice &sl2)
noexcept;
2203 INLINE
bool operator !=(
const ivector_slice &sl,
const ivector &rv)
noexcept;
2205 INLINE
bool operator !=(
const ivector &rv,
const ivector_slice &sl)
noexcept;
2207 INLINE
bool operator <(
const ivector &rv1,
const ivector &rv2)
noexcept;
2209 INLINE
bool operator <(
const ivector_slice &sl1,
const ivector_slice &sl2)
noexcept;
2211 INLINE
bool operator < (
const ivector_slice &sl,
const ivector &rv)
noexcept;
2213 INLINE
bool operator < (
const ivector &rv,
const ivector_slice &sl)
noexcept;
2215 INLINE
bool operator <=(
const ivector &rv1,
const ivector &rv2)
noexcept;
2217 INLINE
bool operator <=(
const ivector_slice &sl1,
const ivector_slice &sl2)
noexcept;
2219 INLINE
bool operator <=(
const ivector_slice &sl,
const ivector &rv)
noexcept;
2221 INLINE
bool operator <=(
const ivector &rv,
const ivector_slice &sl)
noexcept;
2223 INLINE
bool operator >(
const ivector &rv1,
const ivector &rv2)
noexcept;
2225 INLINE
bool operator >(
const ivector_slice &sl1,
const ivector_slice &sl2)
noexcept;
2227 INLINE
bool operator >(
const ivector_slice &sl,
const ivector &rv)
noexcept;
2229 INLINE
bool operator >(
const ivector &rv,
const ivector_slice &sl)
noexcept;
2231 INLINE
bool operator >=(
const ivector &rv1,
const ivector &rv2)
noexcept;
2233 INLINE
bool operator >=(
const ivector_slice &sl1,
const ivector_slice &sl2)
noexcept;
2235 INLINE
bool operator >=(
const ivector_slice &sl,
const ivector &rv)
noexcept;
2237 INLINE
bool operator >=(
const ivector &rv,
const ivector_slice &sl)
noexcept;
2242 void accumulate(idotprecision &dp,
const rvector & rv1,
const ivector &rv2)
2243#if(CXSC_INDEX_CHECK)
2249 void accumulate(idotprecision &dp,
const ivector & rv1,
const rvector &rv2)
2250#if(CXSC_INDEX_CHECK)
2256 void accumulate(idotprecision &dp,
const rvector_slice & sl,
const ivector &rv)
2257#if(CXSC_INDEX_CHECK)
2263 void accumulate(idotprecision &dp,
const ivector_slice &sl,
const rvector &rv)
2264#if(CXSC_INDEX_CHECK)
2270 void accumulate(idotprecision &dp,
const rvector &rv,
const ivector_slice &sl)
2271#if(CXSC_INDEX_CHECK)
2277 void accumulate(idotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2278#if(CXSC_INDEX_CHECK)
2284 void accumulate(idotprecision &dp,
const ivector & rv1,
const rmatrix_subv &rv2)
2285#if(CXSC_INDEX_CHECK)
2291 void accumulate(idotprecision &dp,
const rvector_slice & rv1,
const imatrix_subv &rv2)
2292#if(CXSC_INDEX_CHECK)
2298 void accumulate(idotprecision &dp,
const ivector_slice & rv1,
const rmatrix_subv &rv2)
2299#if(CXSC_INDEX_CHECK)
2305 void accumulate(idotprecision &dp,
const ivector &rv,
const rvector_slice &sl)
2306#if(CXSC_INDEX_CHECK)
2312 void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const ivector &rv2)
2313#if(CXSC_INDEX_CHECK)
2319 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2320#if(CXSC_INDEX_CHECK)
2326 void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const ivector_slice &rv2)
2327#if(CXSC_INDEX_CHECK)
2333 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector_slice &rv2)
2334#if(CXSC_INDEX_CHECK)
2340 void accumulate(idotprecision &dp,
const ivector_slice & sl1,
const rvector_slice &sl2)
2341#if(CXSC_INDEX_CHECK)
2347 void accumulate(idotprecision &dp,
const rvector_slice & sl1,
const ivector_slice &sl2)
2348#if(CXSC_INDEX_CHECK)
2354 void accumulate(cidotprecision &dp,
const rvector & rv1,
const ivector &rv2)
2355#if(CXSC_INDEX_CHECK)
2361 void accumulate(cidotprecision &dp,
const ivector & rv1,
const rvector &rv2)
2362#if(CXSC_INDEX_CHECK)
2368 void accumulate(cidotprecision &dp,
const rvector_slice & sl,
const ivector &rv)
2369#if(CXSC_INDEX_CHECK)
2375 void accumulate(cidotprecision &dp,
const ivector_slice &sl,
const rvector &rv)
2376#if(CXSC_INDEX_CHECK)
2382 void accumulate(cidotprecision &dp,
const rvector &rv,
const ivector_slice &sl)
2383#if(CXSC_INDEX_CHECK)
2389 void accumulate(cidotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2390#if(CXSC_INDEX_CHECK)
2396 void accumulate(cidotprecision &dp,
const ivector & rv1,
const rmatrix_subv &rv2)
2397#if(CXSC_INDEX_CHECK)
2403 void accumulate(cidotprecision &dp,
const rvector_slice & rv1,
const imatrix_subv &rv2)
2404#if(CXSC_INDEX_CHECK)
2410 void accumulate(cidotprecision &dp,
const ivector_slice & rv1,
const rmatrix_subv &rv2)
2411#if(CXSC_INDEX_CHECK)
2417 void accumulate(cidotprecision &dp,
const ivector &rv,
const rvector_slice &sl)
2418#if(CXSC_INDEX_CHECK)
2424 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const ivector &rv2)
2425#if(CXSC_INDEX_CHECK)
2431 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2432#if(CXSC_INDEX_CHECK)
2438 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const ivector_slice &rv2)
2439#if(CXSC_INDEX_CHECK)
2445 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector_slice &rv2)
2446#if(CXSC_INDEX_CHECK)
2452 void accumulate(cidotprecision &dp,
const ivector_slice & sl1,
const rvector_slice &sl2)
2453#if(CXSC_INDEX_CHECK)
2459 void accumulate(cidotprecision &dp,
const rvector_slice & sl1,
const ivector_slice &sl2)
2460#if(CXSC_INDEX_CHECK)
2467 INLINE interval
operator *(
const rvector & rv1,
const ivector &rv2)
2468#if(CXSC_INDEX_CHECK)
2474 INLINE interval
operator *(
const rvector_slice &sl,
const ivector &rv)
2475#if(CXSC_INDEX_CHECK)
2481 INLINE interval
operator *(
const rvector &rv,
const ivector_slice &sl)
2482#if(CXSC_INDEX_CHECK)
2488 INLINE interval
operator *(
const rvector_slice & sl1,
const ivector_slice &sl2)
2489#if(CXSC_INDEX_CHECK)
2496 INLINE interval
operator *(
const ivector & rv1,
const rvector &rv2)
2497#if(CXSC_INDEX_CHECK)
2503 INLINE interval
operator *(
const ivector_slice &sl,
const rvector &rv)
2504#if(CXSC_INDEX_CHECK)
2510 INLINE interval
operator *(
const ivector &rv,
const rvector_slice &sl)
2511#if(CXSC_INDEX_CHECK)
2517 INLINE interval
operator *(
const ivector_slice & sl1,
const rvector_slice &sl2)
2518#if(CXSC_INDEX_CHECK)
2525 INLINE ivector operator +(
const rvector &rv1,
const ivector &rv2)
2526#if(CXSC_INDEX_CHECK)
2532 INLINE ivector operator +(
const rvector &rv,
const ivector_slice &sl)
2533#if(CXSC_INDEX_CHECK)
2539 INLINE ivector operator +(
const rvector_slice &sl,
const ivector &rv)
2540#if(CXSC_INDEX_CHECK)
2546 INLINE ivector operator +(
const rvector_slice &sl1,
const ivector_slice &sl2)
2547#if(CXSC_INDEX_CHECK)
2554 INLINE ivector operator +(
const ivector &rv1,
const rvector &rv2)
2555#if(CXSC_INDEX_CHECK)
2561 INLINE ivector operator +(
const ivector &rv,
const rvector_slice &sl)
2562#if(CXSC_INDEX_CHECK)
2568 INLINE ivector operator +(
const ivector_slice &sl,
const rvector &rv)
2569#if(CXSC_INDEX_CHECK)
2575 INLINE ivector operator +(
const ivector_slice &sl1,
const rvector_slice &sl2)
2576#if(CXSC_INDEX_CHECK)
2583 INLINE ivector &
operator +=(ivector &rv1,
const rvector &rv2)
2584#if(CXSC_INDEX_CHECK)
2590 INLINE ivector &
operator +=(ivector &rv,
const rvector_slice &sl)
2591#if(CXSC_INDEX_CHECK)
2598 INLINE ivector operator -(
const rvector &rv1,
const ivector &rv2)
2599#if(CXSC_INDEX_CHECK)
2605 INLINE ivector operator -(
const rvector &rv,
const ivector_slice &sl)
2606#if(CXSC_INDEX_CHECK)
2612 INLINE ivector operator -(
const rvector_slice &sl,
const ivector &rv)
2613#if(CXSC_INDEX_CHECK)
2619 INLINE ivector operator -(
const rvector_slice &sl1,
const ivector_slice &sl2)
2620#if(CXSC_INDEX_CHECK)
2627 INLINE ivector operator -(
const ivector &rv1,
const rvector &rv2)
2628#if(CXSC_INDEX_CHECK)
2634 INLINE ivector operator -(
const ivector &rv,
const rvector_slice &sl)
2635#if(CXSC_INDEX_CHECK)
2641 INLINE ivector operator -(
const ivector_slice &sl,
const rvector &rv)
2642#if(CXSC_INDEX_CHECK)
2648 INLINE ivector operator -(
const ivector_slice &sl1,
const rvector_slice &sl2)
2649#if(CXSC_INDEX_CHECK)
2656 INLINE ivector & operator -=(ivector &rv1,
const rvector &rv2)
2657#if(CXSC_INDEX_CHECK)
2663 INLINE ivector &operator -=(ivector &rv,
const rvector_slice &sl)
2664#if(CXSC_INDEX_CHECK)
2671 INLINE ivector operator |(
const rvector &rv1,
const rvector &rv2)
2672#if(CXSC_INDEX_CHECK)
2678 INLINE ivector operator |(
const rvector &rv,
const rvector_slice &sl)
2679#if(CXSC_INDEX_CHECK)
2685 INLINE ivector operator |(
const rvector_slice &sl,
const rvector &rv)
2686#if(CXSC_INDEX_CHECK)
2692 INLINE ivector operator |(
const rvector_slice &sl1,
const rvector_slice &sl2)
2693#if(CXSC_INDEX_CHECK)
2699 INLINE ivector operator |(
const rvector &rv1,
const ivector &rv2)
2700#if(CXSC_INDEX_CHECK)
2706 INLINE ivector operator |(
const rvector &rv,
const ivector_slice &sl)
2707#if(CXSC_INDEX_CHECK)
2713 INLINE ivector operator |(
const rvector_slice &sl,
const ivector &rv)
2714#if(CXSC_INDEX_CHECK)
2720 INLINE ivector operator |(
const rvector_slice &sl1,
const ivector_slice &sl2)
2721#if(CXSC_INDEX_CHECK)
2728 INLINE ivector operator |(
const ivector &rv1,
const rvector &rv2)
2729#if(CXSC_INDEX_CHECK)
2735 INLINE ivector operator |(
const ivector &rv,
const rvector_slice &sl)
2736#if(CXSC_INDEX_CHECK)
2742 INLINE ivector operator |(
const ivector_slice &sl,
const rvector &rv)
2743#if(CXSC_INDEX_CHECK)
2749 INLINE ivector operator |(
const ivector_slice &sl1,
const rvector_slice &sl2)
2750#if(CXSC_INDEX_CHECK)
2757 INLINE ivector & operator |=(ivector &rv1,
const rvector &rv2)
2758#if(CXSC_INDEX_CHECK)
2764 INLINE ivector &operator |=(ivector &rv,
const rvector_slice &sl)
2765#if(CXSC_INDEX_CHECK)
2772 INLINE ivector operator &(
const rvector &rv1,
const ivector &rv2)
2773#if(CXSC_INDEX_CHECK)
2779 INLINE ivector operator &(
const rvector &rv,
const ivector_slice &sl)
2780#if(CXSC_INDEX_CHECK)
2786 INLINE ivector operator &(
const rvector_slice &sl,
const ivector &rv)
2787#if(CXSC_INDEX_CHECK)
2793 INLINE ivector operator &(
const rvector_slice &sl1,
const ivector_slice &sl2)
2794#if(CXSC_INDEX_CHECK)
2801 INLINE ivector operator &(
const ivector &rv1,
const rvector &rv2)
2802#if(CXSC_INDEX_CHECK)
2808 INLINE ivector operator &(
const ivector &rv,
const rvector_slice &sl)
2809#if(CXSC_INDEX_CHECK)
2815 INLINE ivector operator &(
const ivector_slice &sl,
const rvector &rv)
2816#if(CXSC_INDEX_CHECK)
2822 INLINE ivector operator &(
const ivector_slice &sl1,
const rvector_slice &sl2)
2823#if(CXSC_INDEX_CHECK)
2830 INLINE ivector & operator &=(ivector &rv1,
const rvector &rv2)
2831#if(CXSC_INDEX_CHECK)
2837 INLINE ivector &operator &=(ivector &rv,
const rvector_slice &sl)
2838#if(CXSC_INDEX_CHECK)
2845extern int in (
const ivector&,
const ivector& );
2847extern int in (
int, ivector& );
2849extern ivector
Blow (
const ivector&, real );
2851extern int Disjoint ( ivector&, ivector& );
2853extern int Zero ( ivector& );
2855extern rvector
mid ( ivector& );
2859extern real
MaxRelDiam (
const ivector_slice& );
2861extern int UlpAcc ( ivector&,
int );
2868#ifdef _CXSC_INCL_INL
2869#include "vector.inl"
2870#include "ivector.inl"
2873#ifdef _CXSC_RMATRIX_HPP_INCLUDED
2874# ifdef _CXSC_INCL_INL
2875# include "ivecrmat.inl"
2877# include "ivecrmat.hpp"
2881#ifdef _CXSC_CMATRIX_HPP_INCLUDED
2882# ifdef _CXSC_INCL_INL
2883# include "iveccmat.inl"
2885# include "iveccmat.hpp"
2889#ifdef _CXSC_LRMATRIX_HPP_INCLUDED
2890# ifdef _CXSC_INCL_INL
2891# include "iveclrmat.inl"
2893# include "iveclrmat.hpp"
2897#ifdef _CXSC_CVECTOR_HPP_INCLUDED
2898# ifdef _CXSC_INCL_INL
2899# include "iveccvec.inl"
2901# include "iveccvec.hpp"
2905#ifdef _CXSC_LRVECTOR_HPP_INCLUDED
2906# ifdef _CXSC_INCL_INL
2907# include "lrvecivec.inl"
2909# include "lrvecivec.hpp"
2914#define _CXSC_BLAS_IVECTOR
2915#include "cxsc_blas.inl"
The Data Type imatrix_slice.
The Data Type imatrix_subv.
The Scalar Type interval.
interval()
Constructor of class interval.
The Data Type ivector_slice.
interval & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector (read-only)
ivector_slice(const ivector_slice &a) noexcept
Constructor of class ivector_slice.
ivector_slice & operator|=(const ivector &rv) noexcept
Allocates the convex hull of the arguments to the first argument.
ivector_slice & operator+=(const ivector &rv) noexcept
Implementation of addition and allocation operation.
ivector_slice & operator-=(const ivector &rv) noexcept
Implementation of subtraction and allocation operation.
ivector_slice & operator*=(const interval &r) noexcept
Implementation of multiplication and allocation operation.
ivector_slice & operator=(const sivector &sl)
Implementation of standard assigning operator.
ivector_slice & operator/=(const interval &r) noexcept
Implementation of division and allocation operation.
ivector_slice(ivector_slice &a, const int &lb, const int &ub) noexcept
Constructor of class ivector_slice.
friend int Lb(const ivector_slice &sl) noexcept
Returns the lower bound of the vector.
friend int VecLen(const ivector_slice &sl) noexcept
Returns the dimension of the vector.
ivector_slice & operator&=(const ivector &rv) noexcept
Allocates the intersection of the arguments to the first argument.
friend int Ub(const ivector_slice &sl) noexcept
Returns the upper bound of the vector.
ivector_slice & operator()() noexcept
Operator for accessing the whole vector.
ivector_slice(ivector &a, const int &lb, const int &ub) noexcept
Constructor of class ivector_slice.
friend ivector & SetUb(ivector &rv, const int &u) noexcept
Sets the upper bound of the vector.
friend ivector & SetLb(ivector &rv, const int &l) noexcept
Sets the lower bound of the vector.
ivector & operator|=(const srvector &)
Implementation of assignment and hull operator
ivector & operator-=(const srvector &)
Implementation of assignment and substraction operator
ivector & operator&=(const sivector &)
Implementation of assignment and intersection operator
friend int Ub(const ivector &rv) noexcept
Returns the upper bound of the vector.
ivector & operator=(const ivector &rv) noexcept
Implementation of standard assigning operator.
friend int Lb(const ivector &rv) noexcept
Returns the lower bound of the vector.
ivector & operator()() noexcept
Operator for accessing the whole vector.
ivector & operator+=(const srvector &)
Implementation of assignment and addition operator
ivector() noexcept
Constructor of class ivector.
interval & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector (read-only)
friend int VecLen(const ivector &rv) noexcept
Returns the dimension of the vector.
The Multiple-Precision Data Type l_imatrix.
The Multiple-Precision Data Type l_ivector.
The Data Type rmatrix_slice.
The Data Type rmatrix_subv.
The Data Type rvector_slice.
Helper class for slices of sparse vectors.
A sparse interval vector.
Helper class for slices of sparse vectors.
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.
int Disjoint(const interval &a, const interval &b)
Checks arguments for disjointness.
INLINE ivector _ivector(const rmatrix &sl) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
real MaxRelDiam(const imatrix_subv &v)
Computes the relative diameter .
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
cvector diam(const cimatrix_subv &mv) noexcept
Returns the diameter of the matrix.
int UlpAcc(const interval &x, int n)
Checks if the diameter of the interval is ulps.
rvector absmax(const imatrix_subv &mv) noexcept
Returns the absolute maximum value of the matrix.
int in(const cinterval &x, const cinterval &y)
Checks if first argument is part of second argument.
rvector absmin(const imatrix_subv &mv) noexcept
Returns the absolute minimum value of the matrix.
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.
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle 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_subv & SetUncheckedInf(cimatrix_subv &iv, const complex &r) noexcept
Returns the matrix with the new unchecked given infimum value.
int Zero(ivector &x)
Checks if vector is zero vector.
cinterval Blow(cinterval x, const real &eps)
Performs an epsilon inflation.
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.