26 #ifndef _CXSC_LRVECTOR_HPP_INCLUDED
27 #define _CXSC_LRVECTOR_HPP_INCLUDED
29 #include "xscclass.hpp"
35 #include "rvector.hpp"
45 class l_rvector_slice;
67 template<
typename S,
typename T>
68 friend inline void addDot(
const S &x,
const T &y,
dotprecision &val);
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;
122 template <
class DP,
class V1,
class V2>
friend void _vvaccu(DP &dp,
const V1 & rv1,
const V2 &rv2)
123 #if(CXSC_INDEX_CHECK)
128 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
129 #if(CXSC_INDEX_CHECK)
134 template <
class V1,
class V2,
class E>
friend E _vvlmult(
const V1 & rv1,
const V2 &rv2)
135 #if(CXSC_INDEX_CHECK)
140 template <
class VS,
class V,
class E>
friend E _vsvlmult(
const VS & sl,
const V &rv)
141 #if(CXSC_INDEX_CHECK)
146 template <
class V,
class S>
friend V &_vsmultassign(V &rv,
const S &r) noexcept;
147 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
148 #if(CXSC_INDEX_CHECK)
153 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
154 #if(CXSC_INDEX_CHECK)
159 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
160 #if(CXSC_INDEX_CHECK)
165 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
166 #if(CXSC_INDEX_CHECK)
171 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
172 #if(CXSC_INDEX_CHECK)
177 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
178 #if(CXSC_INDEX_CHECK)
183 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
184 #if(CXSC_INDEX_CHECK)
189 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
190 #if(CXSC_INDEX_CHECK)
195 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
196 #if(CXSC_INDEX_CHECK)
201 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
202 #if(CXSC_INDEX_CHECK)
207 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
208 #if(CXSC_INDEX_CHECK)
213 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
214 #if(CXSC_INDEX_CHECK)
219 template <
class V>
friend V _vminus(
const V &rv) noexcept;
220 template <
class VS,
class V>
friend V _vsminus(
const VS &sl) noexcept;
221 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
222 #if(CXSC_INDEX_CHECK)
227 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
228 #if(CXSC_INDEX_CHECK)
233 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
234 #if(CXSC_INDEX_CHECK)
239 template <
class V,
class MV,
class S>
friend S _vmvlmult(
const V &rv1,
const MV &rv2)
240 #if(CXSC_INDEX_CHECK)
245 template <
class V1,
class V2,
class E>
friend E _vvconv(
const V1 &rv1,
const V2 &rv2)
246 #if(CXSC_INDEX_CHECK)
251 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
252 #if(CXSC_INDEX_CHECK)
257 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
258 #if(CXSC_INDEX_CHECK)
264 template <
class V,
class S,
class E>
friend E _vsdiv(
const V &rv,
const S &s) noexcept;
265 template <
class V,
class S>
friend V &_vsdivassign(V &rv,
const S &r) noexcept;
266 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s) noexcept;
267 template <
class V,
class S,
class E>
friend E _vsmult(
const V &rv,
const S &s) noexcept;
268 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s) noexcept;
269 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s) noexcept;
270 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
271 #if(CXSC_INDEX_CHECK)
276 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
277 #if(CXSC_INDEX_CHECK)
282 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
283 #if(CXSC_INDEX_CHECK)
288 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
289 #if(CXSC_INDEX_CHECK)
294 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
295 #if(CXSC_INDEX_CHECK)
300 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
301 #if(CXSC_INDEX_CHECK)
306 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
307 #if(CXSC_INDEX_CHECK)
312 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s) noexcept;
313 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
314 #if(CXSC_INDEX_CHECK)
319 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
320 #if(CXSC_INDEX_CHECK)
326 template <
class V1,
class V2>
friend bool _vveq(
const V1 &rv1,
const V2 &rv2) noexcept;
327 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv) noexcept;
328 template <
class V1,
class V2>
friend bool _vvneq(
const V1 &rv1,
const V2 &rv2) noexcept;
329 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv) noexcept;
330 template <
class V1,
class V2>
friend bool _vvless(
const V1 &rv1,
const V2 &rv2) noexcept;
331 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv) noexcept;
332 template <
class V1,
class V2>
friend bool _vvleq(
const V1 &rv1,
const V2 &rv2) noexcept;
333 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv) noexcept;
334 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl) noexcept;
335 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl) noexcept;
336 template <
class V>
friend bool _vnot(
const V &rv) noexcept;
337 template <
class V>
friend void *_vvoid(
const V &rv) noexcept;
338 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2) noexcept;
339 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2) noexcept;
340 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2) noexcept;
341 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2) noexcept;
342 template <
class VS>
friend bool _vsnot(
const VS &sl) noexcept;
343 template <
class VS>
friend void *_vsvoid(
const VS &sl) noexcept;
344 template <
class V>
friend std::ostream &_vout(std::ostream &s,
const V &rv) noexcept;
345 template <
class V>
friend std::istream &_vin(std::istream &s, V &rv) noexcept;
348 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv) noexcept;
349 template <
class M,
class V,
class E>
friend E _mvlmult(
const M &m,
const V &v)
350 #if(CXSC_INDEX_CHECK)
355 template <
class V,
class M,
class E>
friend E _vmlmult(
const V &v,
const M &m)
356 #if(CXSC_INDEX_CHECK)
361 template <
class V,
class M,
class S>
friend V &_vmlmultassign(V &v,
const M &m)
362 #if(CXSC_INDEX_CHECK)
367 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
368 #if(CXSC_INDEX_CHECK)
373 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
374 #if(CXSC_INDEX_CHECK)
379 template <
class V,
class MS,
class S>
friend V &_vmslmultassign(V &v,
const MS &ms)
380 #if(CXSC_INDEX_CHECK)
388 template <
class V1,
class V2,
class E>
friend E _vvlimult(
const V1 & rv1,
const V2 &rv2)
389 #if(CXSC_INDEX_CHECK)
394 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
395 #if(CXSC_INDEX_CHECK)
400 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
401 #if(CXSC_INDEX_CHECK)
406 template <
class V1,
class V2,
class E>
friend E _vvsect(
const V1 &rv1,
const V2 &rv2)
407 #if(CXSC_INDEX_CHECK)
412 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
413 #if(CXSC_INDEX_CHECK)
418 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
419 #if(CXSC_INDEX_CHECK)
426 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
427 #if(CXSC_INDEX_CHECK)
432 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
433 #if(CXSC_INDEX_CHECK)
438 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
439 #if(CXSC_INDEX_CHECK)
444 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
445 #if(CXSC_INDEX_CHECK)
452 template <
class V1,
class V2>
friend V1 &_vvsetinf(V1 &rv1,
const V2 &rv2)
453 #if(CXSC_INDEX_CHECK)
458 template <
class V1,
class V2>
friend V1 &_vvsetsup(V1 &rv1,
const V2 &rv2)
459 #if(CXSC_INDEX_CHECK)
464 template <
class V1,
class V2>
friend V1 &_vvusetinf(V1 &rv1,
const V2 &rv2)
465 #if(CXSC_INDEX_CHECK)
470 template <
class V1,
class V2>
friend V1 &_vvusetsup(V1 &rv1,
const V2 &rv2)
471 #if(CXSC_INDEX_CHECK)
476 template <
class VS,
class V>
friend VS &_vsvsetinf(VS &sl,
const V &rv)
477 #if(CXSC_INDEX_CHECK)
482 template <
class VS,
class V>
friend VS &_vsvsetsup(VS &sl,
const V &rv)
483 #if(CXSC_INDEX_CHECK)
488 template <
class VS,
class V>
friend VS &_vsvusetinf(VS &sl,
const V &rv)
489 #if(CXSC_INDEX_CHECK)
494 template <
class VS,
class V>
friend VS &_vsvusetsup(VS &sl,
const V &rv)
495 #if(CXSC_INDEX_CHECK)
500 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
501 #if(CXSC_INDEX_CHECK)
506 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
507 #if(CXSC_INDEX_CHECK)
512 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
513 #if(CXSC_INDEX_CHECK)
518 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
519 #if(CXSC_INDEX_CHECK)
524 template <
class V,
class E>
friend E _vmid(
const V &rv) noexcept;
525 template <
class V,
class E>
friend E _vinf(
const V &rv) noexcept;
526 template <
class V,
class E>
friend E _vsup(
const V &rv) noexcept;
527 template <
class V,
class E>
friend E _vdiam(
const V &rv) noexcept;
528 template <
class VS,
class E>
friend E _vsmid(
const VS &sl) noexcept;
529 template <
class VS,
class E>
friend E _vsinf(
const VS &sl) noexcept;
530 template <
class VS,
class E>
friend E _vssup(
const VS &sl) noexcept;
531 template <
class VS,
class E>
friend E _vsdiam(
const VS &sl) noexcept;
532 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv) noexcept;
533 template <
class MV,
class V>
friend V _mvmid(
const MV &mv) noexcept;
534 template <
class MV,
class V>
friend V _mvinf(
const MV &mv) noexcept;
535 template <
class MV,
class V>
friend V _mvsup(
const MV &mv) noexcept;
538 template <
class V1,
class V2>
friend V1 &_vvconvassign(V1 &rv1,
const V2 &rv2)
539 #if(CXSC_INDEX_CHECK)
544 template <
class V1,
class V2>
friend V1 &_vvsectassign(V1 &rv1,
const V2 &rv2)
545 #if(CXSC_INDEX_CHECK)
550 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
551 #if(CXSC_INDEX_CHECK)
556 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
557 #if(CXSC_INDEX_CHECK)
563 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
564 #if(CXSC_INDEX_CHECK)
569 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
570 #if(CXSC_INDEX_CHECK)
583 explicit INLINE
l_rvector(
const int &i) noexcept;
586 explicit INLINE
l_rvector(
const class index &i) noexcept;
589 explicit INLINE
l_rvector(
const int &i1,
const int &i2)
590 #if(CXSC_INDEX_CHECK)
601 #if(CXSC_INDEX_CHECK)
608 #if(CXSC_INDEX_CHECK)
626 #if(CXSC_INDEX_CHECK)
633 #if(CXSC_INDEX_CHECK)
650 #if(CXSC_INDEX_CHECK)
657 #if(CXSC_INDEX_CHECK)
673 #if(CXSC_INDEX_CHECK)
680 #if(CXSC_INDEX_CHECK)
694 #if(CXSC_INDEX_CHECK)
700 friend INLINE
int Lb(
const l_rvector &rv) noexcept {
return rv.l; }
702 friend INLINE
int Ub(
const l_rvector &rv) noexcept {
return rv.u; }
711 #if(CXSC_INDEX_CHECK)
720 #if(CXSC_INDEX_CHECK)
727 #if(CXSC_INDEX_CHECK)
732 INLINE
operator void*() noexcept;
758 template<
typename S,
typename T>
759 friend inline void addDot(
const S &x,
const T &y,
dotprecision &val);
762 #ifdef _CXSC_FRIEND_TPL
766 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
767 #if(CXSC_INDEX_CHECK)
772 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl) noexcept;
773 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
774 #if(CXSC_INDEX_CHECK)
779 template <
class VS,
class S>
friend VS & _vssassign(VS &sl,
const S &r) noexcept;
781 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
782 #if(CXSC_INDEX_CHECK)
787 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
788 #if(CXSC_INDEX_CHECK)
794 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s) noexcept;
795 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s) noexcept;
797 template <
class VS,
class V,
class E>
friend E _vsvlmult(
const VS & sl,
const V &rv)
798 #if(CXSC_INDEX_CHECK)
803 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r) noexcept;
804 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r) noexcept;
805 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
806 #if(CXSC_INDEX_CHECK)
811 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
812 #if(CXSC_INDEX_CHECK)
817 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
818 #if(CXSC_INDEX_CHECK)
823 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
824 #if(CXSC_INDEX_CHECK)
829 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
830 #if(CXSC_INDEX_CHECK)
835 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
836 #if(CXSC_INDEX_CHECK)
841 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
842 #if(CXSC_INDEX_CHECK)
847 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
848 #if(CXSC_INDEX_CHECK)
853 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
854 #if(CXSC_INDEX_CHECK)
859 template <
class VS,
class V>
friend V _vsminus(
const VS &sl) noexcept;
860 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
861 #if(CXSC_INDEX_CHECK)
866 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
867 #if(CXSC_INDEX_CHECK)
872 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
873 #if(CXSC_INDEX_CHECK)
878 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
879 #if(CXSC_INDEX_CHECK)
884 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv) noexcept;
885 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv) noexcept;
886 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv) noexcept;
887 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv) noexcept;
888 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl) noexcept;
889 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl) noexcept;
890 template <
class VS,
class E>
friend E _vsabs(
const VS &sl) noexcept;
891 template <
class VS1,
class VS2,
class E>
friend E _vsvslmult(
const VS1 & sl1,
const VS2 &sl2)
892 #if(CXSC_INDEX_CHECK)
897 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2) noexcept;
898 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2) noexcept;
899 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2) noexcept;
900 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2) noexcept;
901 template <
class VS>
friend bool _vsnot(
const VS &sl) noexcept;
902 template <
class VS>
friend void *_vsvoid(
const VS &sl) noexcept;
903 template <
class V>
friend std::ostream &_vsout(std::ostream &s,
const V &rv) noexcept;
904 template <
class V>
friend std::istream &_vsin(std::istream &s, V &rv) noexcept;
906 template <
class VS,
class M,
class S>
friend VS &_vsmlmultassign(VS &v,
const M &m)
907 #if(CXSC_INDEX_CHECK)
914 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
915 #if(CXSC_INDEX_CHECK)
921 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
922 #if(CXSC_INDEX_CHECK)
927 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
928 #if(CXSC_INDEX_CHECK)
936 template <
class V1,
class V2,
class E>
friend E _vvlimult(
const V1 & rv1,
const V2 &rv2)
937 #if(CXSC_INDEX_CHECK)
942 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
943 #if(CXSC_INDEX_CHECK)
948 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
949 #if(CXSC_INDEX_CHECK)
954 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
955 #if(CXSC_INDEX_CHECK)
960 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
961 #if(CXSC_INDEX_CHECK)
982 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
983 #if(CXSC_INDEX_CHECK)
988 template <
class V,
class VS>
friend V &_vvssectassign(V &rv,
const VS &sl)
989 #if(CXSC_INDEX_CHECK)
994 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
995 #if(CXSC_INDEX_CHECK)
1000 template <
class VS1,
class VS2>
friend VS1 &_vsvssectassign(VS1 &sl1,
const VS2 &sl2)
1001 #if(CXSC_INDEX_CHECK)
1010 explicit INLINE
l_rvector_slice(
l_rvector &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) { }
1020 #if(CXSC_INDEX_CHECK)
1027 #if(CXSC_INDEX_CHECK)
1036 #if(CXSC_INDEX_CHECK)
1043 #if(CXSC_INDEX_CHECK)
1053 #if(CXSC_INDEX_CHECK)
1060 #if(CXSC_INDEX_CHECK)
1069 #if(CXSC_INDEX_CHECK)
1076 #if(CXSC_INDEX_CHECK)
1085 template <
class V,
class VS>
friend V &_vvssetinf(V &rv,
const VS &sl)
1086 #if(CXSC_INDEX_CHECK)
1091 template <
class V,
class VS>
friend V &_vvssetsup(V &rv,
const VS &sl)
1092 #if(CXSC_INDEX_CHECK)
1097 template <
class V,
class VS>
friend V &_vvsusetinf(V &rv,
const VS &sl)
1098 #if(CXSC_INDEX_CHECK)
1103 template <
class V,
class VS>
friend V &_vvsusetsup(V &rv,
const VS &sl)
1104 #if(CXSC_INDEX_CHECK)
1109 template <
class VS1,
class VS2>
friend VS1 &_vsvssetinf(VS1 &sl1,
const VS2 &sl2)
1110 #if(CXSC_INDEX_CHECK)
1115 template <
class VS1,
class VS2>
friend VS1 &_vsvssetsup(VS1 &sl1,
const VS2 &sl2)
1116 #if(CXSC_INDEX_CHECK)
1121 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetinf(VS1 &sl1,
const VS2 &sl2)
1122 #if(CXSC_INDEX_CHECK)
1127 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetsup(VS1 &sl1,
const VS2 &sl2)
1128 #if(CXSC_INDEX_CHECK)
1135 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1136 #if(CXSC_INDEX_CHECK)
1147 #if(CXSC_INDEX_CHECK)
1160 #if(CXSC_INDEX_CHECK)
1169 #if(CXSC_INDEX_CHECK)
1176 #if(CXSC_INDEX_CHECK)
1190 #if(CXSC_INDEX_CHECK)
1197 #if(CXSC_INDEX_CHECK)
1206 #if(CXSC_INDEX_CHECK)
1213 #if(CXSC_INDEX_CHECK)
1220 #if(CXSC_INDEX_CHECK)
1227 #if(CXSC_INDEX_CHECK)
1234 #if(CXSC_INDEX_CHECK)
1241 #if(CXSC_INDEX_CHECK)
1248 #if(CXSC_INDEX_CHECK)
1255 #if(CXSC_INDEX_CHECK)
1263 #if(CXSC_INDEX_CHECK)
1270 #if(CXSC_INDEX_CHECK)
1277 #if(CXSC_INDEX_CHECK)
1284 #if(CXSC_INDEX_CHECK)
1291 #if(CXSC_INDEX_CHECK)
1298 #if(CXSC_INDEX_CHECK)
1305 #if(CXSC_INDEX_CHECK)
1312 #if(CXSC_INDEX_CHECK)
1317 INLINE
operator void*() noexcept;
1344 #if(CXSC_INDEX_CHECK)
1351 #if(CXSC_INDEX_CHECK)
1362 INLINE
bool operator !(
const l_rvector &rv) noexcept;
1426 INLINE std::ostream &operator <<(std::ostream &s,
const l_rvector &rv) noexcept;
1428 INLINE std::ostream &operator <<(std::ostream &o,
const l_rvector_slice &sl) noexcept;
1430 INLINE std::istream &operator >>(std::istream &s,
l_rvector &rv) noexcept;
1432 INLINE std::istream &operator >>(std::istream &s,
l_rvector_slice &rv) noexcept;
1438 #if(CXSC_INDEX_CHECK)
1445 #if(CXSC_INDEX_CHECK)
1452 #if(CXSC_INDEX_CHECK)
1459 #if(CXSC_INDEX_CHECK)
1466 #if(CXSC_INDEX_CHECK)
1473 #if(CXSC_INDEX_CHECK)
1480 #if(CXSC_INDEX_CHECK)
1487 #if(CXSC_INDEX_CHECK)
1494 #if(CXSC_INDEX_CHECK)
1501 #if(CXSC_INDEX_CHECK)
1508 #if(CXSC_INDEX_CHECK)
1515 #if(CXSC_INDEX_CHECK)
1522 #if(CXSC_INDEX_CHECK)
1529 #if(CXSC_INDEX_CHECK)
1538 #if(CXSC_INDEX_CHECK)
1545 #if(CXSC_INDEX_CHECK)
1552 #if(CXSC_INDEX_CHECK)
1559 #if(CXSC_INDEX_CHECK)
1572 #if(CXSC_INDEX_CHECK)
1579 #if(CXSC_INDEX_CHECK)
1586 #if(CXSC_INDEX_CHECK)
1593 #if(CXSC_INDEX_CHECK)
1600 #if(CXSC_INDEX_CHECK)
1607 #if(CXSC_INDEX_CHECK)
1619 #if(CXSC_INDEX_CHECK)
1626 #if(CXSC_INDEX_CHECK)
1633 #if(CXSC_INDEX_CHECK)
1640 #if(CXSC_INDEX_CHECK)
1647 #if(CXSC_INDEX_CHECK)
1654 #if(CXSC_INDEX_CHECK)
1714 #if(CXSC_INDEX_CHECK)
1721 #if(CXSC_INDEX_CHECK)
1728 #if(CXSC_INDEX_CHECK)
1735 #if(CXSC_INDEX_CHECK)
1742 #if(CXSC_INDEX_CHECK)
1749 #if(CXSC_INDEX_CHECK)
1756 #if(CXSC_INDEX_CHECK)
1763 #if(CXSC_INDEX_CHECK)
1770 #if(CXSC_INDEX_CHECK)
1777 #if(CXSC_INDEX_CHECK)
1784 #if(CXSC_INDEX_CHECK)
1791 #if(CXSC_INDEX_CHECK)
1798 #if(CXSC_INDEX_CHECK)
1805 #if(CXSC_INDEX_CHECK)
1812 #if(CXSC_INDEX_CHECK)
1819 #if(CXSC_INDEX_CHECK)
1826 #if(CXSC_INDEX_CHECK)
1833 #if(CXSC_INDEX_CHECK)
1841 #if(CXSC_INDEX_CHECK)
1848 #if(CXSC_INDEX_CHECK)
1855 #if(CXSC_INDEX_CHECK)
1862 #if(CXSC_INDEX_CHECK)
1869 #if(CXSC_INDEX_CHECK)
1876 #if(CXSC_INDEX_CHECK)
1883 #if(CXSC_INDEX_CHECK)
1890 #if(CXSC_INDEX_CHECK)
1897 #if(CXSC_INDEX_CHECK)
1904 #if(CXSC_INDEX_CHECK)
1911 #if(CXSC_INDEX_CHECK)
1918 #if(CXSC_INDEX_CHECK)
1925 #if(CXSC_INDEX_CHECK)
1932 #if(CXSC_INDEX_CHECK)
1939 #if(CXSC_INDEX_CHECK)
1946 #if(CXSC_INDEX_CHECK)
1953 #if(CXSC_INDEX_CHECK)
1960 #if(CXSC_INDEX_CHECK)
1968 #if(CXSC_INDEX_CHECK)
1975 #if(CXSC_INDEX_CHECK)
1982 #if(CXSC_INDEX_CHECK)
1989 #if(CXSC_INDEX_CHECK)
1997 #if(CXSC_INDEX_CHECK)
2004 #if(CXSC_INDEX_CHECK)
2011 #if(CXSC_INDEX_CHECK)
2018 #if(CXSC_INDEX_CHECK)
2026 #if(CXSC_INDEX_CHECK)
2033 #if(CXSC_INDEX_CHECK)
2040 #if(CXSC_INDEX_CHECK)
2047 #if(CXSC_INDEX_CHECK)
2055 #if(CXSC_INDEX_CHECK)
2062 #if(CXSC_INDEX_CHECK)
2069 #if(CXSC_INDEX_CHECK)
2076 #if(CXSC_INDEX_CHECK)
2084 #if(CXSC_INDEX_CHECK)
2091 #if(CXSC_INDEX_CHECK)
2099 #if(CXSC_INDEX_CHECK)
2106 #if(CXSC_INDEX_CHECK)
2113 #if(CXSC_INDEX_CHECK)
2120 #if(CXSC_INDEX_CHECK)
2128 #if(CXSC_INDEX_CHECK)
2135 #if(CXSC_INDEX_CHECK)
2142 #if(CXSC_INDEX_CHECK)
2149 #if(CXSC_INDEX_CHECK)
2156 #if(CXSC_INDEX_CHECK)
2163 #if(CXSC_INDEX_CHECK)
2171 #ifdef _CXSC_INCL_INL
2172 #include "vector.inl"
2173 #include "l_rvector.inl"
2176 #ifdef _CXSC_RMATRIX_HPP_INCLUDED
2177 # ifdef _CXSC_INCL_INL
2178 # include "lrvecrmat.inl"
2180 # include "lrvecrmat.hpp"
2184 #ifdef _CXSC_IMATRIX_HPP_INCLUDED
2185 # ifdef _CXSC_INCL_INL
2186 # include "cvecimat.inl"
2188 # include "cvecimat.hpp"
2192 #ifdef _CXSC_IVECTOR_HPP_INCLUDED
2193 # ifdef _CXSC_INCL_INL
2194 # include "lrvecivec.inl"
2196 # include "lrvecivec.hpp"
The Data Type dotprecision.
The Data Type idotprecision.
The Multiple-Precision Data Type l_imatrix.
The Multiple-Precision Data Type l_ivector.
The Multiple-Precision Data Type l_real.
l_real(void) noexcept
Constructor of class l_real.
The Multiple-Precision Data Type l_rmatrix_slice.
The Multiple-Precision Data Type l_rmatrix_subv.
The Multiple-Precision Data Type l_rmatrix.
The Multiple-Precision Data Type l_rvector_slice.
l_rvector_slice & operator-=(const l_rvector &rv) noexcept
Implementation of subtraction and allocation operation.
l_rvector_slice(const l_rvector_slice &a) noexcept
Constructor of class l_rvector_slice.
l_rvector_slice & operator|=(const l_rvector &rv) noexcept
Allocates the convex hull of the arguments to the first argument.
l_rvector_slice(l_rvector &a, const int &lb, const int &ub) noexcept
Constructor of class l_rvector_slice.
l_rvector_slice & operator+=(const l_rvector &rv) noexcept
Implementation of addition and allocation operation.
l_rvector_slice & operator()() noexcept
Operator for accessing the whole vector.
l_rvector_slice & operator=(const l_rvector_slice &sl) noexcept
Implementation of standard assigning operator.
l_rvector_slice(l_rvector_slice &a, const int &lb, const int &ub) noexcept
Constructor of class l_rvector_slice.
l_rvector_slice & operator&=(const l_rvector &rv) noexcept
Allocates the intersection of the arguments to the first argument.
friend int VecLen(const l_rvector_slice &sl) noexcept
Returns the dimension of the vector.
l_rvector_slice & operator*=(const l_real &r) noexcept
Implementation of multiplication and allocation operation.
l_real & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector.
friend int Ub(const l_rvector_slice &sl) noexcept
Returns the upper bound of the vector.
friend int Lb(const l_rvector_slice &sl) noexcept
Returns the lower bound of the vector.
l_rvector_slice & operator/=(const l_real &r) noexcept
Implementation of division and allocation operation.
The Multiple-Precision Data Type l_rvector.
l_rvector() noexcept
Constructor of class l_rvector.
friend int Ub(const l_rvector &rv) noexcept
Returns the upper bound of the vector.
l_rvector & operator=(const l_rvector &rv) noexcept
Implementation of standard assigning operator.
friend int VecLen(const l_rvector &rv) noexcept
Returns the dimension of the vector.
friend l_rvector & SetUb(l_rvector &rv, const int &u) noexcept
Sets the upper bound of the vector.
l_real & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector.
l_rvector & operator()() noexcept
Operator for accessing the whole vector.
friend int Lb(const l_rvector &rv) noexcept
Returns the lower bound of the vector.
friend l_rvector & SetLb(l_rvector &rv, const int &l) noexcept
Sets the lower bound of the vector.
The Data Type rmatrix_slice.
The Data Type rmatrix_subv.
The Data Type rvector_slice.
The namespace cxsc, providing all functionality of the class library C-XSC.
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc) noexcept
Implementation of standard algebraic addition and allocation operation.
INLINE l_rvector _l_rvector(const rmatrix_subv &rs) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
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.