26 #ifndef _CXSC_CVECTOR_HPP_INCLUDED
27 #define _CXSC_CVECTOR_HPP_INCLUDED
29 #include "xscclass.hpp"
33 #include "complex.hpp"
35 #include "rvector.hpp"
69 double* to_blas_array()
const {
return (
double*)dat; }
71 #ifdef _CXSC_FRIEND_TPL
74 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
80 template <
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)
103 #if(CXSC_INDEX_CHECK)
108 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
109 #if(CXSC_INDEX_CHECK)
114 template <
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;
119 template <
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)
123 #if(CXSC_INDEX_CHECK)
128 template <
class V1,
class V2>
friend V1 &_vvsetre(V1 &rv1,
const V2 &rv2)
129 #if(CXSC_INDEX_CHECK)
134 template <
class V,
class VS>
friend V &_vvssetim(V &rv,
const VS &sl)
135 #if(CXSC_INDEX_CHECK)
140 template <
class V,
class VS>
friend V &_vvssetre(V &rv,
const VS &sl)
141 #if(CXSC_INDEX_CHECK)
146 template <
class V,
class MV>
friend V &_vmvsetim(V &rv,
const MV &v)
147 #if(CXSC_INDEX_CHECK)
152 template <
class V,
class MV>
friend V &_vmvsetre(V &rv,
const MV &v)
153 #if(CXSC_INDEX_CHECK)
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)
163 #if(CXSC_INDEX_CHECK)
168 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
169 #if(CXSC_INDEX_CHECK)
174 template <
class V1,
class V2,
class E>
friend E _vvcmult(
const V1 & rv1,
const V2 &rv2)
175 #if(CXSC_INDEX_CHECK)
180 template <
class VS,
class V,
class E>
friend E _vsvcmult(
const VS & sl,
const V &rv)
181 #if(CXSC_INDEX_CHECK)
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)
188 #if(CXSC_INDEX_CHECK)
193 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
194 #if(CXSC_INDEX_CHECK)
199 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
200 #if(CXSC_INDEX_CHECK)
205 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
206 #if(CXSC_INDEX_CHECK)
211 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
212 #if(CXSC_INDEX_CHECK)
217 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
218 #if(CXSC_INDEX_CHECK)
223 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
224 #if(CXSC_INDEX_CHECK)
229 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
230 #if(CXSC_INDEX_CHECK)
235 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
236 #if(CXSC_INDEX_CHECK)
241 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
242 #if(CXSC_INDEX_CHECK)
247 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
248 #if(CXSC_INDEX_CHECK)
253 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
254 #if(CXSC_INDEX_CHECK)
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)
262 #if(CXSC_INDEX_CHECK)
267 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
268 #if(CXSC_INDEX_CHECK)
273 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
274 #if(CXSC_INDEX_CHECK)
279 template <
class V,
class MV,
class S>
friend S _vmvcmult(
const V &rv1,
const MV &rv2)
280 #if(CXSC_INDEX_CHECK)
285 template <
class V,
class MV,
class S>
friend S _vmvcimult(
const V &rv1,
const MV &rv2)
286 #if(CXSC_INDEX_CHECK)
291 template <
class V1,
class V2,
class E>
friend E _vvconv(
const V1 &rv1,
const V2 &rv2)
292 #if(CXSC_INDEX_CHECK)
297 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
298 #if(CXSC_INDEX_CHECK)
303 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
304 #if(CXSC_INDEX_CHECK)
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)
317 #if(CXSC_INDEX_CHECK)
322 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
323 #if(CXSC_INDEX_CHECK)
328 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
329 #if(CXSC_INDEX_CHECK)
334 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
335 #if(CXSC_INDEX_CHECK)
340 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
341 #if(CXSC_INDEX_CHECK)
346 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
347 #if(CXSC_INDEX_CHECK)
352 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
353 #if(CXSC_INDEX_CHECK)
358 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s) noexcept;
359 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
360 #if(CXSC_INDEX_CHECK)
365 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
366 #if(CXSC_INDEX_CHECK)
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;
394 template <
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)
396 #if(CXSC_INDEX_CHECK)
401 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
402 #if(CXSC_INDEX_CHECK)
407 template <
class V,
class M,
class E>
friend E _vmcmult(
const V &v,
const M &m)
408 #if(CXSC_INDEX_CHECK)
413 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
414 #if(CXSC_INDEX_CHECK)
419 template <
class V,
class M,
class S>
friend V &_vmcmultassign(V &v,
const M &m)
420 #if(CXSC_INDEX_CHECK)
425 template <
class V,
class M,
class S>
friend V &_vmcimultassign(V &v,
const M &m)
426 #if(CXSC_INDEX_CHECK)
431 template <
class MS,
class V,
class E>
friend E _msvcmult(
const MS &ms,
const V &v)
432 #if(CXSC_INDEX_CHECK)
437 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
438 #if(CXSC_INDEX_CHECK)
443 template <
class V,
class MS,
class E>
friend E _vmscmult(
const V &v,
const MS &ms)
444 #if(CXSC_INDEX_CHECK)
449 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
450 #if(CXSC_INDEX_CHECK)
455 template <
class V,
class MS,
class S>
friend V &_vmscmultassign(V &v,
const MS &ms)
456 #if(CXSC_INDEX_CHECK)
461 template <
class V,
class MS,
class S>
friend V &_vmscimultassign(V &v,
const MS &ms)
462 #if(CXSC_INDEX_CHECK)
475 template <
class V1,
class V2,
class E>
friend E _vvcimult(
const V1 & rv1,
const V2 &rv2)
476 #if(CXSC_INDEX_CHECK)
481 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
482 #if(CXSC_INDEX_CHECK)
487 template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
488 #if(CXSC_INDEX_CHECK)
493 template <
class V1,
class V2,
class E>
friend E _vvsect(
const V1 &rv1,
const V2 &rv2)
494 #if(CXSC_INDEX_CHECK)
499 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
500 #if(CXSC_INDEX_CHECK)
505 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
506 #if(CXSC_INDEX_CHECK)
514 template <
class V1,
class V2>
friend V1 &_vvsetinf(V1 &rv1,
const V2 &rv2)
515 #if(CXSC_INDEX_CHECK)
520 template <
class V1,
class V2>
friend V1 &_vvsetsup(V1 &rv1,
const V2 &rv2)
521 #if(CXSC_INDEX_CHECK)
526 template <
class V1,
class V2>
friend V1 &_vvusetinf(V1 &rv1,
const V2 &rv2)
527 #if(CXSC_INDEX_CHECK)
532 template <
class V1,
class V2>
friend V1 &_vvusetsup(V1 &rv1,
const V2 &rv2)
533 #if(CXSC_INDEX_CHECK)
538 template <
class VS,
class V>
friend VS &_vsvsetinf(VS &sl,
const V &rv)
539 #if(CXSC_INDEX_CHECK)
544 template <
class VS,
class V>
friend VS &_vsvsetsup(VS &sl,
const V &rv)
545 #if(CXSC_INDEX_CHECK)
550 template <
class VS,
class V>
friend VS &_vsvusetinf(VS &sl,
const V &rv)
551 #if(CXSC_INDEX_CHECK)
556 template <
class VS,
class V>
friend VS &_vsvusetsup(VS &sl,
const V &rv)
557 #if(CXSC_INDEX_CHECK)
562 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
563 #if(CXSC_INDEX_CHECK)
568 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
569 #if(CXSC_INDEX_CHECK)
574 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
575 #if(CXSC_INDEX_CHECK)
580 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
581 #if(CXSC_INDEX_CHECK)
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;
594 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv) noexcept;
595 template <
class MV,
class V>
friend V _mvmid(
const MV &mv) noexcept;
596 template <
class MV,
class V>
friend V _mvinf(
const MV &mv) noexcept;
597 template <
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)
601 #if(CXSC_INDEX_CHECK)
606 template <
class V1,
class V2>
friend V1 &_vvsectassign(V1 &rv1,
const V2 &rv2)
607 #if(CXSC_INDEX_CHECK)
612 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
613 #if(CXSC_INDEX_CHECK)
618 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
619 #if(CXSC_INDEX_CHECK)
624 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
625 #if(CXSC_INDEX_CHECK)
630 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
631 #if(CXSC_INDEX_CHECK)
644 explicit cvector(
const int &i) noexcept;
646 explicit cvector(
const class index &i) noexcept;
649 explicit cvector(
const int &i1,
const int &i2)
651 #if(CXSC_INDEX_CHECK)
662 #if(CXSC_INDEX_CHECK)
669 #if(CXSC_INDEX_CHECK)
695 #if(CXSC_INDEX_CHECK)
702 #if(CXSC_INDEX_CHECK)
723 #if(CXSC_INDEX_CHECK)
730 #if(CXSC_INDEX_CHECK)
750 #if(CXSC_INDEX_CHECK)
757 #if(CXSC_INDEX_CHECK)
780 INLINE ~
cvector() {
delete [] dat; }
785 #if(CXSC_INDEX_CHECK)
790 friend INLINE
int Lb(
const cvector &rv) noexcept {
return rv.l; }
793 friend INLINE
int Ub(
const cvector &rv) noexcept {
return rv.u; }
802 #if(CXSC_INDEX_CHECK)
810 #if(CXSC_INDEX_CHECK)
820 #if(CXSC_INDEX_CHECK)
827 #if(CXSC_INDEX_CHECK)
832 operator void*() noexcept;
857 #ifdef _CXSC_FRIEND_TPL
861 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
862 #if(CXSC_INDEX_CHECK)
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)
871 #if(CXSC_INDEX_CHECK)
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)
880 #if(CXSC_INDEX_CHECK)
885 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
886 #if(CXSC_INDEX_CHECK)
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)
896 #if(CXSC_INDEX_CHECK)
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)
904 #if(CXSC_INDEX_CHECK)
909 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
910 #if(CXSC_INDEX_CHECK)
915 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
916 #if(CXSC_INDEX_CHECK)
921 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
922 #if(CXSC_INDEX_CHECK)
927 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
928 #if(CXSC_INDEX_CHECK)
933 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
934 #if(CXSC_INDEX_CHECK)
939 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
940 #if(CXSC_INDEX_CHECK)
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)
949 #if(CXSC_INDEX_CHECK)
954 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
955 #if(CXSC_INDEX_CHECK)
960 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
961 #if(CXSC_INDEX_CHECK)
966 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
967 #if(CXSC_INDEX_CHECK)
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)
982 #if(CXSC_INDEX_CHECK)
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)
999 #if(CXSC_INDEX_CHECK)
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)
1303 friend INLINE
int Lb(
const cvector_slice &sl) noexcept {
return sl.start; }
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;
1496 INLINE cvector _cvector(
const complex &r) noexcept;
1500 INLINE cvector _cvector(
const real &r) noexcept;
1502 INLINE cvector _cvector(
const rvector_slice &rs) noexcept;
1504 INLINE cvector _cvector(
const rvector &rs) noexcept;
1508 INLINE cvector _cvector(
const rmatrix_subv &rs) noexcept;
1511 INLINE cvector &SetRe(cvector &iv,
const rvector &rv)
1512 #if(CXSC_INDEX_CHECK)
1517 INLINE cvector_slice &SetRe(cvector_slice &iv,
const rvector &rv)
1519 #if(CXSC_INDEX_CHECK)
1524 INLINE cvector &SetRe(cvector &iv,
const rvector_slice &rv)
1526 #if(CXSC_INDEX_CHECK)
1531 INLINE cvector_slice &SetRe(cvector_slice &iv,
const rvector_slice &rv)
1533 #if(CXSC_INDEX_CHECK)
1540 INLINE cvector &SetIm(cvector &iv,
const rvector &rv)
1541 #if(CXSC_INDEX_CHECK)
1546 INLINE cvector_slice &SetIm(cvector_slice &iv,
const rvector &rv)
1548 #if(CXSC_INDEX_CHECK)
1553 INLINE cvector &SetIm(cvector &iv,
const rvector_slice &rv)
1555 #if(CXSC_INDEX_CHECK)
1560 INLINE cvector_slice &SetIm(cvector_slice &iv,
const rvector_slice &rv)
1562 #if(CXSC_INDEX_CHECK)
1569 INLINE cvector &SetRe(cvector &iv,
const real &r) noexcept;
1571 INLINE cvector &SetIm(cvector &iv,
const real &r) noexcept;
1573 INLINE cvector_slice &SetRe(cvector_slice &iv,
const real &r) noexcept;
1575 INLINE cvector_slice &SetIm(cvector_slice &iv,
const real &r) noexcept;
1578 INLINE
void Resize(cvector &rv) noexcept;
1580 INLINE
void Resize(cvector &rv,
const int &len)
1581 #if(CXSC_INDEX_CHECK)
1586 INLINE
void Resize(cvector &rv,
const int &lb,
const int &ub)
1588 #if(CXSC_INDEX_CHECK)
1595 INLINE cvector conj(
const cvector &rv) noexcept;
1597 INLINE cvector conj(
const cvector_slice &sl) noexcept;
1600 INLINE rvector
abs(
const cvector &rv) noexcept;
1602 INLINE rvector
abs(
const cvector_slice &sl) noexcept;
1604 INLINE rvector Im(
const cvector &v) noexcept;
1606 INLINE rvector Im(
const cvector_slice &v) noexcept;
1608 INLINE rvector Re(
const cvector &v) noexcept;
1610 INLINE rvector Re(
const cvector_slice &v) noexcept;
1612 INLINE
bool operator !(
const cvector &rv) noexcept;
1614 INLINE
bool operator !(
const cvector_slice &sl) noexcept;
1621 INLINE cvector
operator *(
const cvector &rv,
const complex &s) noexcept;
1623 INLINE cvector
operator *(
const cvector_slice &sl,
const complex &s) noexcept;
1625 INLINE cvector
operator *(
const complex &s,
const cvector &rv) noexcept;
1627 INLINE cvector
operator *(
const complex &s,
const cvector_slice &sl) noexcept;
1629 INLINE cvector &
operator *=(cvector &rv,
const complex &r) noexcept;
1632 INLINE cvector
operator /(
const cvector &rv,
const complex &s) noexcept;
1634 INLINE cvector
operator /(
const cvector_slice &sl,
const complex &s) noexcept;
1636 INLINE cvector &
operator /=(cvector &rv,
const complex &r) noexcept;
1641 INLINE cvector
operator *(
const cvector &rv,
const real &s) noexcept;
1643 INLINE cvector
operator *(
const cvector_slice &sl,
const real &s) noexcept;
1645 INLINE cvector
operator *(
const real &s,
const cvector &rv) noexcept;
1647 INLINE cvector
operator *(
const real &s,
const cvector_slice &sl) noexcept;
1649 INLINE cvector &
operator *=(cvector &rv,
const real &r) noexcept;
1652 INLINE cvector
operator /(
const cvector &rv,
const real &s) noexcept;
1654 INLINE cvector
operator /(
const cvector_slice &sl,
const real &s) noexcept;
1656 INLINE cvector &
operator /=(cvector &rv,
const real &r) noexcept;
1659 INLINE cvector
operator *(
const rvector &rv,
const complex &s) noexcept;
1661 INLINE cvector
operator *(
const rvector_slice &sl,
const complex &s) noexcept;
1663 INLINE cvector
operator *(
const complex &s,
const rvector &rv) noexcept;
1665 INLINE cvector
operator *(
const complex &s,
const rvector_slice &sl) noexcept;
1668 INLINE cvector
operator /(
const rvector &rv,
const complex &s) noexcept;
1670 INLINE cvector
operator /(
const rvector_slice &sl,
const complex &s) 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;
1687 void accumulate(cdotprecision &dp,
const cvector &);
1690 void accumulate(cdotprecision &dp,
const rvector &);
1693 void accumulate(cdotprecision &dp,
const cvector & rv1,
const cvector &rv2)
1694 #if(CXSC_INDEX_CHECK)
1701 void accumulate_approx(cdotprecision &dp,
const cvector & rv1,
const cvector &rv2);
1704 void accumulate(cdotprecision &dp,
const cvector_slice & sl,
const cvector &rv)
1705 #if(CXSC_INDEX_CHECK)
1712 void accumulate_approx(cdotprecision &dp,
const cvector_slice & sl,
const cvector &rv);
1715 void accumulate(cdotprecision &dp,
const cvector &rv,
const cvector_slice &sl)
1716 #if(CXSC_INDEX_CHECK)
1723 void accumulate_approx(cdotprecision &dp,
const cvector &rv,
const cvector_slice &sl);
1726 void accumulate(cdotprecision &dp,
const cvector & rv1,
const cmatrix_subv &rv2)
1727 #if(CXSC_INDEX_CHECK)
1734 void accumulate_approx(cdotprecision &dp,
const cvector & rv1,
const cmatrix_subv &rv2);
1737 void accumulate(cdotprecision &dp,
const cmatrix_subv & rv1,
const cvector &rv2)
1738 #if(CXSC_INDEX_CHECK)
1745 void accumulate_approx(cdotprecision &dp,
const cmatrix_subv & rv1,
const cvector &rv2);
1748 void accumulate(cdotprecision &dp,
const cmatrix_subv & rv1,
const cmatrix_subv &rv2)
1749 #if(CXSC_INDEX_CHECK)
1756 void accumulate_approx(cdotprecision &dp,
const cmatrix_subv & rv1,
const cmatrix_subv &rv2);
1759 void accumulate(cdotprecision &dp,
const cvector_slice & sl1,
const cvector_slice &sl2)
1760 #if(CXSC_INDEX_CHECK)
1767 void accumulate_approx(cdotprecision &dp,
const cvector_slice & sl1,
const cvector_slice &sl2);
1770 void accumulate(cidotprecision &dp,
const cvector & rv1,
const cvector &rv2)
1771 #if(CXSC_INDEX_CHECK)
1776 void accumulate(cidotprecision &dp,
const cvector_slice & sl,
const cvector &rv)
1778 #if(CXSC_INDEX_CHECK)
1783 void accumulate(cidotprecision &dp,
const cvector &rv,
const cvector_slice &sl)
1785 #if(CXSC_INDEX_CHECK)
1790 void accumulate(cidotprecision &dp,
const cvector & rv1,
const cmatrix_subv &rv2)
1792 #if(CXSC_INDEX_CHECK)
1797 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const cvector &rv2)
1799 #if(CXSC_INDEX_CHECK)
1804 void accumulate(cidotprecision &dp,
const cvector_slice & sl1,
const cvector_slice &sl2)
1806 #if(CXSC_INDEX_CHECK)
1811 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const cmatrix_subv &rv2)
1813 #if(CXSC_INDEX_CHECK)
1821 INLINE complex
operator *(
const cvector & rv1,
const cvector &rv2)
1822 #if(CXSC_INDEX_CHECK)
1827 INLINE complex
operator *(
const cvector_slice &sl,
const cvector &rv)
1829 #if(CXSC_INDEX_CHECK)
1834 INLINE complex
operator *(
const cvector &rv,
const cvector_slice &sl)
1836 #if(CXSC_INDEX_CHECK)
1841 INLINE complex
operator *(
const cvector_slice & sl1,
const cvector_slice &sl2)
1843 #if(CXSC_INDEX_CHECK)
1850 INLINE
const cvector &operator +(
const cvector &rv) noexcept;
1852 INLINE cvector operator +(
const cvector_slice &sl) noexcept;
1855 INLINE cvector operator +(
const cvector &rv1,
const cvector &rv2)
1856 #if(CXSC_INDEX_CHECK)
1861 INLINE cvector operator +(
const cvector &rv,
const cvector_slice &sl)
1863 #if(CXSC_INDEX_CHECK)
1868 INLINE cvector operator +(
const cvector_slice &sl,
const cvector &rv)
1870 #if(CXSC_INDEX_CHECK)
1875 INLINE cvector operator +(
const cvector_slice &sl1,
const cvector_slice &sl2)
1877 #if(CXSC_INDEX_CHECK)
1882 INLINE cvector &
operator +=(cvector &rv1,
const cvector &rv2)
1884 #if(CXSC_INDEX_CHECK)
1889 INLINE cvector &
operator +=(cvector &rv,
const cvector_slice &sl)
1891 #if(CXSC_INDEX_CHECK)
1898 INLINE cvector operator -(
const cvector &rv) noexcept;
1900 INLINE cvector operator -(
const cvector_slice &sl) noexcept;
1902 INLINE cvector operator -(
const cvector &rv1,
const cvector &rv2)
1903 #if(CXSC_INDEX_CHECK)
1908 INLINE cvector operator -(
const cvector &rv,
const cvector_slice &sl)
1910 #if(CXSC_INDEX_CHECK)
1915 INLINE cvector operator -(
const cvector_slice &sl,
const cvector &rv)
1917 #if(CXSC_INDEX_CHECK)
1922 INLINE cvector operator -(
const cvector_slice &sl1,
const cvector_slice &sl2)
1924 #if(CXSC_INDEX_CHECK)
1929 INLINE cvector & operator -=(cvector &rv1,
const cvector &rv2)
1931 #if(CXSC_INDEX_CHECK)
1936 INLINE cvector &operator -=(cvector &rv,
const cvector_slice &sl)
1938 #if(CXSC_INDEX_CHECK)
1945 INLINE
bool operator ==(
const cvector &rv1,
const cvector &rv2) noexcept;
1947 INLINE
bool operator ==(
const cvector_slice &sl1,
const cvector_slice &sl2) noexcept;
1949 INLINE
bool operator ==(
const cvector_slice &sl,
const cvector &rv) noexcept;
1951 INLINE
bool operator ==(
const cvector &rv,
const cvector_slice &sl) noexcept;
1953 INLINE
bool operator !=(
const cvector &rv1,
const cvector &rv2) noexcept;
1955 INLINE
bool operator !=(
const cvector_slice &sl1,
const cvector_slice &sl2) noexcept;
1957 INLINE
bool operator !=(
const cvector_slice &sl,
const cvector &rv) noexcept;
1959 INLINE
bool operator !=(
const cvector &rv,
const cvector_slice &sl) noexcept;
1981 void accumulate(cdotprecision &dp,
const cvector & rv1,
const rvector &rv2)
1982 #if(CXSC_INDEX_CHECK)
1989 void accumulate_approx(cdotprecision &dp,
const cvector & rv1,
const rvector &rv2);
1993 void accumulate(cdotprecision &dp,
const rvector & rv1,
const cvector &rv2)
1994 #if(CXSC_INDEX_CHECK)
2001 void accumulate_approx(cdotprecision &dp,
const rvector & rv1,
const cvector &rv2);
2004 void accumulate(cdotprecision &dp,
const rvector_slice & sl,
const cvector &rv)
2005 #if(CXSC_INDEX_CHECK)
2012 void accumulate_approx(cdotprecision &dp,
const rvector_slice & sl,
const cvector &rv);
2015 void accumulate(cdotprecision &dp,
const cvector_slice &sl,
const rvector &rv)
2016 #if(CXSC_INDEX_CHECK)
2023 void accumulate_approx(cdotprecision &dp,
const cvector_slice &sl,
const rvector &rv);
2026 void accumulate(cdotprecision &dp,
const rvector &rv,
const cvector_slice &sl)
2027 #if(CXSC_INDEX_CHECK)
2034 void accumulate_approx(cdotprecision &dp,
const rvector &rv,
const cvector_slice &sl);
2037 void accumulate(cdotprecision &dp,
const rvector & rv1,
const cmatrix_subv &rv2)
2038 #if(CXSC_INDEX_CHECK)
2045 void accumulate_approx(cdotprecision &dp,
const rvector & rv1,
const cmatrix_subv &rv2);
2048 void accumulate(cdotprecision &dp,
const cvector & rv1,
const rmatrix_subv &rv2)
2049 #if(CXSC_INDEX_CHECK)
2056 void accumulate_approx(cdotprecision &dp,
const cvector & rv1,
const rmatrix_subv &rv2);
2059 void accumulate(cdotprecision &dp,
const rvector_slice & rv1,
const cmatrix_subv &rv2)
2060 #if(CXSC_INDEX_CHECK)
2067 void accumulate_approx(cdotprecision &dp,
const rvector_slice & rv1,
const cmatrix_subv &rv2);
2070 void accumulate(cdotprecision &dp,
const cvector_slice & rv1,
const rmatrix_subv &rv2)
2071 #if(CXSC_INDEX_CHECK)
2078 void accumulate_approx(cdotprecision &dp,
const cvector_slice & rv1,
const rmatrix_subv &rv2);
2081 void accumulate(cdotprecision &dp,
const cvector &rv,
const rvector_slice &sl)
2082 #if(CXSC_INDEX_CHECK)
2089 void accumulate_approx(cdotprecision &dp,
const cvector &rv,
const rvector_slice &sl);
2092 void accumulate(cdotprecision &dp,
const rmatrix_subv & rv1,
const cvector &rv2)
2093 #if(CXSC_INDEX_CHECK)
2100 void accumulate_approx(cdotprecision &dp,
const rmatrix_subv & rv1,
const cvector &rv2);
2103 void accumulate(cdotprecision &dp,
const cmatrix_subv & rv1,
const rvector &rv2)
2104 #if(CXSC_INDEX_CHECK)
2111 void accumulate_approx(cdotprecision &dp,
const cmatrix_subv & rv1,
const rvector &rv2);
2114 void accumulate(cdotprecision &dp,
const rmatrix_subv & rv1,
const cvector_slice &rv2)
2115 #if(CXSC_INDEX_CHECK)
2122 void accumulate_approx(cdotprecision &dp,
const rmatrix_subv & rv1,
const cvector_slice &rv2);
2125 void accumulate(cdotprecision &dp,
const cmatrix_subv & rv1,
const rvector_slice &rv2)
2126 #if(CXSC_INDEX_CHECK)
2133 void accumulate_approx(cdotprecision &dp,
const cmatrix_subv & rv1,
const rvector_slice &rv2);
2136 void accumulate(cdotprecision &dp,
const cvector_slice & sl1,
const rvector_slice &sl2)
2137 #if(CXSC_INDEX_CHECK)
2144 void accumulate_approx(cdotprecision &dp,
const cvector_slice & sl1,
const rvector_slice &sl2);
2147 void accumulate(cdotprecision &dp,
const rvector_slice & sl1,
const cvector_slice &sl2)
2148 #if(CXSC_INDEX_CHECK)
2155 void accumulate_approx(cdotprecision &dp,
const rvector_slice & sl1,
const cvector_slice &sl2);
2158 void accumulate(cdotprecision &dp,
const rmatrix_subv & rv1,
const cmatrix_subv &rv2)
2159 #if(CXSC_INDEX_CHECK)
2166 void accumulate_approx(cdotprecision &dp,
const rmatrix_subv & rv1,
const cmatrix_subv &rv2);
2169 void accumulate(cdotprecision &dp,
const cmatrix_subv & rv1,
const rmatrix_subv &rv2)
2170 #if(CXSC_INDEX_CHECK)
2177 void accumulate_approx(cdotprecision &dp,
const cmatrix_subv & rv1,
const rmatrix_subv &rv2);
2180 void accumulate(cidotprecision &dp,
const cvector & rv1,
const rvector &rv2)
2181 #if(CXSC_INDEX_CHECK)
2186 void accumulate(cidotprecision &dp,
const rvector & rv1,
const cvector &rv2)
2188 #if(CXSC_INDEX_CHECK)
2193 void accumulate(cidotprecision &dp,
const rvector_slice & sl,
const cvector &rv)
2195 #if(CXSC_INDEX_CHECK)
2200 void accumulate(cidotprecision &dp,
const cvector_slice &sl,
const rvector &rv)
2202 #if(CXSC_INDEX_CHECK)
2207 void accumulate(cidotprecision &dp,
const rvector &rv,
const cvector_slice &sl)
2209 #if(CXSC_INDEX_CHECK)
2214 void accumulate(cidotprecision &dp,
const rvector & rv1,
const cmatrix_subv &rv2)
2216 #if(CXSC_INDEX_CHECK)
2221 void accumulate(cidotprecision &dp,
const cvector & rv1,
const rmatrix_subv &rv2)
2223 #if(CXSC_INDEX_CHECK)
2228 void accumulate(cidotprecision &dp,
const rvector_slice & rv1,
const cmatrix_subv &rv2)
2230 #if(CXSC_INDEX_CHECK)
2235 void accumulate(cidotprecision &dp,
const cvector_slice & rv1,
const rmatrix_subv &rv2)
2237 #if(CXSC_INDEX_CHECK)
2242 void accumulate(cidotprecision &dp,
const cvector &rv,
const rvector_slice &sl)
2244 #if(CXSC_INDEX_CHECK)
2249 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const cvector &rv2)
2251 #if(CXSC_INDEX_CHECK)
2256 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const rvector &rv2)
2258 #if(CXSC_INDEX_CHECK)
2263 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const cvector_slice &rv2)
2265 #if(CXSC_INDEX_CHECK)
2270 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const rvector_slice &rv2)
2272 #if(CXSC_INDEX_CHECK)
2277 void accumulate(cidotprecision &dp,
const cvector_slice & sl1,
const rvector_slice &sl2)
2279 #if(CXSC_INDEX_CHECK)
2284 void accumulate(cidotprecision &dp,
const rvector_slice & sl1,
const cvector_slice &sl2)
2286 #if(CXSC_INDEX_CHECK)
2291 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const cmatrix_subv &rv2)
2293 #if(CXSC_INDEX_CHECK)
2298 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const rmatrix_subv &rv2)
2300 #if(CXSC_INDEX_CHECK)
2305 void accumulate(cidotprecision &dp,
const cvector_slice &,
const ivector &)
2307 #if(CXSC_INDEX_CHECK)
2312 void accumulate(cidotprecision &dp,
const ivector & sl1,
const cvector_slice &)
2314 #if(CXSC_INDEX_CHECK)
2319 void accumulate(cidotprecision &dp,
const cvector &,
const ivector &)
2321 #if(CXSC_INDEX_CHECK)
2326 void accumulate(cidotprecision &dp,
const ivector &,
const cvector &)
2328 #if(CXSC_INDEX_CHECK)
2333 void accumulate(cidotprecision &dp,
const ivector_slice &,
const cvector &)
2335 #if(CXSC_INDEX_CHECK)
2340 void accumulate(cidotprecision &dp,
const cvector &,
const ivector_slice &)
2342 #if(CXSC_INDEX_CHECK)
2347 void accumulate(cidotprecision &dp,
const cvector_slice &,
const ivector_slice &)
2349 #if(CXSC_INDEX_CHECK)
2354 void accumulate(cidotprecision &dp,
const ivector_slice &,
const cvector_slice &)
2356 #if(CXSC_INDEX_CHECK)
2363 INLINE complex
operator *(
const rvector & rv1,
const cvector &rv2)
2364 #if(CXSC_INDEX_CHECK)
2369 INLINE complex
operator *(
const rvector_slice &sl,
const cvector &rv)
2371 #if(CXSC_INDEX_CHECK)
2376 INLINE complex
operator *(
const rvector &rv,
const cvector_slice &sl)
2378 #if(CXSC_INDEX_CHECK)
2383 INLINE complex
operator *(
const rvector_slice & sl1,
const cvector_slice &sl2)
2385 #if(CXSC_INDEX_CHECK)
2392 INLINE complex
operator *(
const cvector & rv1,
const rvector &rv2)
2393 #if(CXSC_INDEX_CHECK)
2398 INLINE complex
operator *(
const cvector_slice &sl,
const rvector &rv)
2400 #if(CXSC_INDEX_CHECK)
2405 INLINE complex
operator *(
const cvector &rv,
const rvector_slice &sl)
2407 #if(CXSC_INDEX_CHECK)
2412 INLINE complex
operator *(
const cvector_slice & sl1,
const rvector_slice &sl2)
2414 #if(CXSC_INDEX_CHECK)
2421 INLINE cvector operator +(
const rvector &rv1,
const cvector &rv2)
2422 #if(CXSC_INDEX_CHECK)
2427 INLINE cvector operator +(
const rvector &rv,
const cvector_slice &sl)
2429 #if(CXSC_INDEX_CHECK)
2434 INLINE cvector operator +(
const rvector_slice &sl,
const cvector &rv)
2436 #if(CXSC_INDEX_CHECK)
2441 INLINE cvector operator +(
const rvector_slice &sl1,
const cvector_slice &sl2)
2443 #if(CXSC_INDEX_CHECK)
2450 INLINE cvector operator +(
const cvector &rv1,
const rvector &rv2)
2451 #if(CXSC_INDEX_CHECK)
2456 INLINE cvector operator +(
const cvector &rv,
const rvector_slice &sl)
2458 #if(CXSC_INDEX_CHECK)
2463 INLINE cvector operator +(
const cvector_slice &sl,
const rvector &rv)
2465 #if(CXSC_INDEX_CHECK)
2470 INLINE cvector operator +(
const cvector_slice &sl1,
const rvector_slice &sl2)
2472 #if(CXSC_INDEX_CHECK)
2479 INLINE cvector &
operator +=(cvector &rv1,
const rvector &rv2)
2480 #if(CXSC_INDEX_CHECK)
2485 INLINE cvector &
operator +=(cvector &rv,
const rvector_slice &sl)
2487 #if(CXSC_INDEX_CHECK)
2494 INLINE cvector operator -(
const rvector &rv1,
const cvector &rv2)
2495 #if(CXSC_INDEX_CHECK)
2500 INLINE cvector operator -(
const rvector &rv,
const cvector_slice &sl)
2502 #if(CXSC_INDEX_CHECK)
2507 INLINE cvector operator -(
const rvector_slice &sl,
const cvector &rv)
2509 #if(CXSC_INDEX_CHECK)
2514 INLINE cvector operator -(
const rvector_slice &sl1,
const cvector_slice &sl2)
2516 #if(CXSC_INDEX_CHECK)
2523 INLINE cvector operator -(
const cvector &rv1,
const rvector &rv2)
2524 #if(CXSC_INDEX_CHECK)
2529 INLINE cvector operator -(
const cvector &rv,
const rvector_slice &sl)
2531 #if(CXSC_INDEX_CHECK)
2536 INLINE cvector operator -(
const cvector_slice &sl,
const rvector &rv)
2538 #if(CXSC_INDEX_CHECK)
2543 INLINE cvector operator -(
const cvector_slice &sl1,
const rvector_slice &sl2)
2545 #if(CXSC_INDEX_CHECK)
2550 INLINE cvector & operator -=(cvector &rv1,
const rvector &rv2)
2552 #if(CXSC_INDEX_CHECK)
2557 INLINE cvector &operator -=(cvector &rv,
const rvector_slice &sl)
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"
2596 #ifdef CXSC_USE_BLAS
2597 #define _CXSC_BLAS_CVECTOR
2598 #include "cxsc_blas.inl"