C-XSC - A C++ Class Library for Extended Scientific Computing
2.5.4
|
26 #ifndef _CXSC_LIMATRIX_HPP_INCLUDED
27 #define _CXSC_LIMATRIX_HPP_INCLUDED
29 #include "xscclass.hpp"
31 #include "l_ivector.hpp"
34 #include "imatrix.hpp"
35 #include "l_rmatrix.hpp"
40 class l_imatrix_slice;
54 int size,start,offset;
86 #ifdef _CXSC_FRIEND_TPL
88 template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
94 template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r) noexcept;
95 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
101 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv) noexcept;
102 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
103 #if(CXSC_INDEX_CHECK)
108 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
109 #if(CXSC_INDEX_CHECK)
114 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
115 #if(CXSC_INDEX_CHECK)
120 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
121 #if(CXSC_INDEX_CHECK)
126 template <
class MV,
class V>
friend MV &_mvvsetre(MV &v,
const V &rv)
127 #if(CXSC_INDEX_CHECK)
132 template <
class MV,
class V>
friend MV &_mvvsetim(MV &v,
const V &rv)
133 #if(CXSC_INDEX_CHECK)
138 template <
class MV,
class V>
friend V _mvabs(
const MV &mv) noexcept;
139 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv) noexcept;
140 template <
class MV,
class V>
friend V _mvmid(
const MV &mv) noexcept;
141 template <
class MV,
class V>
friend V _mvinf(
const MV &mv) noexcept;
142 template <
class MV,
class V>
friend V _mvsup(
const MV &mv) noexcept;
144 template <
class MV,
class S>
friend MV &_mvssetinf(MV &mv,
const S &s) noexcept;
145 template <
class MV,
class S>
friend MV &_mvssetsup(MV &mv,
const S &s) noexcept;
146 template <
class MV,
class S>
friend MV &_mvsusetinf(MV &mv,
const S &s) noexcept;
147 template <
class MV,
class S>
friend MV &_mvsusetsup(MV &mv,
const S &s) noexcept;
149 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
150 #if(CXSC_INDEX_CHECK)
155 template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
156 #if(CXSC_INDEX_CHECK)
161 template <
class MV1,
class MV2,
class S>
friend S _mvmvlimult(
const MV1 & rv1,
const MV2 &rv2)
162 #if(CXSC_INDEX_CHECK)
167 template <
class V,
class MV,
class S>
friend S _vmvlimult(
const V &rv1,
const MV &rv2)
168 #if(CXSC_INDEX_CHECK)
173 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s) noexcept;
174 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
175 #if(CXSC_INDEX_CHECK)
180 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
181 #if(CXSC_INDEX_CHECK)
186 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
187 #if(CXSC_INDEX_CHECK)
192 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
193 #if(CXSC_INDEX_CHECK)
198 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
199 #if(CXSC_INDEX_CHECK)
204 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s) noexcept;
205 template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r) noexcept;
206 template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r) noexcept;
207 template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r) noexcept;
208 template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r) noexcept;
209 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
210 #if(CXSC_INDEX_CHECK)
215 template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
216 #if(CXSC_INDEX_CHECK)
221 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
222 #if(CXSC_INDEX_CHECK)
227 template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
228 #if(CXSC_INDEX_CHECK)
233 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
234 #if(CXSC_INDEX_CHECK)
239 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
240 #if(CXSC_INDEX_CHECK)
245 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
246 #if(CXSC_INDEX_CHECK)
251 template <
class MV1,
class MV2,
class E>
friend E _mvmvsect(
const MV1 &rv1,
const MV2 &rv2)
252 #if(CXSC_INDEX_CHECK)
257 template <
class MV,
class V,
class E>
friend E _mvvsect(
const MV &rv1,
const V &rv2)
258 #if(CXSC_INDEX_CHECK)
263 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
264 #if(CXSC_INDEX_CHECK)
269 template <
class V,
class MV>
friend V &_vmvsectassign(V &rv,
const MV &v)
270 #if(CXSC_INDEX_CHECK)
282 explicit INLINE
l_imatrix_subv (
l_interval *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) { }
296 #if(CXSC_INDEX_CHECK)
303 #if(CXSC_INDEX_CHECK)
310 #if(CXSC_INDEX_CHECK)
317 #if(CXSC_INDEX_CHECK)
327 #if(CXSC_INDEX_CHECK)
334 #if(CXSC_INDEX_CHECK)
341 #if(CXSC_INDEX_CHECK)
348 #if(CXSC_INDEX_CHECK)
361 #if(CXSC_INDEX_CHECK)
368 #if(CXSC_INDEX_CHECK)
375 #if(CXSC_INDEX_CHECK)
382 #if(CXSC_INDEX_CHECK)
395 #if(CXSC_INDEX_CHECK)
402 #if(CXSC_INDEX_CHECK)
409 #if(CXSC_INDEX_CHECK)
416 #if(CXSC_INDEX_CHECK)
430 #if(CXSC_INDEX_CHECK)
439 #if(CXSC_INDEX_CHECK)
446 #if(CXSC_INDEX_CHECK)
462 #if(CXSC_INDEX_CHECK)
469 #if(CXSC_INDEX_CHECK)
476 #if(CXSC_INDEX_CHECK)
483 #if(CXSC_INDEX_CHECK)
490 #if(CXSC_INDEX_CHECK)
497 #if(CXSC_INDEX_CHECK)
504 #if(CXSC_INDEX_CHECK)
511 #if(CXSC_INDEX_CHECK)
527 #if(CXSC_INDEX_CHECK)
534 #if(CXSC_INDEX_CHECK)
541 #if(CXSC_INDEX_CHECK)
548 #if(CXSC_INDEX_CHECK)
555 #if(CXSC_INDEX_CHECK)
562 #if(CXSC_INDEX_CHECK)
569 #if(CXSC_INDEX_CHECK)
576 #if(CXSC_INDEX_CHECK)
592 #if(CXSC_INDEX_CHECK)
599 #if(CXSC_INDEX_CHECK)
606 #if(CXSC_INDEX_CHECK)
613 #if(CXSC_INDEX_CHECK)
620 #if(CXSC_INDEX_CHECK)
627 #if(CXSC_INDEX_CHECK)
634 #if(CXSC_INDEX_CHECK)
641 #if(CXSC_INDEX_CHECK)
657 #if(CXSC_INDEX_CHECK)
664 #if(CXSC_INDEX_CHECK)
671 #if(CXSC_INDEX_CHECK)
678 #if(CXSC_INDEX_CHECK)
685 #if(CXSC_INDEX_CHECK)
692 #if(CXSC_INDEX_CHECK)
699 #if(CXSC_INDEX_CHECK)
706 #if(CXSC_INDEX_CHECK)
719 class l_imatrix_slice;
731 int lb1,ub1,lb2,ub2,xsize,ysize;
735 #ifdef _CXSC_FRIEND_TPL
737 template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
738 #if(CXSC_INDEX_CHECK)
743 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
744 #if(CXSC_INDEX_CHECK)
749 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms) noexcept;
750 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms) noexcept;
751 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
752 #if(CXSC_INDEX_CHECK)
757 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r) noexcept;
758 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
759 #if(CXSC_INDEX_CHECK)
764 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v) noexcept;
765 template <
class M>
friend int _mlb(
const M &m,
const int &i)
766 #if(CXSC_INDEX_CHECK)
771 template <
class M>
friend int _mub(
const M &m,
const int &i)
772 #if(CXSC_INDEX_CHECK)
777 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
778 #if(CXSC_INDEX_CHECK)
783 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
784 #if(CXSC_INDEX_CHECK)
789 template <
class M>
friend void _mresize(M &A) noexcept;
790 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
791 #if(CXSC_INDEX_CHECK)
796 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
797 #if(CXSC_INDEX_CHECK)
802 template <
class M,
class E>
friend E _mabs(
const M &m) noexcept;
803 template <
class MS,
class E>
friend E _msabs(
const MS &ms) noexcept;
804 template <
class M,
class E>
friend E _mdiam(
const M &m) noexcept;
805 template <
class M,
class E>
friend E _mmid(
const M &m) noexcept;
806 template <
class M,
class E>
friend E _minf(
const M &m) noexcept;
807 template <
class M,
class E>
friend E _msup(
const M &m) noexcept;
808 template <
class M1,
class M2>
friend M1 &_mmsetinf(M1 &m1,
const M2 &m2)
809 #if(CXSC_INDEX_CHECK)
814 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
815 #if(CXSC_INDEX_CHECK)
820 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
821 #if(CXSC_INDEX_CHECK)
826 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
827 #if(CXSC_INDEX_CHECK)
832 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
833 #if(CXSC_INDEX_CHECK)
838 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
839 #if(CXSC_INDEX_CHECK)
844 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
845 #if(CXSC_INDEX_CHECK)
850 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
851 #if(CXSC_INDEX_CHECK)
857 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
858 #if(CXSC_INDEX_CHECK)
863 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
864 #if(CXSC_INDEX_CHECK)
869 template <
class M>
friend M _mminus(
const M &m) noexcept;
870 template <
class MS,
class E>
friend E _msminus(
const MS &ms) noexcept;
871 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
872 #if(CXSC_INDEX_CHECK)
877 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
878 #if(CXSC_INDEX_CHECK)
883 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
884 #if(CXSC_INDEX_CHECK)
889 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
890 #if(CXSC_INDEX_CHECK)
895 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
896 #if(CXSC_INDEX_CHECK)
901 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
902 #if(CXSC_INDEX_CHECK)
907 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
908 #if(CXSC_INDEX_CHECK)
913 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
914 #if(CXSC_INDEX_CHECK)
919 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
920 #if(CXSC_INDEX_CHECK)
925 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
926 #if(CXSC_INDEX_CHECK)
931 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
932 #if(CXSC_INDEX_CHECK)
937 template <
class M1,
class M2,
class E>
friend E _mmlimult(
const M1 &m1,
const M2 &m2)
938 #if(CXSC_INDEX_CHECK)
943 template <
class M1,
class M2,
class S>
friend M1 &_mmlimultassign(M1 &m1,
const M2 &m2)
944 #if(CXSC_INDEX_CHECK)
949 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
950 #if(CXSC_INDEX_CHECK)
955 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
956 #if(CXSC_INDEX_CHECK)
961 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
962 #if(CXSC_INDEX_CHECK)
967 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
968 #if(CXSC_INDEX_CHECK)
973 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
974 #if(CXSC_INDEX_CHECK)
979 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
980 #if(CXSC_INDEX_CHECK)
985 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
986 #if(CXSC_INDEX_CHECK)
991 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
992 #if(CXSC_INDEX_CHECK)
997 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
998 #if(CXSC_INDEX_CHECK)
1003 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1004 #if(CXSC_INDEX_CHECK)
1009 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
1010 #if(CXSC_INDEX_CHECK)
1015 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1016 #if(CXSC_INDEX_CHECK)
1021 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
1022 #if(CXSC_INDEX_CHECK)
1027 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1028 #if(CXSC_INDEX_CHECK)
1033 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
1034 #if(CXSC_INDEX_CHECK)
1039 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1040 #if(CXSC_INDEX_CHECK)
1046 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m) noexcept;
1047 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c) noexcept;
1048 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms) noexcept;
1049 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c) noexcept;
1050 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c) noexcept;
1051 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c) noexcept;
1053 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
1054 #if(CXSC_INDEX_CHECK)
1059 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
1060 #if(CXSC_INDEX_CHECK)
1065 template <
class V,
class M,
class S>
friend V &_vmlimultassign(V &v,
const M &m)
1066 #if(CXSC_INDEX_CHECK)
1071 template <
class VS,
class M,
class S>
friend VS &_vsmlimultassign(VS &v,
const M &m)
1072 #if(CXSC_INDEX_CHECK)
1078 template <
class M>
friend void *_mvoid(
const M &m) noexcept;
1079 template <
class M>
friend bool _mnot(
const M &m) noexcept;
1080 template <
class MS>
friend void *_msvoid(
const MS &ms) noexcept;
1081 template <
class MS>
friend bool _msnot(
const MS &ms) noexcept;
1082 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2) noexcept;
1083 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2) noexcept;
1084 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2) noexcept;
1085 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2) noexcept;
1086 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms) noexcept;
1087 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms) noexcept;
1088 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms) noexcept;
1089 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms) noexcept;
1090 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1) noexcept;
1091 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1) noexcept;
1092 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r) noexcept;
1093 template <
class M>
friend std::istream &_min(std::istream &s,M &r) noexcept;
1096 template <
class M1,
class MS2>
friend M1 &_mmssetre(M1 &m1,
const MS2 &ms2)
1097 #if(CXSC_INDEX_CHECK)
1102 template <
class M1,
class MS2>
friend M1 &_mmssetim(M1 &m1,
const MS2 &ms2)
1103 #if(CXSC_INDEX_CHECK)
1110 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
1111 #if(CXSC_INDEX_CHECK)
1116 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1117 #if(CXSC_INDEX_CHECK)
1136 explicit INLINE
l_imatrix(
const int &m,
const int &n)
1137 #if(CXSC_INDEX_CHECK)
1142 explicit INLINE
l_imatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
1144 #if(CXSC_INDEX_CHECK)
1233 INLINE ~
l_imatrix() noexcept {
delete [] dat; }
1239 #if(CXSC_INDEX_CHECK)
1246 #if(CXSC_INDEX_CHECK)
1255 #if(CXSC_INDEX_CHECK)
1262 #if(CXSC_INDEX_CHECK)
1267 INLINE
operator void*() noexcept;
1284 int offset1,offset2,mxsize,mysize;
1285 int start1,end1,start2,end2,sxsize,sysize;
1289 #ifdef _CXSC_FRIEND_TPL
1291 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
1292 #if(CXSC_INDEX_CHECK)
1297 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
1298 #if(CXSC_INDEX_CHECK)
1303 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
1304 #if(CXSC_INDEX_CHECK)
1309 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms) noexcept;
1310 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r) noexcept;
1311 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
1312 #if(CXSC_INDEX_CHECK)
1317 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
1318 #if(CXSC_INDEX_CHECK)
1323 template <
class MS,
class E>
friend E _msabs(
const MS &ms) noexcept;
1324 template <
class MS,
class E>
friend E _msinf(
const MS &ms) noexcept;
1325 template <
class MS,
class E>
friend E _mssup(
const MS &ms) noexcept;
1326 template <
class MS,
class E>
friend E _msdiam(
const MS &ms) noexcept;
1327 template <
class MS,
class E>
friend E _msmid(
const MS &ms) noexcept;
1328 template <
class MS1,
class M2>
friend MS1 &_msmsetinf(MS1 &ms1,
const M2 &m2)
1329 #if(CXSC_INDEX_CHECK)
1334 template <
class MS1,
class M2>
friend MS1 &_msmsetsup(MS1 &ms1,
const M2 &m2)
1335 #if(CXSC_INDEX_CHECK)
1340 template <
class MS1,
class MS2>
friend MS1 &_msmssetinf(MS1 &ms1,
const MS2 &ms2)
1341 #if(CXSC_INDEX_CHECK)
1346 template <
class MS1,
class MS2>
friend MS1 &_msmssetsup(MS1 &ms1,
const MS2 &ms2)
1347 #if(CXSC_INDEX_CHECK)
1352 template <
class MS1,
class M2>
friend MS1 &_msmusetinf(MS1 &ms1,
const M2 &m2)
1353 #if(CXSC_INDEX_CHECK)
1358 template <
class MS1,
class M2>
friend MS1 &_msmusetsup(MS1 &ms1,
const M2 &m2)
1359 #if(CXSC_INDEX_CHECK)
1364 template <
class MS1,
class MS2>
friend MS1 &_msmsusetinf(MS1 &ms1,
const MS2 &ms2)
1365 #if(CXSC_INDEX_CHECK)
1370 template <
class MS1,
class MS2>
friend MS1 &_msmsusetsup(MS1 &ms1,
const MS2 &ms2)
1371 #if(CXSC_INDEX_CHECK)
1377 template <
class MS,
class E>
friend E _msminus(
const MS &ms) noexcept;
1378 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1379 #if(CXSC_INDEX_CHECK)
1384 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1385 #if(CXSC_INDEX_CHECK)
1390 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1391 #if(CXSC_INDEX_CHECK)
1396 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1397 #if(CXSC_INDEX_CHECK)
1402 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
1403 #if(CXSC_INDEX_CHECK)
1408 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1409 #if(CXSC_INDEX_CHECK)
1414 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1415 #if(CXSC_INDEX_CHECK)
1420 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1421 #if(CXSC_INDEX_CHECK)
1426 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1427 #if(CXSC_INDEX_CHECK)
1432 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1433 #if(CXSC_INDEX_CHECK)
1438 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
1439 #if(CXSC_INDEX_CHECK)
1444 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1445 #if(CXSC_INDEX_CHECK)
1450 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1451 #if(CXSC_INDEX_CHECK)
1456 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1457 #if(CXSC_INDEX_CHECK)
1462 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1463 #if(CXSC_INDEX_CHECK)
1468 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1469 #if(CXSC_INDEX_CHECK)
1474 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1475 #if(CXSC_INDEX_CHECK)
1480 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
1481 #if(CXSC_INDEX_CHECK)
1486 template <
class MS1,
class MS2>
friend MS1 &_msmsconvassign(MS1 &ms1,
const MS2 &ms2)
1487 #if(CXSC_INDEX_CHECK)
1492 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1493 #if(CXSC_INDEX_CHECK)
1498 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1499 #if(CXSC_INDEX_CHECK)
1504 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1505 #if(CXSC_INDEX_CHECK)
1510 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
1511 #if(CXSC_INDEX_CHECK)
1516 template <
class MS1,
class MS2>
friend MS1 &_msmssectassign(MS1 &ms1,
const MS2 &ms2)
1517 #if(CXSC_INDEX_CHECK)
1522 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1523 #if(CXSC_INDEX_CHECK)
1529 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
1530 #if(CXSC_INDEX_CHECK)
1535 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1536 #if(CXSC_INDEX_CHECK)
1541 template <
class V,
class MS,
class S>
friend V &_vmslimultassign(V &v,
const MS &ms)
1542 #if(CXSC_INDEX_CHECK)
1548 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms) noexcept;
1549 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c) noexcept;
1550 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c) noexcept;
1551 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c) noexcept;
1553 template <
class MS>
friend void *_msvoid(
const MS &ms) noexcept;
1554 template <
class MS>
friend bool _msnot(
const MS &ms) noexcept;
1555 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms) noexcept;
1556 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms) noexcept;
1557 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms) noexcept;
1558 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms) noexcept;
1559 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1) noexcept;
1560 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1) noexcept;
1561 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1562 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1563 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1564 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1565 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r) noexcept;
1566 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r) noexcept;
1574 explicit INLINE
l_imatrix_slice(
l_imatrix &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) { }
1576 explicit INLINE
l_imatrix_slice(
l_imatrix_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) { }
1579 INLINE
l_imatrix_slice(
const l_imatrix_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) { }
1585 #if(CXSC_INDEX_CHECK)
1593 #if(CXSC_INDEX_CHECK)
1600 #if(CXSC_INDEX_CHECK)
1609 #if(CXSC_INDEX_CHECK)
1616 #if(CXSC_INDEX_CHECK)
1623 #if(CXSC_INDEX_CHECK)
1631 #if(CXSC_INDEX_CHECK)
1638 #if(CXSC_INDEX_CHECK)
1647 #if(CXSC_INDEX_CHECK)
1654 #if(CXSC_INDEX_CHECK)
1661 #if(CXSC_INDEX_CHECK)
1670 #if(CXSC_INDEX_CHECK)
1677 #if(CXSC_INDEX_CHECK)
1686 #if(CXSC_INDEX_CHECK)
1693 #if(CXSC_INDEX_CHECK)
1700 #if(CXSC_INDEX_CHECK)
1709 #if(CXSC_INDEX_CHECK)
1716 #if(CXSC_INDEX_CHECK)
1725 #if(CXSC_INDEX_CHECK)
1732 #if(CXSC_INDEX_CHECK)
1739 #if(CXSC_INDEX_CHECK)
1747 #if(CXSC_INDEX_CHECK)
1754 #if(CXSC_INDEX_CHECK)
1763 #if(CXSC_INDEX_CHECK)
1770 #if(CXSC_INDEX_CHECK)
1775 INLINE
operator void*() noexcept;
1787 #if(CXSC_INDEX_CHECK)
1794 #if(CXSC_INDEX_CHECK)
1801 #if(CXSC_INDEX_CHECK)
1808 #if(CXSC_INDEX_CHECK)
1815 #if(CXSC_INDEX_CHECK)
1822 #if(CXSC_INDEX_CHECK)
1829 #if(CXSC_INDEX_CHECK)
1836 #if(CXSC_INDEX_CHECK)
1843 #if(CXSC_INDEX_CHECK)
1850 #if(CXSC_INDEX_CHECK)
1866 #if(CXSC_INDEX_CHECK)
1873 #if(CXSC_INDEX_CHECK)
1880 #if(CXSC_INDEX_CHECK)
1887 #if(CXSC_INDEX_CHECK)
1894 #if(CXSC_INDEX_CHECK)
1901 #if(CXSC_INDEX_CHECK)
1908 #if(CXSC_INDEX_CHECK)
1915 #if(CXSC_INDEX_CHECK)
1922 #if(CXSC_INDEX_CHECK)
1929 #if(CXSC_INDEX_CHECK)
1945 #if(CXSC_INDEX_CHECK)
1952 #if(CXSC_INDEX_CHECK)
1959 #if(CXSC_INDEX_CHECK)
1966 #if(CXSC_INDEX_CHECK)
1973 #if(CXSC_INDEX_CHECK)
1980 #if(CXSC_INDEX_CHECK)
1987 #if(CXSC_INDEX_CHECK)
1994 #if(CXSC_INDEX_CHECK)
2001 #if(CXSC_INDEX_CHECK)
2008 #if(CXSC_INDEX_CHECK)
2024 #if(CXSC_INDEX_CHECK)
2031 #if(CXSC_INDEX_CHECK)
2038 #if(CXSC_INDEX_CHECK)
2045 #if(CXSC_INDEX_CHECK)
2052 #if(CXSC_INDEX_CHECK)
2059 #if(CXSC_INDEX_CHECK)
2066 #if(CXSC_INDEX_CHECK)
2073 #if(CXSC_INDEX_CHECK)
2080 #if(CXSC_INDEX_CHECK)
2087 #if(CXSC_INDEX_CHECK)
2120 #if(CXSC_INDEX_CHECK)
2127 #if(CXSC_INDEX_CHECK)
2134 #if(CXSC_INDEX_CHECK)
2141 #if(CXSC_INDEX_CHECK)
2161 #if(CXSC_INDEX_CHECK)
2168 #if(CXSC_INDEX_CHECK)
2175 #if(CXSC_INDEX_CHECK)
2182 #if(CXSC_INDEX_CHECK)
2189 #if(CXSC_INDEX_CHECK)
2197 #if(CXSC_INDEX_CHECK)
2204 #if(CXSC_INDEX_CHECK)
2211 #if(CXSC_INDEX_CHECK)
2218 #if(CXSC_INDEX_CHECK)
2225 #if(CXSC_INDEX_CHECK)
2233 #if(CXSC_INDEX_CHECK)
2240 #if(CXSC_INDEX_CHECK)
2247 #if(CXSC_INDEX_CHECK)
2254 #if(CXSC_INDEX_CHECK)
2261 #if(CXSC_INDEX_CHECK)
2269 #if(CXSC_INDEX_CHECK)
2276 #if(CXSC_INDEX_CHECK)
2283 #if(CXSC_INDEX_CHECK)
2290 #if(CXSC_INDEX_CHECK)
2297 #if(CXSC_INDEX_CHECK)
2307 #if(CXSC_INDEX_CHECK)
2314 #if(CXSC_INDEX_CHECK)
2321 #if(CXSC_INDEX_CHECK)
2328 #if(CXSC_INDEX_CHECK)
2335 #if(CXSC_INDEX_CHECK)
2342 #if(CXSC_INDEX_CHECK)
2352 #if(CXSC_INDEX_CHECK)
2359 #if(CXSC_INDEX_CHECK)
2366 #if(CXSC_INDEX_CHECK)
2373 #if(CXSC_INDEX_CHECK)
2380 #if(CXSC_INDEX_CHECK)
2387 #if(CXSC_INDEX_CHECK)
2397 #if(CXSC_INDEX_CHECK)
2404 #if(CXSC_INDEX_CHECK)
2411 #if(CXSC_INDEX_CHECK)
2418 #if(CXSC_INDEX_CHECK)
2425 #if(CXSC_INDEX_CHECK)
2432 #if(CXSC_INDEX_CHECK)
2453 #if(CXSC_INDEX_CHECK)
2460 #if(CXSC_INDEX_CHECK)
2467 #if(CXSC_INDEX_CHECK)
2474 #if(CXSC_INDEX_CHECK)
2481 #if(CXSC_INDEX_CHECK)
2488 #if(CXSC_INDEX_CHECK)
2497 #if(CXSC_INDEX_CHECK)
2502 INLINE
void Resize(
l_imatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
2504 #if(CXSC_INDEX_CHECK)
2532 #if(CXSC_INDEX_CHECK)
2539 #if(CXSC_INDEX_CHECK)
2546 #if(CXSC_INDEX_CHECK)
2553 #if(CXSC_INDEX_CHECK)
2560 #if(CXSC_INDEX_CHECK)
2567 #if(CXSC_INDEX_CHECK)
2574 #if(CXSC_INDEX_CHECK)
2581 #if(CXSC_INDEX_CHECK)
2588 #if(CXSC_INDEX_CHECK)
2595 #if(CXSC_INDEX_CHECK)
2602 #if(CXSC_INDEX_CHECK)
2609 #if(CXSC_INDEX_CHECK)
2616 #if(CXSC_INDEX_CHECK)
2623 #if(CXSC_INDEX_CHECK)
2630 #if(CXSC_INDEX_CHECK)
2637 #if(CXSC_INDEX_CHECK)
2767 #if(CXSC_INDEX_CHECK)
2774 #if(CXSC_INDEX_CHECK)
2781 #if(CXSC_INDEX_CHECK)
2788 #if(CXSC_INDEX_CHECK)
2795 #if(CXSC_INDEX_CHECK)
2802 #if(CXSC_INDEX_CHECK)
2810 #if(CXSC_INDEX_CHECK)
2817 #if(CXSC_INDEX_CHECK)
2827 #if(CXSC_INDEX_CHECK)
2834 #if(CXSC_INDEX_CHECK)
2841 #if(CXSC_INDEX_CHECK)
2849 #if(CXSC_INDEX_CHECK)
2856 #if(CXSC_INDEX_CHECK)
2866 #if(CXSC_INDEX_CHECK)
2873 #if(CXSC_INDEX_CHECK)
2880 #if(CXSC_INDEX_CHECK)
2888 #if(CXSC_INDEX_CHECK)
2895 #if(CXSC_INDEX_CHECK)
2905 #if(CXSC_INDEX_CHECK)
2912 #if(CXSC_INDEX_CHECK)
2919 #if(CXSC_INDEX_CHECK)
2927 #if(CXSC_INDEX_CHECK)
2934 #if(CXSC_INDEX_CHECK)
2949 #if(CXSC_INDEX_CHECK)
2956 #if(CXSC_INDEX_CHECK)
2963 #if(CXSC_INDEX_CHECK)
2970 #if(CXSC_INDEX_CHECK)
2977 #if(CXSC_INDEX_CHECK)
2984 #if(CXSC_INDEX_CHECK)
2996 #if(CXSC_INDEX_CHECK)
3003 #if(CXSC_INDEX_CHECK)
3010 #if(CXSC_INDEX_CHECK)
3017 #if(CXSC_INDEX_CHECK)
3024 #if(CXSC_INDEX_CHECK)
3031 #if(CXSC_INDEX_CHECK)
3039 #if(CXSC_INDEX_CHECK)
3046 #if(CXSC_INDEX_CHECK)
3053 #if(CXSC_INDEX_CHECK)
3060 #if(CXSC_INDEX_CHECK)
3067 #if(CXSC_INDEX_CHECK)
3074 #if(CXSC_INDEX_CHECK)
3083 #if(CXSC_INDEX_CHECK)
3090 #if(CXSC_INDEX_CHECK)
3097 #if(CXSC_INDEX_CHECK)
3104 #if(CXSC_INDEX_CHECK)
3111 #if(CXSC_INDEX_CHECK)
3118 #if(CXSC_INDEX_CHECK)
3126 #if(CXSC_INDEX_CHECK)
3133 #if(CXSC_INDEX_CHECK)
3140 #if(CXSC_INDEX_CHECK)
3147 #if(CXSC_INDEX_CHECK)
3154 #if(CXSC_INDEX_CHECK)
3161 #if(CXSC_INDEX_CHECK)
3170 #if(CXSC_INDEX_CHECK)
3177 #if(CXSC_INDEX_CHECK)
3184 #if(CXSC_INDEX_CHECK)
3191 #if(CXSC_INDEX_CHECK)
3198 #if(CXSC_INDEX_CHECK)
3205 #if(CXSC_INDEX_CHECK)
3212 #if(CXSC_INDEX_CHECK)
3219 #if(CXSC_INDEX_CHECK)
3226 #if(CXSC_INDEX_CHECK)
3233 #if(CXSC_INDEX_CHECK)
3241 #if(CXSC_INDEX_CHECK)
3248 #if(CXSC_INDEX_CHECK)
3255 #if(CXSC_INDEX_CHECK)
3262 #if(CXSC_INDEX_CHECK)
3269 #if(CXSC_INDEX_CHECK)
3276 #if(CXSC_INDEX_CHECK)
3283 #if(CXSC_INDEX_CHECK)
3290 #if(CXSC_INDEX_CHECK)
3297 #if(CXSC_INDEX_CHECK)
3304 #if(CXSC_INDEX_CHECK)
3312 #if(CXSC_INDEX_CHECK)
3319 #if(CXSC_INDEX_CHECK)
3326 #if(CXSC_INDEX_CHECK)
3333 #if(CXSC_INDEX_CHECK)
3340 #if(CXSC_INDEX_CHECK)
3347 #if(CXSC_INDEX_CHECK)
3354 #if(CXSC_INDEX_CHECK)
3361 #if(CXSC_INDEX_CHECK)
3368 #if(CXSC_INDEX_CHECK)
3375 #if(CXSC_INDEX_CHECK)
3383 #if(CXSC_INDEX_CHECK)
3390 #if(CXSC_INDEX_CHECK)
3397 #if(CXSC_INDEX_CHECK)
3404 #if(CXSC_INDEX_CHECK)
3411 #if(CXSC_INDEX_CHECK)
3418 #if(CXSC_INDEX_CHECK)
3425 #if(CXSC_INDEX_CHECK)
3432 #if(CXSC_INDEX_CHECK)
3439 #if(CXSC_INDEX_CHECK)
3446 #if(CXSC_INDEX_CHECK)
3454 #if(CXSC_INDEX_CHECK)
3461 #if(CXSC_INDEX_CHECK)
3468 #if(CXSC_INDEX_CHECK)
3475 #if(CXSC_INDEX_CHECK)
3482 #if(CXSC_INDEX_CHECK)
3489 #if(CXSC_INDEX_CHECK)
3496 #if(CXSC_INDEX_CHECK)
3503 #if(CXSC_INDEX_CHECK)
3510 #if(CXSC_INDEX_CHECK)
3517 #if(CXSC_INDEX_CHECK)
3526 #if(CXSC_INDEX_CHECK)
3533 #if(CXSC_INDEX_CHECK)
3540 #if(CXSC_INDEX_CHECK)
3547 #if(CXSC_INDEX_CHECK)
3554 #if(CXSC_INDEX_CHECK)
3561 #if(CXSC_INDEX_CHECK)
3568 #if(CXSC_INDEX_CHECK)
3575 #if(CXSC_INDEX_CHECK)
3582 #if(CXSC_INDEX_CHECK)
3589 #if(CXSC_INDEX_CHECK)
3597 #if(CXSC_INDEX_CHECK)
3604 #if(CXSC_INDEX_CHECK)
3611 #if(CXSC_INDEX_CHECK)
3618 #if(CXSC_INDEX_CHECK)
3625 #if(CXSC_INDEX_CHECK)
3632 #if(CXSC_INDEX_CHECK)
3639 #if(CXSC_INDEX_CHECK)
3646 #if(CXSC_INDEX_CHECK)
3653 #if(CXSC_INDEX_CHECK)
3660 #if(CXSC_INDEX_CHECK)
3668 #if(CXSC_INDEX_CHECK)
3675 #if(CXSC_INDEX_CHECK)
3682 #if(CXSC_INDEX_CHECK)
3689 #if(CXSC_INDEX_CHECK)
3696 #if(CXSC_INDEX_CHECK)
3703 #if(CXSC_INDEX_CHECK)
3710 #if(CXSC_INDEX_CHECK)
3717 #if(CXSC_INDEX_CHECK)
3724 #if(CXSC_INDEX_CHECK)
3731 #if(CXSC_INDEX_CHECK)
3739 #if(CXSC_INDEX_CHECK)
3746 #if(CXSC_INDEX_CHECK)
3753 #if(CXSC_INDEX_CHECK)
3760 #if(CXSC_INDEX_CHECK)
3767 #if(CXSC_INDEX_CHECK)
3774 #if(CXSC_INDEX_CHECK)
3781 #if(CXSC_INDEX_CHECK)
3788 #if(CXSC_INDEX_CHECK)
3795 #if(CXSC_INDEX_CHECK)
3802 #if(CXSC_INDEX_CHECK)
3810 #if(CXSC_INDEX_CHECK)
3817 #if(CXSC_INDEX_CHECK)
3824 #if(CXSC_INDEX_CHECK)
3831 #if(CXSC_INDEX_CHECK)
3838 #if(CXSC_INDEX_CHECK)
3845 #if(CXSC_INDEX_CHECK)
3852 #if(CXSC_INDEX_CHECK)
3859 #if(CXSC_INDEX_CHECK)
3866 #if(CXSC_INDEX_CHECK)
3873 #if(CXSC_INDEX_CHECK)
3882 #if(CXSC_INDEX_CHECK)
3889 #if(CXSC_INDEX_CHECK)
3896 #if(CXSC_INDEX_CHECK)
3903 #if(CXSC_INDEX_CHECK)
3910 #if(CXSC_INDEX_CHECK)
3917 #if(CXSC_INDEX_CHECK)
3924 #if(CXSC_INDEX_CHECK)
3931 #if(CXSC_INDEX_CHECK)
3938 #if(CXSC_INDEX_CHECK)
3945 #if(CXSC_INDEX_CHECK)
3953 #if(CXSC_INDEX_CHECK)
3960 #if(CXSC_INDEX_CHECK)
3967 #if(CXSC_INDEX_CHECK)
3974 #if(CXSC_INDEX_CHECK)
3981 #if(CXSC_INDEX_CHECK)
3988 #if(CXSC_INDEX_CHECK)
3995 #if(CXSC_INDEX_CHECK)
4002 #if(CXSC_INDEX_CHECK)
4009 #if(CXSC_INDEX_CHECK)
4016 #if(CXSC_INDEX_CHECK)
4024 #if(CXSC_INDEX_CHECK)
4031 #if(CXSC_INDEX_CHECK)
4038 #if(CXSC_INDEX_CHECK)
4045 #if(CXSC_INDEX_CHECK)
4052 #if(CXSC_INDEX_CHECK)
4059 #if(CXSC_INDEX_CHECK)
4066 #if(CXSC_INDEX_CHECK)
4073 #if(CXSC_INDEX_CHECK)
4080 #if(CXSC_INDEX_CHECK)
4087 #if(CXSC_INDEX_CHECK)
4095 #if(CXSC_INDEX_CHECK)
4102 #if(CXSC_INDEX_CHECK)
4109 #if(CXSC_INDEX_CHECK)
4116 #if(CXSC_INDEX_CHECK)
4123 #if(CXSC_INDEX_CHECK)
4130 #if(CXSC_INDEX_CHECK)
4137 #if(CXSC_INDEX_CHECK)
4144 #if(CXSC_INDEX_CHECK)
4151 #if(CXSC_INDEX_CHECK)
4158 #if(CXSC_INDEX_CHECK)
4166 #if(CXSC_INDEX_CHECK)
4173 #if(CXSC_INDEX_CHECK)
4180 #if(CXSC_INDEX_CHECK)
4187 #if(CXSC_INDEX_CHECK)
4194 #if(CXSC_INDEX_CHECK)
4201 #if(CXSC_INDEX_CHECK)
4208 #if(CXSC_INDEX_CHECK)
4215 #if(CXSC_INDEX_CHECK)
4222 #if(CXSC_INDEX_CHECK)
4229 #if(CXSC_INDEX_CHECK)
4238 #if(CXSC_INDEX_CHECK)
4245 #if(CXSC_INDEX_CHECK)
4252 #if(CXSC_INDEX_CHECK)
4259 #if(CXSC_INDEX_CHECK)
4266 #if(CXSC_INDEX_CHECK)
4273 #if(CXSC_INDEX_CHECK)
4280 #if(CXSC_INDEX_CHECK)
4287 #if(CXSC_INDEX_CHECK)
4295 #if(CXSC_INDEX_CHECK)
4302 #if(CXSC_INDEX_CHECK)
4309 #if(CXSC_INDEX_CHECK)
4316 #if(CXSC_INDEX_CHECK)
4323 #if(CXSC_INDEX_CHECK)
4330 #if(CXSC_INDEX_CHECK)
4337 #if(CXSC_INDEX_CHECK)
4344 #if(CXSC_INDEX_CHECK)
4352 #if(CXSC_INDEX_CHECK)
4359 #if(CXSC_INDEX_CHECK)
4366 #if(CXSC_INDEX_CHECK)
4373 #if(CXSC_INDEX_CHECK)
4380 #if(CXSC_INDEX_CHECK)
4387 #if(CXSC_INDEX_CHECK)
4394 #if(CXSC_INDEX_CHECK)
4401 #if(CXSC_INDEX_CHECK)
4409 #if(CXSC_INDEX_CHECK)
4416 #if(CXSC_INDEX_CHECK)
4423 #if(CXSC_INDEX_CHECK)
4430 #if(CXSC_INDEX_CHECK)
4437 #if(CXSC_INDEX_CHECK)
4444 #if(CXSC_INDEX_CHECK)
4451 #if(CXSC_INDEX_CHECK)
4458 #if(CXSC_INDEX_CHECK)
4466 #if(CXSC_INDEX_CHECK)
4473 #if(CXSC_INDEX_CHECK)
4480 #if(CXSC_INDEX_CHECK)
4487 #if(CXSC_INDEX_CHECK)
4494 #if(CXSC_INDEX_CHECK)
4501 #if(CXSC_INDEX_CHECK)
4508 #if(CXSC_INDEX_CHECK)
4515 #if(CXSC_INDEX_CHECK)
4524 #if(CXSC_INDEX_CHECK)
4531 #if(CXSC_INDEX_CHECK)
4538 #if(CXSC_INDEX_CHECK)
4545 #if(CXSC_INDEX_CHECK)
4552 #if(CXSC_INDEX_CHECK)
4559 #if(CXSC_INDEX_CHECK)
4566 #if(CXSC_INDEX_CHECK)
4573 #if(CXSC_INDEX_CHECK)
4583 #if(CXSC_INDEX_CHECK)
4590 #if(CXSC_INDEX_CHECK)
4597 #if(CXSC_INDEX_CHECK)
4604 #if(CXSC_INDEX_CHECK)
4611 #if(CXSC_INDEX_CHECK)
4618 #if(CXSC_INDEX_CHECK)
4625 #if(CXSC_INDEX_CHECK)
4632 #if(CXSC_INDEX_CHECK)
4686 INLINE
bool operator !(
const l_imatrix &ms) noexcept;
4693 INLINE std::ostream &operator <<(std::ostream &s,
const l_imatrix &r) noexcept;
4695 INLINE std::ostream &operator <<(std::ostream &s,
const l_imatrix_slice &r) noexcept;
4697 INLINE std::istream &operator >>(std::istream &s,
l_imatrix &r) noexcept;
4699 INLINE std::istream &operator >>(std::istream &s,
l_imatrix_slice &r) noexcept;
4720 #ifdef _CXSC_INCL_INL
4721 #include "matrix.inl"
4722 #include "l_imatrix.inl"
l_imatrix_slice(l_imatrix_slice &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class l_imatrix_slice.
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
l_imatrix_subv & operator&=(const l_ivector &rv) noexcept
Allocates the intersection of the arguments to the first argument.
The Multiple-Precision Data Type l_rmatrix_slice.
l_imatrix_subv & operator+=(const l_interval &c) noexcept
Implementation of addition and allocation operation.
l_imatrix() noexcept
Constructor of class l_imatrix.
l_imatrix & operator()() noexcept
Operator for accessing the whole matrix.
The Data Type imatrix_slice.
int RowLen(const cimatrix &)
Returns the row dimension.
The Multiple-Precision Data Type l_rmatrix_subv.
The Data Type imatrix_subv.
int Ub(const cimatrix &rm, const int &i) noexcept
Returns the upper bound index.
The Scalar Type interval.
l_imatrix_slice & operator+=(const l_interval &c) noexcept
Implementation of addition and allocation operation.
cimatrix & operator*=(cimatrix &m, const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.
int ColLen(const cimatrix &)
Returns the column dimension.
The Multiple-Precision Data Type l_rmatrix.
l_imatrix_subv(l_interval *d, const int &l, const int &u, const int &s, const int &st, const int &o) noexcept
Constructor of class l_imatrix_subv.
The Data Type idotprecision.
l_imatrix_slice & operator/=(const l_interval &c) noexcept
Implementation of division and allocation operation.
l_imatrix_subv operator[](const int &i) noexcept
Operator for accessing a single row of the matrix.
l_imatrix_slice & operator*=(const l_interval &c) noexcept
Implementation of multiplication and allocation operation.
l_imatrix_subv & operator*=(const l_interval &c) noexcept
Implementation of multiplication and allocation operation.
l_interval & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector.
The Multiple-Precision Data Type l_imatrix.
l_imatrix_slice & operator()() noexcept
Operator for accessing the whole matrix.
The Data Type ivector_slice.
cimatrix & SetUb(cimatrix &m, const int &i, const int &j) noexcept
Sets the upper bound index.
friend int Lb(const l_imatrix_subv &rv) noexcept
Returns the lower bound of the vector.
The Data Type rvector_slice.
l_imatrix_subv & operator()() noexcept
Operator for accessing the whole vector.
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
int Lb(const cimatrix &rm, const int &i) noexcept
Returns the lower bound index.
l_imatrix_slice(const l_imatrix_slice &ms) noexcept
Constructor of class l_imatrix_slice.
friend l_imatrix_subv Row(l_imatrix &m, const int &i) noexcept
Returns one row of the matrix as a vector.
The Multiple-Precision Data Type l_imatrix_slice.
The Multiple-Precision Data Type l_interval.
cimatrix & SetLb(cimatrix &m, const int &i, const int &j) noexcept
Sets the lower bound index.
friend l_imatrix_subv Col(l_imatrix &m, const int &i) noexcept
Returns one column of the matrix as a vector.
The Multiple-Precision Data Type l_rvector_slice.
The Data Type rmatrix_subv.
friend int Ub(const l_imatrix_subv &rv) noexcept
Returns the upper bound of the vector.
cimatrix_subv & SetUncheckedInf(cimatrix_subv &iv, const complex &r) noexcept
Returns the matrix with the new unchecked given infimum value.
The namespace cxsc, providing all functionality of the class library C-XSC.
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc) noexcept
Implementation of standard algebraic addition and allocation operation.
The Multiple-Precision Data Type l_real.
l_imatrix_slice & operator=(const l_imatrix &m) noexcept
Implementation of standard assigning operator.
void DoubleSize(cimatrix &A)
Doubles the size of the matrix.
l_imatrix & operator=(const l_interval &r) noexcept
Implementation of standard assigning operator.
l_imatrix_subv & operator=(const l_imatrix_subv &rv) noexcept
Implementation of standard assigning operator.
cimatrix transp(const cimatrix &A)
Returns the transposed matrix.
l_imatrix_slice & operator&=(const l_imatrix &m1) noexcept
Allocates the intersection of the arguments to the first argument.
l_imatrix_subv & operator/=(const l_interval &c) noexcept
Implementation of division and allocation operation.
cvector diam(const cimatrix_subv &mv) noexcept
Returns the diameter of the matrix.
l_imatrix_slice(l_imatrix &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class l_imatrix_slice.
l_imatrix_subv operator[](const int &i) const noexcept
Operator for accessing a single row of the matrix.
The Data Type rmatrix_slice.
cimatrix _imatrix(const cimatrix &rm) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
The Multiple-Precision Data Type l_rvector.
l_imatrix_slice & operator-=(const l_interval &c) noexcept
Implementation of subtraction and allocation operation.
l_imatrix_subv & operator-=(const l_interval &c) noexcept
Implementation of subtraction and allocation operation.
l_imatrix_subv & operator|=(const l_ivector &rv) noexcept
Allocates the convex hull of the arguments to the first argument.
The Multiple-Precision Data Type l_ivector_slice.
The Multiple-Precision Data Type l_ivector.
cimatrix Id(const cimatrix &A)
Returns the Identity matrix.
void Resize(cimatrix &A) noexcept
Resizes the matrix.
l_imatrix_subv(const l_imatrix_subv &v) noexcept
Constructor of class l_imatrix_subv.
l_ivector() noexcept
Constructor of class l_ivector.
The Multiple-Precision Data Type l_imatrix_subv.
l_imatrix_slice & operator|=(const l_imatrix &m1) noexcept
Allocates the convex hull of the arguments to the first argument.
real MaxRelDiam(const imatrix_subv &v)
Computes the relative diameter .