26 #ifndef _CXSC_LRMATRIX_HPP_INCLUDED
27 #define _CXSC_LRMATRIX_HPP_INCLUDED
29 #include "xscclass.hpp"
32 #include "l_rvector.hpp"
35 #include "rmatrix.hpp"
40 class l_rmatrix_slice;
55 int size,start,offset;
88 template<
typename S,
typename T>
89 friend inline void addDot(
const S &x,
const T &y,
dotprecision &val);
92 #ifdef _CXSC_FRIEND_TPL
94 template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
100 template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r) noexcept;
101 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
102 #if(CXSC_INDEX_CHECK)
107 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv) noexcept;
108 template <
class MV,
class V>
friend V _mvabs(
const MV &mv) noexcept;
109 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
110 #if(CXSC_INDEX_CHECK)
115 template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
116 #if(CXSC_INDEX_CHECK)
123 template <
class MV1,
class MV2,
class S>
friend S _mvmvlmult(
const MV1 & rv1,
const MV2 &rv2)
124 #if(CXSC_INDEX_CHECK)
129 template <
class V,
class MV,
class S>
friend S _vmvlmult(
const V &rv1,
const MV &rv2)
130 #if(CXSC_INDEX_CHECK)
135 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s) noexcept;
136 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
137 #if(CXSC_INDEX_CHECK)
142 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
143 #if(CXSC_INDEX_CHECK)
148 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
149 #if(CXSC_INDEX_CHECK)
154 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
155 #if(CXSC_INDEX_CHECK)
160 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
161 #if(CXSC_INDEX_CHECK)
166 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s) noexcept;
167 template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r) noexcept;
168 template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r) noexcept;
169 template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r) noexcept;
170 template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r) noexcept;
171 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
172 #if(CXSC_INDEX_CHECK)
177 template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
178 #if(CXSC_INDEX_CHECK)
183 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
184 #if(CXSC_INDEX_CHECK)
189 template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
190 #if(CXSC_INDEX_CHECK)
196 template <
class V,
class MV>
friend V &_vmvsetinf(V &rv,
const MV &v)
197 #if(CXSC_INDEX_CHECK)
202 template <
class V,
class MV>
friend V &_vmvsetsup(V &rv,
const MV &v)
203 #if(CXSC_INDEX_CHECK)
208 template <
class V,
class MV>
friend V &_vmvusetinf(V &rv,
const MV &v)
209 #if(CXSC_INDEX_CHECK)
214 template <
class V,
class MV>
friend V &_vmvusetsup(V &rv,
const MV &v)
215 #if(CXSC_INDEX_CHECK)
226 explicit INLINE
l_rmatrix_subv (
l_real *d,
const int &l,
const int &u,
const int &s,
const int &st,
const int &o) noexcept:dat(d),lb(l),ub(u),size(s),start(st),offset(o) { }
239 #if(CXSC_INDEX_CHECK)
248 #if(CXSC_INDEX_CHECK)
255 #if(CXSC_INDEX_CHECK)
268 #if(CXSC_INDEX_CHECK)
275 #if(CXSC_INDEX_CHECK)
282 #if(CXSC_INDEX_CHECK)
289 #if(CXSC_INDEX_CHECK)
305 #if(CXSC_INDEX_CHECK)
312 #if(CXSC_INDEX_CHECK)
319 #if(CXSC_INDEX_CHECK)
326 #if(CXSC_INDEX_CHECK)
338 #if(CXSC_INDEX_CHECK)
345 #if(CXSC_INDEX_CHECK)
352 #if(CXSC_INDEX_CHECK)
359 #if(CXSC_INDEX_CHECK)
375 #if(CXSC_INDEX_CHECK)
382 #if(CXSC_INDEX_CHECK)
389 #if(CXSC_INDEX_CHECK)
396 #if(CXSC_INDEX_CHECK)
422 int lb1,ub1,lb2,ub2,xsize,ysize;
426 #ifdef _CXSC_FRIEND_TPL
428 template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
429 #if(CXSC_INDEX_CHECK)
434 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
435 #if(CXSC_INDEX_CHECK)
440 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms) noexcept;
441 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms) noexcept;
442 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
443 #if(CXSC_INDEX_CHECK)
448 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r) noexcept;
449 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
450 #if(CXSC_INDEX_CHECK)
455 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v) noexcept;
456 template <
class M>
friend int _mlb(
const M &m,
const int &i)
457 #if(CXSC_INDEX_CHECK)
462 template <
class M>
friend int _mub(
const M &m,
const int &i)
463 #if(CXSC_INDEX_CHECK)
468 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
469 #if(CXSC_INDEX_CHECK)
474 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
475 #if(CXSC_INDEX_CHECK)
480 template <
class M>
friend void _mresize(M &A) noexcept;
481 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
482 #if(CXSC_INDEX_CHECK)
487 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
488 #if(CXSC_INDEX_CHECK)
493 template <
class M,
class E>
friend E _mabs(
const M &m) noexcept;
494 template <
class MS,
class E>
friend E _msabs(
const MS &ms) noexcept;
496 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
497 #if(CXSC_INDEX_CHECK)
502 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
503 #if(CXSC_INDEX_CHECK)
508 template <
class M>
friend M _mminus(
const M &m) noexcept;
509 template <
class MS,
class E>
friend E _msminus(
const MS &ms) noexcept;
510 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
511 #if(CXSC_INDEX_CHECK)
516 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
517 #if(CXSC_INDEX_CHECK)
522 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
523 #if(CXSC_INDEX_CHECK)
528 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
529 #if(CXSC_INDEX_CHECK)
534 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
535 #if(CXSC_INDEX_CHECK)
540 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
541 #if(CXSC_INDEX_CHECK)
546 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
547 #if(CXSC_INDEX_CHECK)
552 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
553 #if(CXSC_INDEX_CHECK)
558 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
559 #if(CXSC_INDEX_CHECK)
564 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
565 #if(CXSC_INDEX_CHECK)
570 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
571 #if(CXSC_INDEX_CHECK)
576 template <
class M1,
class M2,
class E>
friend E _mmlmult(
const M1 &m1,
const M2 &m2)
577 #if(CXSC_INDEX_CHECK)
582 template <
class M1,
class M2,
class S>
friend M1 &_mmlmultassign(M1 &m1,
const M2 &m2)
583 #if(CXSC_INDEX_CHECK)
588 template <
class M,
class MS,
class E>
friend E _mmslmult(
const M &m1,
const MS &ms)
589 #if(CXSC_INDEX_CHECK)
594 template <
class MS,
class M,
class E>
friend E _msmlmult(
const MS &ms,
const M &m2)
595 #if(CXSC_INDEX_CHECK)
600 template <
class M,
class MS,
class S>
friend M &_mmslmultassign(M &m1,
const MS &ms)
601 #if(CXSC_INDEX_CHECK)
606 template <
class MS1,
class MS2,
class E>
friend E _msmslmult(
const MS1 &ms1,
const MS2 &ms2)
607 #if(CXSC_INDEX_CHECK)
612 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
613 #if(CXSC_INDEX_CHECK)
618 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
619 #if(CXSC_INDEX_CHECK)
625 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m) noexcept;
626 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c) noexcept;
627 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms) noexcept;
628 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c) noexcept;
629 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c) noexcept;
630 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c) noexcept;
632 template <
class M,
class V,
class E>
friend E _mvlmult(
const M &m,
const V &v)
633 #if(CXSC_INDEX_CHECK)
638 template <
class V,
class M,
class E>
friend E _vmlmult(
const V &v,
const M &m)
639 #if(CXSC_INDEX_CHECK)
644 template <
class V,
class M,
class S>
friend V &_vmlmultassign(V &v,
const M &m)
645 #if(CXSC_INDEX_CHECK)
650 template <
class VS,
class M,
class S>
friend VS &_vsmlmultassign(VS &v,
const M &m)
651 #if(CXSC_INDEX_CHECK)
657 template <
class M>
friend void *_mvoid(
const M &m) noexcept;
658 template <
class M>
friend bool _mnot(
const M &m) noexcept;
659 template <
class MS>
friend void *_msvoid(
const MS &ms) noexcept;
660 template <
class MS>
friend bool _msnot(
const MS &ms) noexcept;
661 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2) noexcept;
662 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2) noexcept;
663 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2) noexcept;
664 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2) noexcept;
665 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms) noexcept;
666 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms) noexcept;
667 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms) noexcept;
668 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms) noexcept;
669 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1) noexcept;
670 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1) noexcept;
671 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r) noexcept;
672 template <
class M>
friend std::istream &_min(std::istream &s,M &r) noexcept;
675 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
676 #if(CXSC_INDEX_CHECK)
681 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
682 #if(CXSC_INDEX_CHECK)
688 template <
class M1,
class M2,
class E>
friend E _mmlimult(
const M1 &m1,
const M2 &m2)
689 #if(CXSC_INDEX_CHECK)
695 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
696 #if(CXSC_INDEX_CHECK)
702 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
703 #if(CXSC_INDEX_CHECK)
709 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
710 #if(CXSC_INDEX_CHECK)
716 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
717 #if(CXSC_INDEX_CHECK)
722 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
723 #if(CXSC_INDEX_CHECK)
728 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
729 #if(CXSC_INDEX_CHECK)
735 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
736 #if(CXSC_INDEX_CHECK)
745 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
746 #if(CXSC_INDEX_CHECK)
751 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
752 #if(CXSC_INDEX_CHECK)
757 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
758 #if(CXSC_INDEX_CHECK)
766 template <
class M,
class E>
friend E _mdiam(
const M &m) noexcept;
767 template <
class M,
class E>
friend E _mmid(
const M &m) noexcept;
768 template <
class MS,
class E>
friend E _msdiam(
const MS &ms) noexcept;
769 template <
class MS,
class E>
friend E _msmid(
const MS &ms) noexcept;
770 template <
class M,
class E>
friend E _minf(
const M &m) noexcept;
771 template <
class MS,
class E>
friend E _msinf(
const MS &ms) noexcept;
772 template <
class M,
class E>
friend E _msup(
const M &m) noexcept;
773 template <
class MS,
class E>
friend E _mssup(
const MS &ms) noexcept;
774 template <
class M1,
class M2>
friend M1 &_mmsetinf(M1 &m1,
const M2 &m2)
775 #if(CXSC_INDEX_CHECK)
780 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
781 #if(CXSC_INDEX_CHECK)
786 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
787 #if(CXSC_INDEX_CHECK)
792 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
793 #if(CXSC_INDEX_CHECK)
798 template <
class MS1,
class M2>
friend MS1 &_msmsetinf(MS1 &ms1,
const M2 &m2)
799 #if(CXSC_INDEX_CHECK)
804 template <
class MS1,
class M2>
friend MS1 &_msmsetsup(MS1 &ms1,
const M2 &m2)
805 #if(CXSC_INDEX_CHECK)
810 template <
class MS1,
class M2>
friend MS1 &_msmusetinf(MS1 &ms1,
const M2 &m2)
811 #if(CXSC_INDEX_CHECK)
816 template <
class MS1,
class M2>
friend MS1 &_msmusetsup(MS1 &ms1,
const M2 &m2)
817 #if(CXSC_INDEX_CHECK)
823 template <
class M1,
class M2,
class S>
friend M1 &_mmlimultassign(M1 &m1,
const M2 &m2)
824 #if(CXSC_INDEX_CHECK)
830 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
831 #if(CXSC_INDEX_CHECK)
837 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
838 #if(CXSC_INDEX_CHECK)
843 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
844 #if(CXSC_INDEX_CHECK)
849 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
850 #if(CXSC_INDEX_CHECK)
856 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
857 #if(CXSC_INDEX_CHECK)
862 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
863 #if(CXSC_INDEX_CHECK)
868 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
869 #if(CXSC_INDEX_CHECK)
875 template <
class V,
class M,
class S>
friend V &_vmlimultassign(V &v,
const M &m)
876 #if(CXSC_INDEX_CHECK)
881 template <
class VS,
class M,
class S>
friend VS &_vsmlimultassign(VS &v,
const M &m)
882 #if(CXSC_INDEX_CHECK)
900 explicit INLINE
l_rmatrix(
const int &m,
const int &n)
901 #if(CXSC_INDEX_CHECK)
906 explicit INLINE
l_rmatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
908 #if(CXSC_INDEX_CHECK)
953 INLINE ~
l_rmatrix() noexcept {
delete [] dat; }
959 #if(CXSC_INDEX_CHECK)
966 #if(CXSC_INDEX_CHECK)
975 #if(CXSC_INDEX_CHECK)
982 #if(CXSC_INDEX_CHECK)
987 INLINE
operator void*() noexcept;
1005 int offset1,offset2,mxsize,mysize;
1006 int start1,end1,start2,end2,sxsize,sysize;
1010 #ifdef _CXSC_FRIEND_TPL
1012 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
1013 #if(CXSC_INDEX_CHECK)
1018 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
1019 #if(CXSC_INDEX_CHECK)
1024 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
1025 #if(CXSC_INDEX_CHECK)
1030 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms) noexcept;
1031 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r) noexcept;
1033 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
1034 #if(CXSC_INDEX_CHECK)
1039 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
1040 #if(CXSC_INDEX_CHECK)
1045 template <
class MS,
class E>
friend E _msabs(
const MS &ms) noexcept;
1047 template <
class MS,
class E>
friend E _msminus(
const MS &ms) noexcept;
1048 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1049 #if(CXSC_INDEX_CHECK)
1054 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1055 #if(CXSC_INDEX_CHECK)
1060 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1061 #if(CXSC_INDEX_CHECK)
1066 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1067 #if(CXSC_INDEX_CHECK)
1072 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
1073 #if(CXSC_INDEX_CHECK)
1078 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1079 #if(CXSC_INDEX_CHECK)
1084 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1085 #if(CXSC_INDEX_CHECK)
1090 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1091 #if(CXSC_INDEX_CHECK)
1096 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1097 #if(CXSC_INDEX_CHECK)
1102 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1103 #if(CXSC_INDEX_CHECK)
1108 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
1109 #if(CXSC_INDEX_CHECK)
1114 template <
class M,
class MS,
class E>
friend E _mmslmult(
const M &m1,
const MS &ms)
1115 #if(CXSC_INDEX_CHECK)
1120 template <
class MS,
class M,
class E>
friend E _msmlmult(
const MS &ms,
const M &m2)
1121 #if(CXSC_INDEX_CHECK)
1126 template <
class M,
class MS,
class S>
friend M &_mmslmultassign(M &m1,
const MS &ms)
1127 #if(CXSC_INDEX_CHECK)
1132 template <
class MS1,
class MS2,
class E>
friend E _msmslmult(
const MS1 &ms1,
const MS2 &ms2)
1133 #if(CXSC_INDEX_CHECK)
1138 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1139 #if(CXSC_INDEX_CHECK)
1144 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1145 #if(CXSC_INDEX_CHECK)
1151 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
1152 #if(CXSC_INDEX_CHECK)
1157 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
1158 #if(CXSC_INDEX_CHECK)
1163 template <
class V,
class MS,
class S>
friend V &_vmslmultassign(V &v,
const MS &ms)
1164 #if(CXSC_INDEX_CHECK)
1170 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms) noexcept;
1171 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c) noexcept;
1172 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c) noexcept;
1173 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c) noexcept;
1175 template <
class MS>
friend void *_msvoid(
const MS &ms) noexcept;
1176 template <
class MS>
friend bool _msnot(
const MS &ms) noexcept;
1177 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms) noexcept;
1178 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms) noexcept;
1179 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms) noexcept;
1180 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms) noexcept;
1181 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1) noexcept;
1182 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1) noexcept;
1183 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1184 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1185 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1186 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1187 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r) noexcept;
1188 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r) noexcept;
1192 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1193 #if(CXSC_INDEX_CHECK)
1198 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1199 #if(CXSC_INDEX_CHECK)
1205 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1206 #if(CXSC_INDEX_CHECK)
1212 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1213 #if(CXSC_INDEX_CHECK)
1218 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1219 #if(CXSC_INDEX_CHECK)
1227 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
1228 #if(CXSC_INDEX_CHECK)
1233 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1234 #if(CXSC_INDEX_CHECK)
1242 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
1243 #if(CXSC_INDEX_CHECK)
1248 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
1249 #if(CXSC_INDEX_CHECK)
1254 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
1255 #if(CXSC_INDEX_CHECK)
1260 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
1261 #if(CXSC_INDEX_CHECK)
1266 template <
class MS1,
class MS2>
friend MS1 &_msmssetinf(MS1 &ms1,
const MS2 &ms2)
1267 #if(CXSC_INDEX_CHECK)
1272 template <
class MS1,
class MS2>
friend MS1 &_msmssetsup(MS1 &ms1,
const MS2 &ms2)
1273 #if(CXSC_INDEX_CHECK)
1278 template <
class MS1,
class MS2>
friend MS1 &_msmsusetinf(MS1 &ms1,
const MS2 &ms2)
1279 #if(CXSC_INDEX_CHECK)
1284 template <
class MS1,
class MS2>
friend MS1 &_msmsusetsup(MS1 &ms1,
const MS2 &ms2)
1285 #if(CXSC_INDEX_CHECK)
1292 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1293 #if(CXSC_INDEX_CHECK)
1300 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1301 #if(CXSC_INDEX_CHECK)
1306 template <
class MS1,
class MS2>
friend MS1 &_msmsconvassign(MS1 &ms1,
const MS2 &ms2)
1307 #if(CXSC_INDEX_CHECK)
1313 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1314 #if(CXSC_INDEX_CHECK)
1319 template <
class MS1,
class MS2>
friend MS1 &_msmssectassign(MS1 &ms1,
const MS2 &ms2)
1320 #if(CXSC_INDEX_CHECK)
1332 template <
class V,
class MS,
class S>
friend V &_vmslimultassign(V &v,
const MS &ms)
1333 #if(CXSC_INDEX_CHECK)
1344 explicit INLINE
l_rmatrix_slice(
l_rmatrix &a,
const int &l1,
const int &u1,
const int &l2,
const int &u2) noexcept:dat(a.dat),offset1(l1-a.lb1),offset2(l2-a.lb2),mxsize(a.xsize),mysize(a.ysize),start1(l1),end1(u1),start2(l2),end2(u2),sxsize(u2-l2+1),sysize(u1-l1+1) { }
1346 explicit INLINE
l_rmatrix_slice(
l_rmatrix_slice &a,
const int &l1,
const int &u1,
const int &l2,
const int &u2) noexcept:dat(a.dat),offset1(a.offset1+l1-a.start1),offset2(a.offset2+l2-a.start2),mxsize(a.mxsize),mysize(a.mysize),start1(l1),end1(u1),start2(l2),end2(u2),sxsize(u2-l2+1),sysize(u1-l1+1) { }
1349 INLINE
l_rmatrix_slice(
const l_rmatrix_slice &ms) noexcept:dat(ms.dat),offset1(ms.offset1),offset2(ms.offset2),mxsize(ms.mxsize),mysize(ms.mysize),start1(ms.start1),end1(ms.end1),start2(ms.start2),end2(ms.end2),sxsize(ms.sxsize),sysize(ms.sysize) { }
1355 #if(CXSC_INDEX_CHECK)
1363 #if(CXSC_INDEX_CHECK)
1370 #if(CXSC_INDEX_CHECK)
1379 #if(CXSC_INDEX_CHECK)
1386 #if(CXSC_INDEX_CHECK)
1393 #if(CXSC_INDEX_CHECK)
1400 #if(CXSC_INDEX_CHECK)
1409 #if(CXSC_INDEX_CHECK)
1416 #if(CXSC_INDEX_CHECK)
1423 #if(CXSC_INDEX_CHECK)
1430 #if(CXSC_INDEX_CHECK)
1439 #if(CXSC_INDEX_CHECK)
1446 #if(CXSC_INDEX_CHECK)
1453 #if(CXSC_INDEX_CHECK)
1460 #if(CXSC_INDEX_CHECK)
1467 #if(CXSC_INDEX_CHECK)
1474 #if(CXSC_INDEX_CHECK)
1481 #if(CXSC_INDEX_CHECK)
1488 #if(CXSC_INDEX_CHECK)
1495 #if(CXSC_INDEX_CHECK)
1502 #if(CXSC_INDEX_CHECK)
1509 #if(CXSC_INDEX_CHECK)
1516 #if(CXSC_INDEX_CHECK)
1523 #if(CXSC_INDEX_CHECK)
1530 #if(CXSC_INDEX_CHECK)
1537 #if(CXSC_INDEX_CHECK)
1544 #if(CXSC_INDEX_CHECK)
1551 #if(CXSC_INDEX_CHECK)
1558 #if(CXSC_INDEX_CHECK)
1571 INLINE
operator void*() noexcept;
1582 INLINE l_rvector
operator /(
const l_rmatrix_subv &rv,
const l_real &s) noexcept;
1584 INLINE l_rvector
operator *(
const l_rmatrix_subv &rv,
const l_real &s) noexcept;
1586 INLINE l_rvector
operator *(
const l_real &s,
const l_rmatrix_subv &rv) noexcept;
1591 INLINE l_rvector
abs(
const l_rmatrix_subv &mv) noexcept;
1594 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1595 #if(CXSC_INDEX_CHECK)
1600 INLINE
void accumulate(dotprecision &dp,
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1602 #if(CXSC_INDEX_CHECK)
1607 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector &rv2)
1609 #if(CXSC_INDEX_CHECK)
1614 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice & sl1,
const l_rmatrix_subv &rv2)
1616 #if(CXSC_INDEX_CHECK)
1621 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector_slice &sl2)
1623 #if(CXSC_INDEX_CHECK)
1630 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1631 #if(CXSC_INDEX_CHECK)
1636 INLINE
void accumulate(idotprecision &dp,
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1638 #if(CXSC_INDEX_CHECK)
1643 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector &rv2)
1645 #if(CXSC_INDEX_CHECK)
1650 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice & sl1,
const l_rmatrix_subv &rv2)
1652 #if(CXSC_INDEX_CHECK)
1657 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector_slice &sl2)
1659 #if(CXSC_INDEX_CHECK)
1666 INLINE l_real
operator *(
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1667 #if(CXSC_INDEX_CHECK)
1672 INLINE l_real
operator *(
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1674 #if(CXSC_INDEX_CHECK)
1679 INLINE l_real
operator *(
const l_rmatrix_subv &rv1,
const l_rvector &rv2)
1681 #if(CXSC_INDEX_CHECK)
1686 INLINE l_real
operator *(
const l_rvector_slice &sl,
const l_rmatrix_subv &sv)
1688 #if(CXSC_INDEX_CHECK)
1693 INLINE l_real
operator *(
const l_rmatrix_subv &mv,
const l_rvector_slice &vs)
1695 #if(CXSC_INDEX_CHECK)
1702 INLINE l_rvector operator +(
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1703 #if(CXSC_INDEX_CHECK)
1708 INLINE l_rvector operator +(
const l_rmatrix_subv &rv1,
const l_rvector &rv2)
1710 #if(CXSC_INDEX_CHECK)
1715 INLINE l_rvector operator +(
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1717 #if(CXSC_INDEX_CHECK)
1722 INLINE l_rvector operator +(
const l_rvector_slice &sl,
const l_rmatrix_subv &mv)
1724 #if(CXSC_INDEX_CHECK)
1729 INLINE l_rvector operator +(
const l_rmatrix_subv &mv,
const l_rvector_slice &sl)
1731 #if(CXSC_INDEX_CHECK)
1738 INLINE l_rvector operator -(
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1739 #if(CXSC_INDEX_CHECK)
1744 INLINE l_rvector operator -(
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1746 #if(CXSC_INDEX_CHECK)
1751 INLINE l_rvector operator -(
const l_rmatrix_subv &rv1,
const l_rvector &rv2)
1753 #if(CXSC_INDEX_CHECK)
1758 INLINE l_rvector operator -(
const l_rvector_slice &sl,
const l_rmatrix_subv &mv)
1760 #if(CXSC_INDEX_CHECK)
1765 INLINE l_rvector operator -(
const l_rmatrix_subv &mv,
const l_rvector_slice &sl)
1767 #if(CXSC_INDEX_CHECK)
1777 INLINE l_rmatrix
_l_rmatrix(
const l_rmatrix &rm) noexcept;
1779 INLINE l_rmatrix
_l_rmatrix(
const l_rvector &v) noexcept;
1781 INLINE l_rmatrix
_l_rmatrix(
const l_rvector_slice &v) noexcept;
1783 INLINE l_rmatrix
_l_rmatrix(
const l_real &r) noexcept;
1786 INLINE
int Lb(
const l_rmatrix &rm,
const int &i)
1787 #if(CXSC_INDEX_CHECK)
1792 INLINE
int Ub(
const l_rmatrix &rm,
const int &i)
1794 #if(CXSC_INDEX_CHECK)
1799 INLINE
int Lb(
const l_rmatrix_slice &rm,
const int &i)
1801 #if(CXSC_INDEX_CHECK)
1806 INLINE
int Ub(
const l_rmatrix_slice &rm,
const int &i)
1808 #if(CXSC_INDEX_CHECK)
1813 INLINE l_rmatrix &
SetLb(l_rmatrix &m,
const int &i,
const int &j)
1815 #if(CXSC_INDEX_CHECK)
1820 INLINE l_rmatrix &
SetUb(l_rmatrix &m,
const int &i,
const int &j)
1822 #if(CXSC_INDEX_CHECK)
1827 INLINE
void Resize(l_rmatrix &A) noexcept;
1830 INLINE
void Resize(l_rmatrix &A,
const int &m,
const int &n)
1831 #if(CXSC_INDEX_CHECK)
1836 INLINE
void Resize(l_rmatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
1838 #if(CXSC_INDEX_CHECK)
1845 INLINE l_rmatrix
abs(
const l_rmatrix &m) noexcept;
1847 INLINE l_rmatrix
abs(
const l_rmatrix_slice &ms) noexcept;
1852 INLINE l_rmatrix
operator *(
const l_real &c,
const l_rmatrix &m) noexcept;
1854 INLINE l_rmatrix
operator *(
const l_real &c,
const l_rmatrix_slice &ms) noexcept;
1856 INLINE l_rmatrix
operator *(
const l_rmatrix &m,
const l_real &c) noexcept;
1858 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const l_real &c) noexcept;
1860 INLINE l_rmatrix &
operator *=(l_rmatrix &m,
const l_real &c) noexcept;
1862 INLINE l_rmatrix
operator /(
const l_rmatrix &m,
const l_real &c) noexcept;
1864 INLINE l_rmatrix
operator /(
const l_rmatrix_slice &ms,
const l_real &c) noexcept;
1866 INLINE l_rmatrix &
operator /=(l_rmatrix &m,
const l_real &c) noexcept;
1871 INLINE l_rmatrix
operator *(
const real &c,
const l_rmatrix &m) noexcept;
1873 INLINE l_rmatrix
operator *(
const real &c,
const l_rmatrix_slice &ms) noexcept;
1875 INLINE l_rmatrix
operator *(
const l_rmatrix &m,
const real &c) noexcept;
1877 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const real &c) noexcept;
1879 INLINE l_rmatrix &
operator *=(l_rmatrix &m,
const real &c) noexcept;
1881 INLINE l_rmatrix
operator /(
const l_rmatrix &m,
const real &c) noexcept;
1883 INLINE l_rmatrix
operator /(
const l_rmatrix_slice &ms,
const real &c) noexcept;
1885 INLINE l_rmatrix &
operator /=(l_rmatrix &m,
const real &c) noexcept;
1889 INLINE l_rmatrix
operator *(
const l_real &c,
const rmatrix &m) noexcept;
1891 INLINE l_rmatrix
operator *(
const l_real &c,
const rmatrix_slice &ms) noexcept;
1893 INLINE l_rmatrix
operator *(
const rmatrix &m,
const l_real &c) noexcept;
1895 INLINE l_rmatrix
operator *(
const rmatrix_slice &ms,
const l_real &c) noexcept;
1897 INLINE l_rmatrix
operator /(
const rmatrix &m,
const l_real &c) noexcept;
1899 INLINE l_rmatrix
operator /(
const rmatrix_slice &ms,
const l_real &c) noexcept;
1906 INLINE l_rvector
operator *(
const l_rmatrix &m,
const l_rvector &v)
1907 #if(CXSC_INDEX_CHECK)
1912 INLINE l_rvector
operator *(
const l_rmatrix_slice &ms,
const l_rvector &v)
1914 #if(CXSC_INDEX_CHECK)
1919 INLINE l_rvector
operator *(
const l_rvector &v,
const l_rmatrix &m)
1921 #if(CXSC_INDEX_CHECK)
1926 INLINE l_rvector
operator *(
const l_rvector &v,
const l_rmatrix_slice &ms)
1928 #if(CXSC_INDEX_CHECK)
1933 INLINE l_rvector &
operator *=(l_rvector &v,
const l_rmatrix &m)
1935 #if(CXSC_INDEX_CHECK)
1940 INLINE l_rvector &
operator *=(l_rvector &v,
const l_rmatrix_slice &ms)
1942 #if(CXSC_INDEX_CHECK)
1949 INLINE l_rvector
operator *(
const l_rvector_slice &v,
const l_rmatrix &m)
1950 #if(CXSC_INDEX_CHECK)
1955 INLINE l_rvector
operator *(
const l_rvector_slice &v,
const l_rmatrix_slice &m)
1957 #if(CXSC_INDEX_CHECK)
1966 INLINE l_rvector
operator *(
const rvector &v,
const l_rmatrix &m)
1967 #if(CXSC_INDEX_CHECK)
1972 INLINE l_rvector
operator *(
const rvector &v,
const l_rmatrix_slice &ms)
1974 #if(CXSC_INDEX_CHECK)
1979 INLINE l_rvector
operator *(
const rvector_slice &v,
const l_rmatrix &m)
1981 #if(CXSC_INDEX_CHECK)
1988 INLINE l_rvector
operator *(
const l_rmatrix &m,
const rvector &v)
1989 #if(CXSC_INDEX_CHECK)
1994 INLINE l_rvector
operator *(
const l_rmatrix_slice &ms,
const rvector &v)
1996 #if(CXSC_INDEX_CHECK)
2006 INLINE
const l_rmatrix &operator +(
const l_rmatrix &m1) noexcept;
2008 INLINE l_rmatrix operator +(
const l_rmatrix_slice &ms) noexcept;
2010 INLINE l_rmatrix operator +(
const l_rmatrix &m1,
const l_rmatrix &m2)
2011 #if(CXSC_INDEX_CHECK)
2016 INLINE l_rmatrix operator +(
const l_rmatrix &m,
const l_rmatrix_slice &ms)
2018 #if(CXSC_INDEX_CHECK)
2023 INLINE l_rmatrix operator +(
const l_rmatrix_slice &ms,
const l_rmatrix &m)
2025 #if(CXSC_INDEX_CHECK)
2030 INLINE l_rmatrix operator +(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
2032 #if(CXSC_INDEX_CHECK)
2037 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const l_rmatrix &m2)
2039 #if(CXSC_INDEX_CHECK)
2044 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const l_rmatrix_slice &ms)
2046 #if(CXSC_INDEX_CHECK)
2053 INLINE l_rmatrix operator -(
const l_rmatrix &m) noexcept;
2055 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms) noexcept;
2057 INLINE l_rmatrix operator -(
const l_rmatrix &m1,
const l_rmatrix &m2)
2058 #if(CXSC_INDEX_CHECK)
2063 INLINE l_rmatrix operator -(
const l_rmatrix &m,
const l_rmatrix_slice &ms)
2065 #if(CXSC_INDEX_CHECK)
2070 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms,
const l_rmatrix &m)
2072 #if(CXSC_INDEX_CHECK)
2077 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2079 #if(CXSC_INDEX_CHECK)
2084 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const l_rmatrix &m2)
2086 #if(CXSC_INDEX_CHECK)
2091 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const l_rmatrix_slice &ms)
2093 #if(CXSC_INDEX_CHECK)
2100 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const l_rmatrix &m2)
2101 #if(CXSC_INDEX_CHECK)
2106 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
2108 #if(CXSC_INDEX_CHECK)
2113 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const l_rmatrix &m1)
2115 #if(CXSC_INDEX_CHECK)
2120 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2122 #if(CXSC_INDEX_CHECK)
2127 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const l_rmatrix &m2)
2129 #if(CXSC_INDEX_CHECK)
2134 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const l_rmatrix_slice &ms)
2136 #if(CXSC_INDEX_CHECK)
2145 INLINE l_rmatrix operator +(
const rmatrix &m1,
const l_rmatrix &m2)
2146 #if(CXSC_INDEX_CHECK)
2151 INLINE l_rmatrix operator +(
const l_rmatrix &m1,
const rmatrix &m2)
2153 #if(CXSC_INDEX_CHECK)
2158 INLINE l_rmatrix operator +(
const rmatrix &m,
const l_rmatrix_slice &ms)
2160 #if(CXSC_INDEX_CHECK)
2165 INLINE l_rmatrix operator +(
const l_rmatrix &m,
const rmatrix_slice &ms)
2167 #if(CXSC_INDEX_CHECK)
2172 INLINE l_rmatrix operator +(
const rmatrix_slice &ms,
const l_rmatrix &m)
2174 #if(CXSC_INDEX_CHECK)
2179 INLINE l_rmatrix operator +(
const l_rmatrix_slice &ms,
const rmatrix &m)
2181 #if(CXSC_INDEX_CHECK)
2186 INLINE l_rmatrix operator +(
const rmatrix_slice &m1,
const l_rmatrix_slice &m2)
2188 #if(CXSC_INDEX_CHECK)
2193 INLINE l_rmatrix operator +(
const l_rmatrix_slice &m1,
const rmatrix_slice &m2)
2195 #if(CXSC_INDEX_CHECK)
2200 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const rmatrix &m2)
2202 #if(CXSC_INDEX_CHECK)
2207 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const rmatrix_slice &ms)
2209 #if(CXSC_INDEX_CHECK)
2216 INLINE l_rmatrix operator -(
const rmatrix &m1,
const l_rmatrix &m2)
2217 #if(CXSC_INDEX_CHECK)
2222 INLINE l_rmatrix operator -(
const l_rmatrix &m1,
const rmatrix &m2)
2224 #if(CXSC_INDEX_CHECK)
2229 INLINE l_rmatrix operator -(
const rmatrix &m,
const l_rmatrix_slice &ms)
2231 #if(CXSC_INDEX_CHECK)
2236 INLINE l_rmatrix operator -(
const l_rmatrix &m,
const rmatrix_slice &ms)
2238 #if(CXSC_INDEX_CHECK)
2243 INLINE l_rmatrix operator -(
const rmatrix_slice &ms,
const l_rmatrix &m)
2245 #if(CXSC_INDEX_CHECK)
2250 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms,
const rmatrix &m)
2252 #if(CXSC_INDEX_CHECK)
2257 INLINE l_rmatrix operator -(
const rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2259 #if(CXSC_INDEX_CHECK)
2264 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms1,
const rmatrix_slice &ms2)
2266 #if(CXSC_INDEX_CHECK)
2271 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const rmatrix &m2)
2273 #if(CXSC_INDEX_CHECK)
2278 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const rmatrix_slice &ms)
2280 #if(CXSC_INDEX_CHECK)
2287 INLINE l_rmatrix
operator *(
const rmatrix &m1,
const l_rmatrix &m2)
2288 #if(CXSC_INDEX_CHECK)
2293 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const rmatrix &m2)
2295 #if(CXSC_INDEX_CHECK)
2300 INLINE l_rmatrix
operator *(
const rmatrix &m1,
const l_rmatrix_slice &ms)
2302 #if(CXSC_INDEX_CHECK)
2307 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const rmatrix_slice &ms)
2309 #if(CXSC_INDEX_CHECK)
2314 INLINE l_rmatrix
operator *(
const rmatrix_slice &ms,
const l_rmatrix &m1)
2316 #if(CXSC_INDEX_CHECK)
2321 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const rmatrix &m1)
2323 #if(CXSC_INDEX_CHECK)
2328 INLINE l_rmatrix
operator *(
const rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2330 #if(CXSC_INDEX_CHECK)
2335 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms1,
const rmatrix_slice &ms2)
2337 #if(CXSC_INDEX_CHECK)
2342 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const rmatrix &m2)
2344 #if(CXSC_INDEX_CHECK)
2349 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const rmatrix_slice &ms)
2351 #if(CXSC_INDEX_CHECK)
2363 INLINE
bool operator ==(
const l_rmatrix &m1,
const l_rmatrix &m2) noexcept;
2365 INLINE
bool operator !=(
const l_rmatrix &m1,
const l_rmatrix &m2) noexcept;
2367 INLINE
bool operator <(
const l_rmatrix &m1,
const l_rmatrix &m2) noexcept;
2369 INLINE
bool operator <=(
const l_rmatrix &m1,
const l_rmatrix &m2) noexcept;
2371 INLINE
bool operator >(
const l_rmatrix &m1,
const l_rmatrix &m2) noexcept;
2373 INLINE
bool operator >=(
const l_rmatrix &m1,
const l_rmatrix &m2) noexcept;
2375 INLINE
bool operator ==(
const l_rmatrix &m1,
const l_rmatrix_slice &ms) noexcept;
2377 INLINE
bool operator !=(
const l_rmatrix &m1,
const l_rmatrix_slice &ms) noexcept;
2379 INLINE
bool operator <(
const l_rmatrix &m1,
const l_rmatrix_slice &ms) noexcept;
2381 INLINE
bool operator <=(
const l_rmatrix &m1,
const l_rmatrix_slice &ms) noexcept;
2383 INLINE
bool operator >(
const l_rmatrix &m1,
const l_rmatrix_slice &ms) noexcept;
2385 INLINE
bool operator >=(
const l_rmatrix &m1,
const l_rmatrix_slice &ms) noexcept;
2390 INLINE
bool operator ==(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2) noexcept;
2392 INLINE
bool operator !=(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2) noexcept;
2394 INLINE
bool operator <(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2) noexcept;
2396 INLINE
bool operator <=(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2) noexcept;
2398 INLINE
bool operator >(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2) noexcept;
2400 INLINE
bool operator >=(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2) noexcept;
2405 INLINE
bool operator !(
const l_rmatrix &ms) noexcept;
2407 INLINE
bool operator !(
const l_rmatrix_slice &ms) noexcept;
2412 INLINE std::ostream &operator <<(std::ostream &s,
const l_rmatrix &r) noexcept;
2414 INLINE std::ostream &operator <<(std::ostream &s,
const l_rmatrix_slice &r) noexcept;
2416 INLINE std::istream &operator >>(std::istream &s,l_rmatrix &r) noexcept;
2418 INLINE std::istream &operator >>(std::istream &s,l_rmatrix_slice &r) noexcept;
2421 INLINE
int RowLen (
const l_rmatrix& );
2423 INLINE
int ColLen (
const l_rmatrix& );
2425 INLINE
int RowLen (
const l_rmatrix_slice& );
2427 INLINE
int ColLen (
const l_rmatrix_slice& );
2429 l_rmatrix
Id (
const l_rmatrix& );
2431 l_rmatrix
transp (
const l_rmatrix& );
2437 #ifdef _CXSC_INCL_INL
2438 #include "matrix.inl"
2439 #include "l_rmatrix.inl"
2442 #ifdef _CXSC_LIVECTOR_HPP_INCLUDED
2443 # ifdef _CXSC_INCL_INL
2444 # include "liveclrmat.inl"
2446 # include "liveclrmat.hpp"
2450 #ifdef _CXSC_IVECTOR_HPP_INCLUDED
2451 # ifdef _CXSC_INCL_INL
2452 # include "iveclrmat.inl"
2454 # include "iveclrmat.hpp"
2458 #ifdef _CXSC_IMATRIX_HPP_INCLUDED
2459 # ifdef _CXSC_INCL_INL
2460 # include "lrmatimat.inl"
2462 # include "lrmatimat.hpp"