26#ifndef _CXSC_CVECTOR_HPP_INCLUDED
27#define _CXSC_CVECTOR_HPP_INCLUDED
29#include "xscclass.hpp"
69 double* to_blas_array()
const {
return (
double*)dat; }
71#ifdef _CXSC_FRIEND_TPL
74template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
80template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
86 template <
class V>
friend void _vresize(V &rv)
noexcept;
87 template <
class V,
class S>
friend void _vresize(V &rv,
const int &len)
93 template <
class V,
class S>
friend void _vresize(V &rv,
const int &lb,
const int &ub)
99 template <
class V1,
class V2,
class S>
friend V1 &_vvassign(V1 &rv1,
const V2 &rv2)
noexcept;
100 template <
class V,
class S>
friend V & _vsassign(V &rv,
const S &r)
noexcept;
101 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
noexcept;
102 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
108template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
114template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
noexcept;
115 template <
class V>
friend V _vconj(
const V &rv)
noexcept;
116 template <
class VS,
class E>
friend E _vsconj(
const VS &sl)
noexcept;
117 template <
class V,
class E>
friend E _vabs(
const V &rv)
noexcept;
118 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
noexcept;
119template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
noexcept;
120 template <
class V,
class E>
friend E _vim(
const V &rv)
noexcept;
121 template <
class V,
class E>
friend E _vre(
const V &rv)
noexcept;
122 template <
class V1,
class V2>
friend V1 &_vvsetim(V1 &rv1,
const V2 &rv2)
128 template <
class V1,
class V2>
friend V1 &_vvsetre(V1 &rv1,
const V2 &rv2)
134 template <
class V,
class VS>
friend V &_vvssetim(V &rv,
const VS &sl)
140 template <
class V,
class VS>
friend V &_vvssetre(V &rv,
const VS &sl)
146template <
class V,
class MV>
friend V &_vmvsetim(V &rv,
const MV &v)
152template <
class V,
class MV>
friend V &_vmvsetre(V &rv,
const MV &v)
158 template <
class V,
class S>
friend V &_vssetre(V &v,
const S &s)
noexcept;
159 template <
class V,
class S>
friend V &_vssetim(V &v,
const S &s)
noexcept;
162 template <
class DP,
class V1,
class V2>
friend void _vvaccu(DP &dp,
const V1 & rv1,
const V2 &rv2)
168 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
174 template <
class V1,
class V2,
class E>
friend E _vvcmult(
const V1 & rv1,
const V2 &rv2)
180 template <
class VS,
class V,
class E>
friend E _vsvcmult(
const VS & sl,
const V &rv)
186 template <
class V,
class S>
friend V &_vsmultassign(V &rv,
const S &r)
noexcept;
187 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
193 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
199 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
205 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
211 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
217 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
223 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
229 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
235 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
241 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
247 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
253 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
259 template <
class V>
friend V _vminus(
const V &rv)
noexcept;
260 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
noexcept;
261 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
267 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
273 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
279 template <
class V,
class MV,
class S>
friend S _vmvcmult(
const V &rv1,
const MV &rv2)
285 template <
class V,
class MV,
class S>
friend S _vmvcimult(
const V &rv1,
const MV &rv2)
291 template <
class V1,
class V2,
class E>
friend E _vvconv(
const V1 &rv1,
const V2 &rv2)
297 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
303 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
310 template <
class V,
class S,
class E>
friend E _vsdiv(
const V &rv,
const S &s)
noexcept;
311 template <
class V,
class S>
friend V &_vsdivassign(V &rv,
const S &r)
noexcept;
312 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
noexcept;
313 template <
class V,
class S,
class E>
friend E _vsmult(
const V &rv,
const S &s)
noexcept;
314 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
noexcept;
315 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
noexcept;
316 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
322 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
328 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
334 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
340 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
346template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
352template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
358 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
noexcept;
359template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
365template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
372 template <
class V1,
class V2>
friend bool _vveq(
const V1 &rv1,
const V2 &rv2)
noexcept;
373 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
noexcept;
374 template <
class V1,
class V2>
friend bool _vvneq(
const V1 &rv1,
const V2 &rv2)
noexcept;
375 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
noexcept;
376 template <
class V1,
class V2>
friend bool _vvless(
const V1 &rv1,
const V2 &rv2)
noexcept;
377 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
noexcept;
378 template <
class V1,
class V2>
friend bool _vvleq(
const V1 &rv1,
const V2 &rv2)
noexcept;
379 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
noexcept;
380 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
noexcept;
381 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
noexcept;
382 template <
class V>
friend bool _vnot(
const V &rv)
noexcept;
383 template <
class V>
friend void *_vvoid(
const V &rv)
noexcept;
384 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
385 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
386 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
387 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
388 template <
class VS>
friend bool _vsnot(
const VS &sl)
noexcept;
389 template <
class VS>
friend void *_vsvoid(
const VS &sl)
noexcept;
390 template <
class V>
friend std::ostream &_vout(std::ostream &s,
const V &rv)
noexcept;
391 template <
class V>
friend std::istream &_vin(std::istream &s, V &rv)
noexcept;
394template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
noexcept;
395 template <
class M,
class V,
class E>
friend E _mvcmult(
const M &m,
const V &v)
401 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
407 template <
class V,
class M,
class E>
friend E _vmcmult(
const V &v,
const M &m)
413 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
419 template <
class V,
class M,
class S>
friend V &_vmcmultassign(V &v,
const M &m)
425 template <
class V,
class M,
class S>
friend V &_vmcimultassign(V &v,
const M &m)
431 template <
class MS,
class V,
class E>
friend E _msvcmult(
const MS &ms,
const V &v)
437 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
443 template <
class V,
class MS,
class E>
friend E _vmscmult(
const V &v,
const MS &ms)
449 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
455 template <
class V,
class MS,
class S>
friend V &_vmscmultassign(V &v,
const MS &ms)
461 template <
class V,
class MS,
class S>
friend V &_vmscimultassign(V &v,
const MS &ms)
475 template <
class V1,
class V2,
class E>
friend E _vvcimult(
const V1 & rv1,
const V2 &rv2)
481 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
487 template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
493 template <
class V1,
class V2,
class E>
friend E _vvsect(
const V1 &rv1,
const V2 &rv2)
499 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
505 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
514 template <
class V1,
class V2>
friend V1 &_vvsetinf(V1 &rv1,
const V2 &rv2)
520 template <
class V1,
class V2>
friend V1 &_vvsetsup(V1 &rv1,
const V2 &rv2)
526 template <
class V1,
class V2>
friend V1 &_vvusetinf(V1 &rv1,
const V2 &rv2)
532 template <
class V1,
class V2>
friend V1 &_vvusetsup(V1 &rv1,
const V2 &rv2)
538 template <
class VS,
class V>
friend VS &_vsvsetinf(VS &sl,
const V &rv)
544 template <
class VS,
class V>
friend VS &_vsvsetsup(VS &sl,
const V &rv)
550 template <
class VS,
class V>
friend VS &_vsvusetinf(VS &sl,
const V &rv)
556 template <
class VS,
class V>
friend VS &_vsvusetsup(VS &sl,
const V &rv)
562template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
568template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
574template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
580template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
586 template <
class V,
class E>
friend E _vmid(
const V &rv)
noexcept;
587 template <
class V,
class E>
friend E _vinf(
const V &rv)
noexcept;
588 template <
class V,
class E>
friend E _vsup(
const V &rv)
noexcept;
589 template <
class V,
class E>
friend E _vdiam(
const V &rv)
noexcept;
590 template <
class VS,
class E>
friend E _vsmid(
const VS &sl)
noexcept;
591 template <
class VS,
class E>
friend E _vsinf(
const VS &sl)
noexcept;
592 template <
class VS,
class E>
friend E _vssup(
const VS &sl)
noexcept;
593 template <
class VS,
class E>
friend E _vsdiam(
const VS &sl)
noexcept;
594template <
class MV,
class V>
friend V _mvdiam(
const MV &mv)
noexcept;
595template <
class MV,
class V>
friend V _mvmid(
const MV &mv)
noexcept;
596template <
class MV,
class V>
friend V _mvinf(
const MV &mv)
noexcept;
597template <
class MV,
class V>
friend V _mvsup(
const MV &mv)
noexcept;
600 template <
class V1,
class V2>
friend V1 &_vvconvassign(V1 &rv1,
const V2 &rv2)
606 template <
class V1,
class V2>
friend V1 &_vvsectassign(V1 &rv1,
const V2 &rv2)
612 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
618 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
624template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
630template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
644 explicit cvector(
const int &i)
noexcept;
647 explicit cvector(
const class index &i)
noexcept;
650 explicit cvector(
const int &i1,
const int &i2)
780 INLINE
~cvector() {
delete [] dat; }
791 friend INLINE
int Lb(
const cvector &rv)
noexcept {
return rv.l; }
793 friend INLINE
int Ub(
const cvector &rv)
noexcept {
return rv.u; }
832 operator void*()
noexcept;
857#ifdef _CXSC_FRIEND_TPL
861 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
868 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
noexcept;
870 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
877 template <
class VS,
class S>
friend VS & _vssassign(VS &sl,
const S &r)
noexcept;
879 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
885 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
892 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
noexcept;
893 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
noexcept;
895 template <
class VS,
class V,
class E>
friend E _vsvcmult(
const VS & sl,
const V &rv)
901 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
noexcept;
902 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
noexcept;
903 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
909 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
915 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
921 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
927 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
933 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
939 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
946 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
noexcept;
948 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
954 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
960 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
966 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
972 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
noexcept;
973 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
noexcept;
974 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
noexcept;
975 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
noexcept;
976 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
noexcept;
977 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
noexcept;
978 template <
class VS,
class E>
friend E _vsconj(
const VS &sl)
noexcept;
979 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
noexcept;
981 template <
class VS1,
class VS2,
class E>
friend E _vsvscmult(
const VS1 & sl1,
const VS2 &sl2)
988 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
989 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
990 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
991 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
noexcept;
992 template <
class VS>
friend bool _vsnot(
const VS &sl)
noexcept;
993 template <
class VS>
friend void *_vsvoid(
const VS &sl)
noexcept;
994 template <
class V>
friend std::ostream &_vsout(std::ostream &s,
const V &rv)
noexcept;
995 template <
class V>
friend std::istream &_vsin(std::istream &s, V &rv)
noexcept;
996 template <
class VS,
class E>
friend E _vsim(
const VS &sl)
noexcept;
997 template <
class VS,
class E>
friend E _vsre(
const VS &sl)
noexcept;
998 template <
class VS,
class V>
friend VS &_vsvsetim(VS &sl,
const V &rv)
1004 template <
class VS,
class V>
friend VS &_vsvsetre(VS &sl,
const V &rv)
1005#if(CXSC_INDEX_CHECK)
1010 template <
class VS1,
class VS2>
friend VS1 &_vsvssetim(VS1 &sl1,
const VS2 &sl2)
1011#if(CXSC_INDEX_CHECK)
1016 template <
class VS1,
class VS2>
friend VS1 &_vsvssetre(VS1 &sl1,
const VS2 &sl2)
1017#if(CXSC_INDEX_CHECK)
1033 template <
class VS,
class S>
friend VS &_vsssetim(VS &vs,
const S &s)
noexcept;
1034 template <
class VS,
class S>
friend VS &_vsssetre(VS &vs,
const S &s)
noexcept;
1036 template <
class VS,
class M,
class S>
friend VS &_vsmcmultassign(VS &v,
const M &m)
1037#if(CXSC_INDEX_CHECK)
1044 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
1045#if(CXSC_INDEX_CHECK)
1050 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
1051#if(CXSC_INDEX_CHECK)
1056 template <
class V,
class MS,
class E>
friend E _vmscmult(
const V &v,
const MS &ms)
1057#if(CXSC_INDEX_CHECK)
1063 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
1064#if(CXSC_INDEX_CHECK)
1069 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
1070#if(CXSC_INDEX_CHECK)
1077 template <
class V1,
class V2,
class E>
friend E _vvcimult(
const V1 & rv1,
const V2 &rv2)
1078#if(CXSC_INDEX_CHECK)
1083 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
1084#if(CXSC_INDEX_CHECK)
1089 template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
1090#if(CXSC_INDEX_CHECK)
1095 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
1096#if(CXSC_INDEX_CHECK)
1101 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
1102#if(CXSC_INDEX_CHECK)
1125 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
1126#if(CXSC_INDEX_CHECK)
1131 template <
class V,
class VS>
friend V &_vvssectassign(V &rv,
const VS &sl)
1132#if(CXSC_INDEX_CHECK)
1137 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
1138#if(CXSC_INDEX_CHECK)
1143 template <
class VS1,
class VS2>
friend VS1 &_vsvssectassign(VS1 &sl1,
const VS2 &sl2)
1144#if(CXSC_INDEX_CHECK)
1153 explicit INLINE
cvector_slice(
cvector &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) { }
1155 explicit INLINE
cvector_slice(
cvector_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) { }
1168#if(CXSC_INDEX_CHECK)
1175#if(CXSC_INDEX_CHECK)
1184#if(CXSC_INDEX_CHECK)
1191#if(CXSC_INDEX_CHECK)
1206#if(CXSC_INDEX_CHECK)
1212#if(CXSC_INDEX_CHECK)
1221#if(CXSC_INDEX_CHECK)
1228#if(CXSC_INDEX_CHECK)
1237 template <
class V,
class VS>
friend V &_vvssetinf(V &rv,
const VS &sl)
1238#if(CXSC_INDEX_CHECK)
1243 template <
class V,
class VS>
friend V &_vvssetsup(V &rv,
const VS &sl)
1244#if(CXSC_INDEX_CHECK)
1249 template <
class V,
class VS>
friend V &_vvsusetinf(V &rv,
const VS &sl)
1250#if(CXSC_INDEX_CHECK)
1255 template <
class V,
class VS>
friend V &_vvsusetsup(V &rv,
const VS &sl)
1256#if(CXSC_INDEX_CHECK)
1261 template <
class VS1,
class VS2>
friend VS1 &_vsvssetinf(VS1 &sl1,
const VS2 &sl2)
1262#if(CXSC_INDEX_CHECK)
1267 template <
class VS1,
class VS2>
friend VS1 &_vsvssetsup(VS1 &sl1,
const VS2 &sl2)
1268#if(CXSC_INDEX_CHECK)
1273 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetinf(VS1 &sl1,
const VS2 &sl2)
1274#if(CXSC_INDEX_CHECK)
1279 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetsup(VS1 &sl1,
const VS2 &sl2)
1280#if(CXSC_INDEX_CHECK)
1287 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
1288#if(CXSC_INDEX_CHECK)
1298#if(CXSC_INDEX_CHECK)
1311#if(CXSC_INDEX_CHECK)
1319#if(CXSC_INDEX_CHECK)
1329#if(CXSC_INDEX_CHECK)
1336#if(CXSC_INDEX_CHECK)
1350#if(CXSC_INDEX_CHECK)
1357#if(CXSC_INDEX_CHECK)
1366#if(CXSC_INDEX_CHECK)
1373#if(CXSC_INDEX_CHECK)
1380#if(CXSC_INDEX_CHECK)
1387#if(CXSC_INDEX_CHECK)
1394#if(CXSC_INDEX_CHECK)
1401#if(CXSC_INDEX_CHECK)
1408#if(CXSC_INDEX_CHECK)
1415#if(CXSC_INDEX_CHECK)
1423#if(CXSC_INDEX_CHECK)
1430#if(CXSC_INDEX_CHECK)
1437#if(CXSC_INDEX_CHECK)
1444#if(CXSC_INDEX_CHECK)
1451#if(CXSC_INDEX_CHECK)
1458#if(CXSC_INDEX_CHECK)
1465#if(CXSC_INDEX_CHECK)
1472#if(CXSC_INDEX_CHECK)
1477 INLINE
operator void*()
noexcept;
1512#if(CXSC_INDEX_CHECK)
1519#if(CXSC_INDEX_CHECK)
1526#if(CXSC_INDEX_CHECK)
1533#if(CXSC_INDEX_CHECK)
1541#if(CXSC_INDEX_CHECK)
1548#if(CXSC_INDEX_CHECK)
1555#if(CXSC_INDEX_CHECK)
1562#if(CXSC_INDEX_CHECK)
1581#if(CXSC_INDEX_CHECK)
1587 INLINE
void Resize(
cvector &rv,
const int &lb,
const int &ub)
1588#if(CXSC_INDEX_CHECK)
1612 INLINE
bool operator !(
const cvector &rv)
noexcept;
1676 INLINE std::ostream &operator <<(std::ostream &s,
const cvector &rv)
noexcept;
1678 INLINE std::ostream &operator <<(std::ostream &o,
const cvector_slice &sl)
noexcept;
1680 INLINE std::istream &operator >>(std::istream &s,
cvector &rv)
noexcept;
1682 INLINE std::istream &operator >>(std::istream &s,
cvector_slice &rv)
noexcept;
1694#if(CXSC_INDEX_CHECK)
1705#if(CXSC_INDEX_CHECK)
1716#if(CXSC_INDEX_CHECK)
1727#if(CXSC_INDEX_CHECK)
1738#if(CXSC_INDEX_CHECK)
1749#if(CXSC_INDEX_CHECK)
1760#if(CXSC_INDEX_CHECK)
1771#if(CXSC_INDEX_CHECK)
1778#if(CXSC_INDEX_CHECK)
1785#if(CXSC_INDEX_CHECK)
1792#if(CXSC_INDEX_CHECK)
1799#if(CXSC_INDEX_CHECK)
1806#if(CXSC_INDEX_CHECK)
1813#if(CXSC_INDEX_CHECK)
1822#if(CXSC_INDEX_CHECK)
1829#if(CXSC_INDEX_CHECK)
1836#if(CXSC_INDEX_CHECK)
1843#if(CXSC_INDEX_CHECK)
1856#if(CXSC_INDEX_CHECK)
1863#if(CXSC_INDEX_CHECK)
1870#if(CXSC_INDEX_CHECK)
1877#if(CXSC_INDEX_CHECK)
1884#if(CXSC_INDEX_CHECK)
1891#if(CXSC_INDEX_CHECK)
1903#if(CXSC_INDEX_CHECK)
1910#if(CXSC_INDEX_CHECK)
1917#if(CXSC_INDEX_CHECK)
1924#if(CXSC_INDEX_CHECK)
1931#if(CXSC_INDEX_CHECK)
1938#if(CXSC_INDEX_CHECK)
1945 INLINE
bool operator ==(
const cvector &rv1,
const cvector &rv2)
noexcept;
1953 INLINE
bool operator !=(
const cvector &rv1,
const cvector &rv2)
noexcept;
1982#if(CXSC_INDEX_CHECK)
1994#if(CXSC_INDEX_CHECK)
2005#if(CXSC_INDEX_CHECK)
2016#if(CXSC_INDEX_CHECK)
2027#if(CXSC_INDEX_CHECK)
2038#if(CXSC_INDEX_CHECK)
2049#if(CXSC_INDEX_CHECK)
2060#if(CXSC_INDEX_CHECK)
2071#if(CXSC_INDEX_CHECK)
2082#if(CXSC_INDEX_CHECK)
2093#if(CXSC_INDEX_CHECK)
2104#if(CXSC_INDEX_CHECK)
2115#if(CXSC_INDEX_CHECK)
2126#if(CXSC_INDEX_CHECK)
2137#if(CXSC_INDEX_CHECK)
2148#if(CXSC_INDEX_CHECK)
2159#if(CXSC_INDEX_CHECK)
2170#if(CXSC_INDEX_CHECK)
2181#if(CXSC_INDEX_CHECK)
2188#if(CXSC_INDEX_CHECK)
2195#if(CXSC_INDEX_CHECK)
2202#if(CXSC_INDEX_CHECK)
2209#if(CXSC_INDEX_CHECK)
2216#if(CXSC_INDEX_CHECK)
2223#if(CXSC_INDEX_CHECK)
2230#if(CXSC_INDEX_CHECK)
2237#if(CXSC_INDEX_CHECK)
2244#if(CXSC_INDEX_CHECK)
2251#if(CXSC_INDEX_CHECK)
2258#if(CXSC_INDEX_CHECK)
2265#if(CXSC_INDEX_CHECK)
2272#if(CXSC_INDEX_CHECK)
2279#if(CXSC_INDEX_CHECK)
2286#if(CXSC_INDEX_CHECK)
2293#if(CXSC_INDEX_CHECK)
2300#if(CXSC_INDEX_CHECK)
2307#if(CXSC_INDEX_CHECK)
2314#if(CXSC_INDEX_CHECK)
2321#if(CXSC_INDEX_CHECK)
2328#if(CXSC_INDEX_CHECK)
2335#if(CXSC_INDEX_CHECK)
2342#if(CXSC_INDEX_CHECK)
2349#if(CXSC_INDEX_CHECK)
2356#if(CXSC_INDEX_CHECK)
2364#if(CXSC_INDEX_CHECK)
2371#if(CXSC_INDEX_CHECK)
2378#if(CXSC_INDEX_CHECK)
2385#if(CXSC_INDEX_CHECK)
2393#if(CXSC_INDEX_CHECK)
2400#if(CXSC_INDEX_CHECK)
2407#if(CXSC_INDEX_CHECK)
2414#if(CXSC_INDEX_CHECK)
2422#if(CXSC_INDEX_CHECK)
2429#if(CXSC_INDEX_CHECK)
2436#if(CXSC_INDEX_CHECK)
2443#if(CXSC_INDEX_CHECK)
2451#if(CXSC_INDEX_CHECK)
2458#if(CXSC_INDEX_CHECK)
2465#if(CXSC_INDEX_CHECK)
2472#if(CXSC_INDEX_CHECK)
2480#if(CXSC_INDEX_CHECK)
2487#if(CXSC_INDEX_CHECK)
2495#if(CXSC_INDEX_CHECK)
2502#if(CXSC_INDEX_CHECK)
2509#if(CXSC_INDEX_CHECK)
2516#if(CXSC_INDEX_CHECK)
2524#if(CXSC_INDEX_CHECK)
2531#if(CXSC_INDEX_CHECK)
2538#if(CXSC_INDEX_CHECK)
2545#if(CXSC_INDEX_CHECK)
2552#if(CXSC_INDEX_CHECK)
2559#if(CXSC_INDEX_CHECK)
2567#ifdef _CXSC_INCL_INL
2568#include "vector.inl"
2569#include "cvector.inl"
2572#ifdef _CXSC_RMATRIX_HPP_INCLUDED
2573# ifdef _CXSC_INCL_INL
2574# include "cvecrmat.inl"
2576# include "cvecrmat.hpp"
2580#ifdef _CXSC_IMATRIX_HPP_INCLUDED
2581# ifdef _CXSC_INCL_INL
2582# include "cvecimat.inl"
2584# include "cvecimat.hpp"
2588#ifdef _CXSC_IVECTOR_HPP_INCLUDED
2589# ifdef _CXSC_INCL_INL
2590# include "iveccvec.inl"
2592# include "iveccvec.hpp"
2597#define _CXSC_BLAS_CVECTOR
2598#include "cxsc_blas.inl"
The Data Type cdotprecision.
The Data Type cidotprecision.
The Data Type cmatrix_slice.
The Data Type cmatrix_subv.
complex(void) noexcept
Constructor of class complex.
The Data Type cvector_slice.
friend int Ub(const cvector_slice &sl) noexcept
Returns the upper bound of the vector.
cvector_slice & operator()() noexcept
Operator for accessing the whole vector.
friend int Lb(const cvector_slice &sl) noexcept
Returns the lower bound of the vector.
cvector_slice(cvector &a, const int &lb, const int &ub) noexcept
Constructor of class cvector_slice.
cvector_slice(const cvector_slice &a) noexcept
Constructor of class cvector_slice.
cvector_slice & operator/=(const complex &r) noexcept
Implementation of division and allocation operation.
friend int VecLen(const cvector_slice &sl) noexcept
Returns the dimension of the vector.
cvector_slice & operator-=(const cvector &rv) noexcept
Implementation of subtraction and allocation operation.
cvector_slice(cvector_slice &a, const int &lb, const int &ub) noexcept
Constructor of class cvector_slice.
cvector_slice & operator|=(const cvector &rv) noexcept
Allocates the convex hull of the arguments to the first argument.
cvector_slice & operator+=(const cvector &rv) noexcept
Implementation of addition and allocation operation.
cvector_slice & operator&=(const cvector &rv) noexcept
Allocates the intersection of the arguments to the first argument.
cvector_slice & operator=(const scvector &sl)
Implementation of standard assigning operator.
cvector_slice & operator*=(const complex &r) noexcept
Implementation of multiplication and allocation operation.
complex & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector (read-only)
friend cvector & SetUb(cvector &rv, const int &u) noexcept
Sets the upper bound of the vector.
friend int Lb(const cvector &rv) noexcept
Returns the lower bound of the vector.
cvector() noexcept
Constructor of class cvector.
friend int VecLen(const cvector &rv) noexcept
Returns the dimension of the vector.
cvector & operator=(const cvector &rv) noexcept
Implementation of standard assigning operator.
friend int Ub(const cvector &rv) noexcept
Returns the upper bound of the vector.
cvector & operator()() noexcept
Operator for accessing the whole vector.
complex & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector (read-only)
friend cvector & SetLb(cvector &rv, const int &l) noexcept
Sets the lower bound of the vector.
The Data Type ivector_slice.
The Data Type rmatrix_slice.
The Data Type rmatrix_subv.
The Data Type rvector_slice.
Helper class for slices of sparse vectors.
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.
void accumulate_approx(cdotprecision &dp, const cmatrix_subv &rv1, const cmatrix_subv &rv2)
The accurate scalar product of the last two arguments added to the value of the first argument (witho...
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
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.