26 #ifndef _CXSC_IMATRIX_HPP_INCLUDED
27 #define _CXSC_IMATRIX_HPP_INCLUDED
29 #include "xscclass.hpp"
32 #include "ivector.hpp"
35 #include "rmatrix.hpp"
65 int size,start,offset;
98 #ifdef _CXSC_FRIEND_TPL
100 template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
101 #if(CXSC_INDEX_CHECK)
106 template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r) noexcept;
107 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
108 #if(CXSC_INDEX_CHECK)
113 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv) noexcept;
114 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
115 #if(CXSC_INDEX_CHECK)
120 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
121 #if(CXSC_INDEX_CHECK)
126 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
127 #if(CXSC_INDEX_CHECK)
132 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
133 #if(CXSC_INDEX_CHECK)
138 template <
class MV,
class S>
friend MV &_mvssetinf(MV &mv,
const S &s) noexcept;
139 template <
class MV,
class S>
friend MV &_mvssetsup(MV &mv,
const S &s) noexcept;
140 template <
class MV,
class S>
friend MV &_mvsusetinf(MV &mv,
const S &s) noexcept;
141 template <
class MV,
class S>
friend MV &_mvsusetsup(MV &mv,
const S &s) noexcept;
142 template <
class MV,
class V>
friend V _mvabs(
const MV &mv) noexcept;
143 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv) noexcept;
144 template <
class MV,
class V>
friend V _mvmid(
const MV &mv) noexcept;
145 template <
class MV,
class V>
friend V _mvinf(
const MV &mv) noexcept;
146 template <
class MV,
class V>
friend V _mvsup(
const MV &mv) noexcept;
147 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
148 #if(CXSC_INDEX_CHECK)
153 template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
154 #if(CXSC_INDEX_CHECK)
159 template <
class MV1,
class MV2,
class S>
friend S _mvmvimult(
const MV1 & rv1,
const MV2 &rv2)
160 #if(CXSC_INDEX_CHECK)
165 template <
class V,
class MV,
class S>
friend S _vmvimult(
const V &rv1,
const MV &rv2)
166 #if(CXSC_INDEX_CHECK)
171 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s) noexcept;
172 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
173 #if(CXSC_INDEX_CHECK)
178 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
179 #if(CXSC_INDEX_CHECK)
184 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
185 #if(CXSC_INDEX_CHECK)
190 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
191 #if(CXSC_INDEX_CHECK)
196 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
197 #if(CXSC_INDEX_CHECK)
202 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s) noexcept;
203 template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r) noexcept;
204 template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r) noexcept;
205 template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r) noexcept;
206 template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r) noexcept;
207 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
208 #if(CXSC_INDEX_CHECK)
213 template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
214 #if(CXSC_INDEX_CHECK)
219 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
220 #if(CXSC_INDEX_CHECK)
225 template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
226 #if(CXSC_INDEX_CHECK)
231 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
232 #if(CXSC_INDEX_CHECK)
237 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
238 #if(CXSC_INDEX_CHECK)
243 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
244 #if(CXSC_INDEX_CHECK)
249 template <
class MV1,
class MV2,
class E>
friend E _mvmvsect(
const MV1 &rv1,
const MV2 &rv2)
250 #if(CXSC_INDEX_CHECK)
255 template <
class MV,
class V,
class E>
friend E _mvvsect(
const MV &rv1,
const V &rv2)
256 #if(CXSC_INDEX_CHECK)
261 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
262 #if(CXSC_INDEX_CHECK)
267 template <
class V,
class MV>
friend V &_vmvsectassign(V &rv,
const MV &v)
268 #if(CXSC_INDEX_CHECK)
275 template <
class V,
class MV>
friend V &_vmvsetim(V &rv,
const MV &v)
276 #if(CXSC_INDEX_CHECK)
281 template <
class V,
class MV>
friend V &_vmvsetre(V &rv,
const MV &v)
282 #if(CXSC_INDEX_CHECK)
306 explicit INLINE
imatrix_subv (
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) { }
333 #if(CXSC_INDEX_CHECK)
340 #if(CXSC_INDEX_CHECK)
347 #if(CXSC_INDEX_CHECK)
354 #if(CXSC_INDEX_CHECK)
366 #if(CXSC_INDEX_CHECK)
373 #if(CXSC_INDEX_CHECK)
380 #if(CXSC_INDEX_CHECK)
387 #if(CXSC_INDEX_CHECK)
402 #if(CXSC_INDEX_CHECK)
410 #if(CXSC_INDEX_CHECK)
420 #if(CXSC_INDEX_CHECK)
427 #if(CXSC_INDEX_CHECK)
496 #if(CXSC_INDEX_CHECK)
503 #if(CXSC_INDEX_CHECK)
510 #if(CXSC_INDEX_CHECK)
517 #if(CXSC_INDEX_CHECK)
524 #if(CXSC_INDEX_CHECK)
531 #if(CXSC_INDEX_CHECK)
538 #if(CXSC_INDEX_CHECK)
545 #if(CXSC_INDEX_CHECK)
562 #if(CXSC_INDEX_CHECK)
569 #if(CXSC_INDEX_CHECK)
576 #if(CXSC_INDEX_CHECK)
583 #if(CXSC_INDEX_CHECK)
590 #if(CXSC_INDEX_CHECK)
597 #if(CXSC_INDEX_CHECK)
604 #if(CXSC_INDEX_CHECK)
611 #if(CXSC_INDEX_CHECK)
623 INLINE imatrix_subv
Row(imatrix &m,
const int &i)
624 #if(CXSC_INDEX_CHECK)
629 INLINE imatrix_subv
Col(imatrix &m,
const int &i)
631 #if(CXSC_INDEX_CHECK)
636 INLINE imatrix_subv
Row(
const imatrix &m,
const int &i)
638 #if(CXSC_INDEX_CHECK)
643 INLINE imatrix_subv
Col(
const imatrix &m,
const int &i)
645 #if(CXSC_INDEX_CHECK)
667 int lb1,ub1,lb2,ub2,xsize,ysize;
671 #ifdef _CXSC_FRIEND_TPL
673 template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
674 #if(CXSC_INDEX_CHECK)
679 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
680 #if(CXSC_INDEX_CHECK)
685 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms) noexcept;
686 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms) noexcept;
687 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
688 #if(CXSC_INDEX_CHECK)
693 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r) noexcept;
694 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
695 #if(CXSC_INDEX_CHECK)
700 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v) noexcept;
701 template <
class M>
friend int _mlb(
const M &m,
const int &i)
702 #if(CXSC_INDEX_CHECK)
707 template <
class M>
friend int _mub(
const M &m,
const int &i)
708 #if(CXSC_INDEX_CHECK)
713 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
714 #if(CXSC_INDEX_CHECK)
719 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
720 #if(CXSC_INDEX_CHECK)
725 template <
class M>
friend void _mresize(M &A) noexcept;
726 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
727 #if(CXSC_INDEX_CHECK)
732 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
733 #if(CXSC_INDEX_CHECK)
738 template <
class M,
class E>
friend E _mabs(
const M &m) noexcept;
739 template <
class MS,
class E>
friend E _msabs(
const MS &ms) noexcept;
740 template <
class M,
class E>
friend E _mdiam(
const M &m) noexcept;
741 template <
class M,
class E>
friend E _mmid(
const M &m) noexcept;
742 template <
class M,
class E>
friend E _minf(
const M &m) noexcept;
743 template <
class M,
class E>
friend E _msup(
const M &m) noexcept;
744 template <
class M1,
class M2>
friend M1 &_mmsetinf(M1 &m1,
const M2 &m2)
745 #if(CXSC_INDEX_CHECK)
750 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
751 #if(CXSC_INDEX_CHECK)
756 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
757 #if(CXSC_INDEX_CHECK)
762 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
763 #if(CXSC_INDEX_CHECK)
768 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
769 #if(CXSC_INDEX_CHECK)
774 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
775 #if(CXSC_INDEX_CHECK)
780 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
781 #if(CXSC_INDEX_CHECK)
786 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
787 #if(CXSC_INDEX_CHECK)
793 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
794 #if(CXSC_INDEX_CHECK)
799 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
800 #if(CXSC_INDEX_CHECK)
805 template <
class M>
friend M _mminus(
const M &m) noexcept;
806 template <
class MS,
class E>
friend E _msminus(
const MS &ms) noexcept;
807 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
808 #if(CXSC_INDEX_CHECK)
813 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
814 #if(CXSC_INDEX_CHECK)
819 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
820 #if(CXSC_INDEX_CHECK)
825 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
826 #if(CXSC_INDEX_CHECK)
831 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
832 #if(CXSC_INDEX_CHECK)
837 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
838 #if(CXSC_INDEX_CHECK)
843 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
844 #if(CXSC_INDEX_CHECK)
849 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
850 #if(CXSC_INDEX_CHECK)
855 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
856 #if(CXSC_INDEX_CHECK)
861 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
862 #if(CXSC_INDEX_CHECK)
867 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
868 #if(CXSC_INDEX_CHECK)
873 template <
class M1,
class M2,
class E>
friend E _mmimult(
const M1 &m1,
const M2 &m2)
874 #if(CXSC_INDEX_CHECK)
879 template <
class M1,
class M2,
class S>
friend M1 &_mmimultassign(M1 &m1,
const M2 &m2)
880 #if(CXSC_INDEX_CHECK)
885 template <
class M,
class MS,
class E>
friend E _mmsimult(
const M &m1,
const MS &ms)
886 #if(CXSC_INDEX_CHECK)
891 template <
class MS,
class M,
class E>
friend E _msmimult(
const MS &ms,
const M &m2)
892 #if(CXSC_INDEX_CHECK)
897 template <
class M,
class MS,
class S>
friend M &_mmsimultassign(M &m1,
const MS &ms)
898 #if(CXSC_INDEX_CHECK)
903 template <
class MS1,
class MS2,
class E>
friend E _msmsimult(
const MS1 &ms1,
const MS2 &ms2)
904 #if(CXSC_INDEX_CHECK)
909 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
910 #if(CXSC_INDEX_CHECK)
915 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
916 #if(CXSC_INDEX_CHECK)
921 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
922 #if(CXSC_INDEX_CHECK)
927 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
928 #if(CXSC_INDEX_CHECK)
933 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
934 #if(CXSC_INDEX_CHECK)
939 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
940 #if(CXSC_INDEX_CHECK)
945 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
946 #if(CXSC_INDEX_CHECK)
951 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
952 #if(CXSC_INDEX_CHECK)
957 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
958 #if(CXSC_INDEX_CHECK)
963 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
964 #if(CXSC_INDEX_CHECK)
969 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
970 #if(CXSC_INDEX_CHECK)
975 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
976 #if(CXSC_INDEX_CHECK)
982 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m) noexcept;
983 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c) noexcept;
984 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms) noexcept;
985 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c) noexcept;
986 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c) noexcept;
987 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c) noexcept;
989 template <
class M,
class V,
class E>
friend E _mvimult(
const M &m,
const V &v)
990 #if(CXSC_INDEX_CHECK)
995 template <
class V,
class M,
class E>
friend E _vmimult(
const V &v,
const M &m)
996 #if(CXSC_INDEX_CHECK)
1001 template <
class V,
class M,
class S>
friend V &_vmimultassign(V &v,
const M &m)
1002 #if(CXSC_INDEX_CHECK)
1007 template <
class VS,
class M,
class S>
friend VS &_vsmimultassign(VS &v,
const M &m)
1008 #if(CXSC_INDEX_CHECK)
1014 template <
class M>
friend void *_mvoid(
const M &m) noexcept;
1015 template <
class M>
friend bool _mnot(
const M &m) noexcept;
1016 template <
class MS>
friend void *_msvoid(
const MS &ms) noexcept;
1017 template <
class MS>
friend bool _msnot(
const MS &ms) noexcept;
1018 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2) noexcept;
1019 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2) noexcept;
1020 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2) noexcept;
1021 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2) noexcept;
1022 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms) noexcept;
1023 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms) noexcept;
1024 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms) noexcept;
1025 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms) noexcept;
1026 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1) noexcept;
1027 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1) noexcept;
1028 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r) noexcept;
1029 template <
class M>
friend std::istream &_min(std::istream &s,M &r) noexcept;
1032 template <
class MS,
class V,
class E>
friend E _msvimult(
const MS &ms,
const V &v)
1033 #if(CXSC_INDEX_CHECK)
1038 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
1039 #if(CXSC_INDEX_CHECK)
1047 template <
class M1,
class M2,
class E>
friend E _mmcimult(
const M1 &m1,
const M2 &m2)
1048 #if(CXSC_INDEX_CHECK)
1053 template <
class M,
class MS,
class E>
friend E _mmscimult(
const M &m1,
const MS &ms)
1054 #if(CXSC_INDEX_CHECK)
1059 template <
class MS,
class M,
class E>
friend E _msmcimult(
const MS &ms,
const M &m2)
1060 #if(CXSC_INDEX_CHECK)
1065 template <
class MS1,
class MS2,
class E>
friend E _msmscimult(
const MS1 &ms1,
const MS2 &ms2)
1066 #if(CXSC_INDEX_CHECK)
1073 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
1074 #if(CXSC_INDEX_CHECK)
1079 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
1080 #if(CXSC_INDEX_CHECK)
1099 template <
class M,
class E>
friend E _mre(
const M &m) noexcept;
1100 template <
class M,
class E>
friend E _mim(
const M &m) noexcept;
1101 template <
class MS,
class E>
friend E _msre(
const MS &ms) noexcept;
1102 template <
class MS,
class E>
friend E _msim(
const MS &ms) noexcept;
1103 template <
class M1,
class M2>
friend M1 &_mmsetre(M1 &m1,
const M2 &m2)
1104 #if(CXSC_INDEX_CHECK)
1109 template <
class M1,
class M2>
friend M1 &_mmsetim(M1 &m1,
const M2 &m2)
1110 #if(CXSC_INDEX_CHECK)
1115 template <
class MS1,
class M2>
friend MS1 &_msmsetre(MS1 &ms1,
const M2 &m2)
1116 #if(CXSC_INDEX_CHECK)
1121 template <
class MS1,
class M2>
friend MS1 &_msmsetim(MS1 &ms1,
const M2 &m2)
1122 #if(CXSC_INDEX_CHECK)
1129 template <
class M1,
class M2,
class S>
friend M1 &_mmcimultassign(M1 &m1,
const M2 &m2)
1130 #if(CXSC_INDEX_CHECK)
1135 template <
class M,
class MS,
class S>
friend M &_mmscimultassign(M &m1,
const MS &ms)
1136 #if(CXSC_INDEX_CHECK)
1143 template <
class V,
class M,
class S>
friend V &_vmcimultassign(V &v,
const M &m)
1144 #if(CXSC_INDEX_CHECK)
1149 template <
class VS,
class M,
class S>
friend VS &_vsmcimultassign(VS &v,
const M &m)
1150 #if(CXSC_INDEX_CHECK)
1171 template <
class M1,
class M2,
class E>
friend E _mmlimult(
const M1 &m1,
const M2 &m2)
1172 #if(CXSC_INDEX_CHECK)
1177 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1178 #if(CXSC_INDEX_CHECK)
1183 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1184 #if(CXSC_INDEX_CHECK)
1189 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1190 #if(CXSC_INDEX_CHECK)
1197 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
1198 #if(CXSC_INDEX_CHECK)
1203 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
1204 #if(CXSC_INDEX_CHECK)
1223 template <
class M1,
class M2,
class S>
friend M1 &_mmlimultassign(M1 &m1,
const M2 &m2)
1224 #if(CXSC_INDEX_CHECK)
1229 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1230 #if(CXSC_INDEX_CHECK)
1237 template <
class V,
class M,
class S>
friend V &_vmlimultassign(V &v,
const M &m)
1238 #if(CXSC_INDEX_CHECK)
1243 template <
class VS,
class M,
class S>
friend VS &_vsmlimultassign(VS &v,
const M &m)
1244 #if(CXSC_INDEX_CHECK)
1279 explicit INLINE
imatrix(
const int &m,
const int &n)
1280 #if(CXSC_INDEX_CHECK)
1285 explicit INLINE
imatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
1287 #if(CXSC_INDEX_CHECK)
1344 INLINE ~
imatrix() noexcept {
delete [] dat; }
1402 #if(CXSC_INDEX_CHECK)
1409 #if(CXSC_INDEX_CHECK)
1418 #if(CXSC_INDEX_CHECK)
1425 #if(CXSC_INDEX_CHECK)
1430 INLINE
operator void*() noexcept;
1448 int offset1,offset2,mxsize,mysize;
1449 int start1,end1,start2,end2,sxsize,sysize;
1453 #ifdef _CXSC_FRIEND_TPL
1455 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
1456 #if(CXSC_INDEX_CHECK)
1461 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
1462 #if(CXSC_INDEX_CHECK)
1467 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
1468 #if(CXSC_INDEX_CHECK)
1473 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms) noexcept;
1474 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r) noexcept;
1475 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
1476 #if(CXSC_INDEX_CHECK)
1481 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
1482 #if(CXSC_INDEX_CHECK)
1487 template <
class MS,
class E>
friend E _msabs(
const MS &ms) noexcept;
1488 template <
class MS,
class E>
friend E _msdiam(
const MS &ms) noexcept;
1489 template <
class MS,
class E>
friend E _msmid(
const MS &ms) noexcept;
1490 template <
class MS,
class E>
friend E _msinf(
const MS &ms) noexcept;
1491 template <
class MS,
class E>
friend E _mssup(
const MS &ms) noexcept;
1492 template <
class MS1,
class M2>
friend MS1 &_msmsetinf(MS1 &ms1,
const M2 &m2)
1493 #if(CXSC_INDEX_CHECK)
1498 template <
class MS1,
class M2>
friend MS1 &_msmsetsup(MS1 &ms1,
const M2 &m2)
1499 #if(CXSC_INDEX_CHECK)
1504 template <
class MS1,
class MS2>
friend MS1 &_msmssetinf(MS1 &ms1,
const MS2 &ms2)
1505 #if(CXSC_INDEX_CHECK)
1510 template <
class MS1,
class MS2>
friend MS1 &_msmssetsup(MS1 &ms1,
const MS2 &ms2)
1511 #if(CXSC_INDEX_CHECK)
1516 template <
class MS1,
class M2>
friend MS1 &_msmusetinf(MS1 &ms1,
const M2 &m2)
1517 #if(CXSC_INDEX_CHECK)
1522 template <
class MS1,
class M2>
friend MS1 &_msmusetsup(MS1 &ms1,
const M2 &m2)
1523 #if(CXSC_INDEX_CHECK)
1528 template <
class MS1,
class MS2>
friend MS1 &_msmsusetinf(MS1 &ms1,
const MS2 &ms2)
1529 #if(CXSC_INDEX_CHECK)
1534 template <
class MS1,
class MS2>
friend MS1 &_msmsusetsup(MS1 &ms1,
const MS2 &ms2)
1535 #if(CXSC_INDEX_CHECK)
1541 template <
class MS,
class E>
friend E _msminus(
const MS &ms) noexcept;
1542 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1543 #if(CXSC_INDEX_CHECK)
1548 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1549 #if(CXSC_INDEX_CHECK)
1554 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1555 #if(CXSC_INDEX_CHECK)
1560 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1561 #if(CXSC_INDEX_CHECK)
1566 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
1567 #if(CXSC_INDEX_CHECK)
1572 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1573 #if(CXSC_INDEX_CHECK)
1578 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1579 #if(CXSC_INDEX_CHECK)
1584 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1585 #if(CXSC_INDEX_CHECK)
1590 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1591 #if(CXSC_INDEX_CHECK)
1596 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1597 #if(CXSC_INDEX_CHECK)
1602 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
1603 #if(CXSC_INDEX_CHECK)
1608 template <
class M,
class MS,
class E>
friend E _mmsimult(
const M &m1,
const MS &ms)
1609 #if(CXSC_INDEX_CHECK)
1614 template <
class MS,
class M,
class E>
friend E _msmimult(
const MS &ms,
const M &m2)
1615 #if(CXSC_INDEX_CHECK)
1620 template <
class M,
class MS,
class S>
friend M &_mmsimultassign(M &m1,
const MS &ms)
1621 #if(CXSC_INDEX_CHECK)
1626 template <
class MS1,
class MS2,
class E>
friend E _msmsimult(
const MS1 &ms1,
const MS2 &ms2)
1627 #if(CXSC_INDEX_CHECK)
1632 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1633 #if(CXSC_INDEX_CHECK)
1638 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1639 #if(CXSC_INDEX_CHECK)
1644 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
1645 #if(CXSC_INDEX_CHECK)
1650 template <
class MS1,
class MS2>
friend MS1 &_msmsconvassign(MS1 &ms1,
const MS2 &ms2)
1651 #if(CXSC_INDEX_CHECK)
1656 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1657 #if(CXSC_INDEX_CHECK)
1662 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1663 #if(CXSC_INDEX_CHECK)
1668 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1669 #if(CXSC_INDEX_CHECK)
1674 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
1675 #if(CXSC_INDEX_CHECK)
1680 template <
class MS1,
class MS2>
friend MS1 &_msmssectassign(MS1 &ms1,
const MS2 &ms2)
1681 #if(CXSC_INDEX_CHECK)
1686 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1687 #if(CXSC_INDEX_CHECK)
1693 template <
class MS,
class V,
class E>
friend E _msvimult(
const MS &ms,
const V &v)
1694 #if(CXSC_INDEX_CHECK)
1699 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
1700 #if(CXSC_INDEX_CHECK)
1705 template <
class V,
class MS,
class S>
friend V &_vmsimultassign(V &v,
const MS &ms)
1706 #if(CXSC_INDEX_CHECK)
1712 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms) noexcept;
1713 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c) noexcept;
1714 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c) noexcept;
1715 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c) noexcept;
1717 template <
class MS>
friend void *_msvoid(
const MS &ms) noexcept;
1718 template <
class MS>
friend bool _msnot(
const MS &ms) noexcept;
1719 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms) noexcept;
1720 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms) noexcept;
1721 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms) noexcept;
1722 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms) noexcept;
1723 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1) noexcept;
1724 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1) noexcept;
1725 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1726 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1727 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1728 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2) noexcept;
1729 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r) noexcept;
1730 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r) noexcept;
1734 template <
class M,
class MS,
class E>
friend E _mmscimult(
const M &m1,
const MS &ms)
1735 #if(CXSC_INDEX_CHECK)
1740 template <
class MS,
class M,
class E>
friend E _msmcimult(
const MS &ms,
const M &m2)
1741 #if(CXSC_INDEX_CHECK)
1746 template <
class MS1,
class MS2,
class E>
friend E _msmscimult(
const MS1 &ms1,
const MS2 &ms2)
1747 #if(CXSC_INDEX_CHECK)
1754 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
1755 #if(CXSC_INDEX_CHECK)
1760 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
1761 #if(CXSC_INDEX_CHECK)
1768 template <
class M1,
class MS2>
friend M1 &_mmssetre(M1 &m1,
const MS2 &ms2)
1769 #if(CXSC_INDEX_CHECK)
1774 template <
class M1,
class MS2>
friend M1 &_mmssetim(M1 &m1,
const MS2 &ms2)
1775 #if(CXSC_INDEX_CHECK)
1780 template <
class MS1,
class MS2>
friend MS1 &_msmssetre(MS1 &ms1,
const MS2 &ms2)
1781 #if(CXSC_INDEX_CHECK)
1786 template <
class MS1,
class MS2>
friend MS1 &_msmssetim(MS1 &ms1,
const MS2 &ms2)
1787 #if(CXSC_INDEX_CHECK)
1793 template <
class M,
class MS,
class S>
friend M &_mmscimultassign(M &m1,
const MS &ms)
1794 #if(CXSC_INDEX_CHECK)
1801 template <
class V,
class MS,
class S>
friend V &_vmscimultassign(V &v,
const MS &ms)
1802 #if(CXSC_INDEX_CHECK)
1829 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1830 #if(CXSC_INDEX_CHECK)
1835 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1836 #if(CXSC_INDEX_CHECK)
1841 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1842 #if(CXSC_INDEX_CHECK)
1849 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
1850 #if(CXSC_INDEX_CHECK)
1855 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1856 #if(CXSC_INDEX_CHECK)
1863 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1864 #if(CXSC_INDEX_CHECK)
1871 template <
class V,
class MS,
class S>
friend V &_vmslimultassign(V &v,
const MS &ms)
1872 #if(CXSC_INDEX_CHECK)
1901 explicit INLINE
imatrix_slice(
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) { }
1903 explicit INLINE
imatrix_slice(
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) { }
1906 INLINE
imatrix_slice(
const 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) { }
1912 #if(CXSC_INDEX_CHECK)
1920 #if(CXSC_INDEX_CHECK)
1927 #if(CXSC_INDEX_CHECK)
1936 #if(CXSC_INDEX_CHECK)
1943 #if(CXSC_INDEX_CHECK)
1950 #if(CXSC_INDEX_CHECK)
1957 #if(CXSC_INDEX_CHECK)
1966 #if(CXSC_INDEX_CHECK)
1973 #if(CXSC_INDEX_CHECK)
1980 #if(CXSC_INDEX_CHECK)
1987 #if(CXSC_INDEX_CHECK)
1995 #if(CXSC_INDEX_CHECK)
2002 #if(CXSC_INDEX_CHECK)
2013 #if(CXSC_INDEX_CHECK)
2020 #if(CXSC_INDEX_CHECK)
2027 #if(CXSC_INDEX_CHECK)
2034 #if(CXSC_INDEX_CHECK)
2041 #if(CXSC_INDEX_CHECK)
2048 #if(CXSC_INDEX_CHECK)
2055 #if(CXSC_INDEX_CHECK)
2062 #if(CXSC_INDEX_CHECK)
2069 #if(CXSC_INDEX_CHECK)
2076 #if(CXSC_INDEX_CHECK)
2083 #if(CXSC_INDEX_CHECK)
2090 #if(CXSC_INDEX_CHECK)
2097 #if(CXSC_INDEX_CHECK)
2104 #if(CXSC_INDEX_CHECK)
2111 #if(CXSC_INDEX_CHECK)
2118 #if(CXSC_INDEX_CHECK)
2125 #if(CXSC_INDEX_CHECK)
2132 #if(CXSC_INDEX_CHECK)
2139 #if(CXSC_INDEX_CHECK)
2146 #if(CXSC_INDEX_CHECK)
2153 #if(CXSC_INDEX_CHECK)
2160 #if(CXSC_INDEX_CHECK)
2173 INLINE
operator void*() noexcept;
2227 INLINE ivector
operator /(
const imatrix_subv &rv,
const interval &s) noexcept;
2229 INLINE ivector
operator *(
const imatrix_subv &rv,
const interval &s) noexcept;
2231 INLINE ivector
operator *(
const interval &s,
const imatrix_subv &rv) noexcept;
2233 INLINE ivector
abs(
const imatrix_subv &mv) noexcept;
2235 INLINE rvector
absmin(
const imatrix_subv &mv) noexcept;
2237 INLINE rvector
absmax(
const imatrix_subv &mv) noexcept;
2239 INLINE rvector
diam(
const imatrix_subv &mv) noexcept;
2241 INLINE rvector
mid(
const imatrix_subv &mv) noexcept;
2243 INLINE rvector Inf(
const imatrix_subv &mv) noexcept;
2245 INLINE rvector Sup(
const imatrix_subv &mv) noexcept;
2252 INLINE imatrix_subv &SetInf(imatrix_subv &mv,
const rvector &rv)
2253 #if(CXSC_INDEX_CHECK)
2258 INLINE imatrix_subv &SetSup(imatrix_subv &mv,
const rvector &rv)
2260 #if(CXSC_INDEX_CHECK)
2265 INLINE imatrix_subv &UncheckedSetInf(imatrix_subv &mv,
const rvector &rv)
2267 #if(CXSC_INDEX_CHECK)
2272 INLINE imatrix_subv &UncheckedSetSup(imatrix_subv &mv,
const rvector &rv)
2274 #if(CXSC_INDEX_CHECK)
2279 INLINE imatrix_subv &SetSup(imatrix_subv &iv,
const real &r) noexcept;
2282 INLINE imatrix_subv &SetInf(imatrix_subv &iv,
const real &r) noexcept;
2284 INLINE imatrix_subv &UncheckedSetSup(imatrix_subv &iv,
const real &r) noexcept;
2286 INLINE imatrix_subv &
SetUncheckedInf(imatrix_subv &iv,
const real &r) noexcept;
2290 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2291 #if(CXSC_INDEX_CHECK)
2296 void accumulate(idotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
2298 #if(CXSC_INDEX_CHECK)
2303 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
2305 #if(CXSC_INDEX_CHECK)
2310 void accumulate(idotprecision &dp,
const ivector_slice & sl1,
const imatrix_subv &rv2)
2312 #if(CXSC_INDEX_CHECK)
2317 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector_slice &sl2)
2319 #if(CXSC_INDEX_CHECK)
2326 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2327 #if(CXSC_INDEX_CHECK)
2332 void accumulate(cidotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
2334 #if(CXSC_INDEX_CHECK)
2339 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
2341 #if(CXSC_INDEX_CHECK)
2346 void accumulate(cidotprecision &dp,
const ivector_slice & sl1,
const imatrix_subv &rv2)
2348 #if(CXSC_INDEX_CHECK)
2353 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const ivector_slice &sl2)
2355 #if(CXSC_INDEX_CHECK)
2362 INLINE interval
operator *(
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2363 #if(CXSC_INDEX_CHECK)
2368 INLINE interval
operator *(
const ivector & rv1,
const imatrix_subv &rv2)
2370 #if(CXSC_INDEX_CHECK)
2375 INLINE interval
operator *(
const imatrix_subv &rv1,
const ivector &rv2)
2377 #if(CXSC_INDEX_CHECK)
2382 INLINE interval
operator *(
const ivector_slice &sl,
const imatrix_subv &sv)
2384 #if(CXSC_INDEX_CHECK)
2389 INLINE interval
operator *(
const imatrix_subv &mv,
const ivector_slice &vs)
2391 #if(CXSC_INDEX_CHECK)
2398 INLINE ivector operator +(
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2399 #if(CXSC_INDEX_CHECK)
2404 INLINE ivector operator +(
const imatrix_subv &rv1,
const ivector &rv2)
2406 #if(CXSC_INDEX_CHECK)
2411 INLINE ivector operator +(
const ivector & rv1,
const imatrix_subv &rv2)
2413 #if(CXSC_INDEX_CHECK)
2418 INLINE ivector operator +(
const ivector_slice &sl,
const imatrix_subv &mv)
2420 #if(CXSC_INDEX_CHECK)
2425 INLINE ivector operator +(
const imatrix_subv &mv,
const ivector_slice &sl)
2427 #if(CXSC_INDEX_CHECK)
2434 INLINE ivector operator -(
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2435 #if(CXSC_INDEX_CHECK)
2440 INLINE ivector operator -(
const ivector & rv1,
const imatrix_subv &rv2)
2442 #if(CXSC_INDEX_CHECK)
2447 INLINE ivector operator -(
const imatrix_subv &rv1,
const ivector &rv2)
2449 #if(CXSC_INDEX_CHECK)
2454 INLINE ivector operator -(
const ivector_slice &sl,
const imatrix_subv &mv)
2456 #if(CXSC_INDEX_CHECK)
2461 INLINE ivector operator -(
const imatrix_subv &mv,
const ivector_slice &sl)
2463 #if(CXSC_INDEX_CHECK)
2472 void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const imatrix_subv &rv2)
2473 #if(CXSC_INDEX_CHECK)
2478 void accumulate(idotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2480 #if(CXSC_INDEX_CHECK)
2485 void accumulate(idotprecision &dp,
const rvector_slice & sl1,
const imatrix_subv &rv2)
2487 #if(CXSC_INDEX_CHECK)
2494 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rmatrix_subv &rv2)
2495 #if(CXSC_INDEX_CHECK)
2500 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2502 #if(CXSC_INDEX_CHECK)
2507 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector_slice &sl2)
2509 #if(CXSC_INDEX_CHECK)
2516 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const imatrix_subv &rv2)
2517 #if(CXSC_INDEX_CHECK)
2522 void accumulate(cidotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2524 #if(CXSC_INDEX_CHECK)
2529 void accumulate(cidotprecision &dp,
const rvector_slice & sl1,
const imatrix_subv &rv2)
2531 #if(CXSC_INDEX_CHECK)
2538 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rmatrix_subv &rv2)
2539 #if(CXSC_INDEX_CHECK)
2544 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2546 #if(CXSC_INDEX_CHECK)
2551 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector_slice &sl2)
2553 #if(CXSC_INDEX_CHECK)
2562 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const imatrix_subv &rv2)
2563 #if(CXSC_INDEX_CHECK)
2568 void accumulate(cidotprecision &dp,
const cvector & rv1,
const imatrix_subv &rv2)
2570 #if(CXSC_INDEX_CHECK)
2575 void accumulate(cidotprecision &dp,
const cvector_slice & sl1,
const imatrix_subv &rv2)
2577 #if(CXSC_INDEX_CHECK)
2584 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cmatrix_subv &rv2)
2585 #if(CXSC_INDEX_CHECK)
2590 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cvector &rv2)
2592 #if(CXSC_INDEX_CHECK)
2597 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cvector_slice &sl2)
2599 #if(CXSC_INDEX_CHECK)
2608 void accumulate(cidotprecision &dp,
const cimatrix_subv & rv1,
const imatrix_subv &rv2)
2609 #if(CXSC_INDEX_CHECK)
2614 void accumulate(cidotprecision &dp,
const civector & rv1,
const imatrix_subv &rv2)
2616 #if(CXSC_INDEX_CHECK)
2621 void accumulate(cidotprecision &dp,
const civector_slice & sl1,
const imatrix_subv &rv2)
2623 #if(CXSC_INDEX_CHECK)
2630 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cimatrix_subv &rv2)
2631 #if(CXSC_INDEX_CHECK)
2636 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const civector &rv2)
2638 #if(CXSC_INDEX_CHECK)
2643 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const civector_slice &sl2)
2645 #if(CXSC_INDEX_CHECK)
2656 INLINE imatrix
_imatrix(
const imatrix &rm) noexcept;
2658 INLINE imatrix
_imatrix(
const ivector &v) noexcept;
2660 INLINE imatrix
_imatrix(
const ivector_slice &v) noexcept;
2662 INLINE imatrix
_imatrix(
const interval &r) noexcept;
2665 INLINE
int Lb(
const imatrix &rm,
const int &i)
2666 #if(CXSC_INDEX_CHECK)
2671 INLINE
int Ub(
const imatrix &rm,
const int &i)
2673 #if(CXSC_INDEX_CHECK)
2678 INLINE
int Lb(
const imatrix_slice &rm,
const int &i)
2680 #if(CXSC_INDEX_CHECK)
2685 INLINE
int Ub(
const imatrix_slice &rm,
const int &i)
2687 #if(CXSC_INDEX_CHECK)
2692 INLINE imatrix &
SetLb(imatrix &m,
const int &i,
const int &j)
2694 #if(CXSC_INDEX_CHECK)
2699 INLINE imatrix &
SetUb(imatrix &m,
const int &i,
const int &j)
2701 #if(CXSC_INDEX_CHECK)
2706 INLINE
void Resize(imatrix &A) noexcept;
2709 INLINE
void Resize(imatrix &A,
const int &m,
const int &n)
2710 #if(CXSC_INDEX_CHECK)
2715 INLINE
void Resize(imatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
2717 #if(CXSC_INDEX_CHECK)
2724 INLINE imatrix
abs(
const imatrix &m) noexcept;
2726 INLINE rmatrix
absmin(
const imatrix &m) noexcept;
2728 INLINE rmatrix
absmax(
const imatrix &m) noexcept;
2730 INLINE imatrix
abs(
const imatrix_slice &ms) noexcept;
2732 INLINE rmatrix
absmin(
const imatrix_slice &ms) noexcept;
2734 INLINE rmatrix
absmax(
const imatrix_slice &ms) noexcept;
2736 INLINE rmatrix
diam(
const imatrix &m) noexcept;
2738 INLINE rmatrix
diam(
const imatrix_slice &ms) noexcept;
2740 INLINE rmatrix
mid(
const imatrix &m) noexcept;
2742 INLINE rmatrix
mid(
const imatrix_slice &ms) noexcept;
2744 INLINE rmatrix Inf(
const imatrix &m) noexcept;
2746 INLINE rmatrix Sup(
const imatrix &m) noexcept;
2748 INLINE rmatrix Inf(
const imatrix_slice &m) noexcept;
2750 INLINE rmatrix Sup(
const imatrix_slice &m) noexcept;
2752 INLINE imatrix &SetInf(imatrix &cm,
const rmatrix &rm)
2753 #if(CXSC_INDEX_CHECK)
2758 INLINE imatrix_slice &SetInf(imatrix_slice &cm,
const rmatrix &rm)
2760 #if(CXSC_INDEX_CHECK)
2765 INLINE imatrix &SetInf(imatrix &cm,
const rmatrix_slice &rm)
2767 #if(CXSC_INDEX_CHECK)
2772 INLINE imatrix_slice &SetInf(imatrix_slice &cm,
const rmatrix_slice &rm)
2774 #if(CXSC_INDEX_CHECK)
2779 INLINE imatrix &SetSup(imatrix &cm,
const rmatrix &rm)
2781 #if(CXSC_INDEX_CHECK)
2786 INLINE imatrix_slice &SetSup(imatrix_slice &cm,
const rmatrix &rm)
2788 #if(CXSC_INDEX_CHECK)
2793 INLINE imatrix &SetSup(imatrix &cm,
const rmatrix_slice &rm)
2795 #if(CXSC_INDEX_CHECK)
2800 INLINE imatrix_slice &SetSup(imatrix_slice &cm,
const rmatrix_slice &rm)
2802 #if(CXSC_INDEX_CHECK)
2807 INLINE imatrix &UncheckedSetInf(imatrix &cm,
const rmatrix &rm)
2809 #if(CXSC_INDEX_CHECK)
2814 INLINE imatrix_slice &UncheckedSetInf(imatrix_slice &cm,
const rmatrix &rm)
2816 #if(CXSC_INDEX_CHECK)
2821 INLINE imatrix &UncheckedSetInf(imatrix &cm,
const rmatrix_slice &rm)
2823 #if(CXSC_INDEX_CHECK)
2828 INLINE imatrix_slice &UncheckedSetInf(imatrix_slice &cm,
const rmatrix_slice &rm)
2830 #if(CXSC_INDEX_CHECK)
2835 INLINE imatrix &UncheckedSetSup(imatrix &cm,
const rmatrix &rm)
2837 #if(CXSC_INDEX_CHECK)
2842 INLINE imatrix_slice &UncheckedSetSup(imatrix_slice &cm,
const rmatrix &rm)
2844 #if(CXSC_INDEX_CHECK)
2849 INLINE imatrix &UncheckedSetSup(imatrix &cm,
const rmatrix_slice &rm)
2851 #if(CXSC_INDEX_CHECK)
2856 INLINE imatrix_slice &UncheckedSetSup(imatrix_slice &cm,
const rmatrix_slice &rm)
2858 #if(CXSC_INDEX_CHECK)
2867 INLINE imatrix
operator *(
const interval &c,
const imatrix &m) noexcept;
2869 INLINE imatrix
operator *(
const interval &c,
const imatrix_slice &ms) noexcept;
2871 INLINE imatrix
operator *(
const imatrix &m,
const interval &c) noexcept;
2873 INLINE imatrix
operator *(
const imatrix_slice &ms,
const interval &c) noexcept;
2875 INLINE imatrix &
operator *=(imatrix &m,
const interval &c) noexcept;
2877 INLINE imatrix
operator /(
const imatrix &m,
const interval &c) noexcept;
2879 INLINE imatrix
operator /(
const imatrix_slice &ms,
const interval &c) noexcept;
2881 INLINE imatrix &
operator /=(imatrix &m,
const interval &c) noexcept;
2886 INLINE imatrix
operator *(
const real &c,
const imatrix &m) noexcept;
2888 INLINE imatrix
operator *(
const real &c,
const imatrix_slice &ms) noexcept;
2890 INLINE imatrix
operator *(
const imatrix &m,
const real &c) noexcept;
2892 INLINE imatrix
operator *(
const imatrix_slice &ms,
const real &c) noexcept;
2894 INLINE imatrix &
operator *=(imatrix &m,
const real &c) noexcept;
2896 INLINE imatrix
operator /(
const imatrix &m,
const real &c) noexcept;
2898 INLINE imatrix
operator /(
const imatrix_slice &ms,
const real &c) noexcept;
2900 INLINE imatrix &
operator /=(imatrix &m,
const real &c) noexcept;
2904 INLINE imatrix
operator *(
const interval &c,
const rmatrix &m) noexcept;
2906 INLINE imatrix
operator *(
const interval &c,
const rmatrix_slice &ms) noexcept;
2908 INLINE imatrix
operator *(
const rmatrix &m,
const interval &c) noexcept;
2910 INLINE imatrix
operator *(
const rmatrix_slice &ms,
const interval &c) noexcept;
2912 INLINE imatrix
operator /(
const rmatrix &m,
const interval &c) noexcept;
2914 INLINE imatrix
operator /(
const rmatrix_slice &ms,
const interval &c) noexcept;
2921 INLINE ivector
operator *(
const imatrix &m,
const ivector &v)
2922 #if(CXSC_INDEX_CHECK)
2927 INLINE ivector
operator *(
const imatrix_slice &ms,
const ivector &v)
2929 #if(CXSC_INDEX_CHECK)
2934 INLINE ivector
operator *(
const ivector &v,
const imatrix &m)
2936 #if(CXSC_INDEX_CHECK)
2941 INLINE ivector
operator *(
const ivector &v,
const imatrix_slice &ms)
2943 #if(CXSC_INDEX_CHECK)
2948 INLINE ivector &
operator *=(ivector &v,
const imatrix &m)
2950 #if(CXSC_INDEX_CHECK)
2955 INLINE ivector &
operator *=(ivector &v,
const imatrix_slice &ms)
2957 #if(CXSC_INDEX_CHECK)
2964 INLINE ivector
operator *(
const ivector_slice &v,
const imatrix &m)
2965 #if(CXSC_INDEX_CHECK)
2970 INLINE ivector
operator *(
const ivector_slice &v,
const imatrix_slice &m)
2972 #if(CXSC_INDEX_CHECK)
2982 INLINE ivector
operator *(
const rvector &v,
const imatrix &m)
2983 #if(CXSC_INDEX_CHECK)
2988 INLINE ivector
operator *(
const rvector &v,
const imatrix_slice &ms)
2990 #if(CXSC_INDEX_CHECK)
2995 INLINE ivector
operator *(
const rvector_slice &v,
const imatrix &m)
2997 #if(CXSC_INDEX_CHECK)
3004 INLINE ivector
operator *(
const imatrix &m,
const rvector &v)
3005 #if(CXSC_INDEX_CHECK)
3010 INLINE ivector
operator *(
const imatrix_slice &ms,
const rvector &v)
3012 #if(CXSC_INDEX_CHECK)
3022 INLINE
const imatrix &operator +(
const imatrix &m1) noexcept;
3024 INLINE imatrix operator +(
const imatrix_slice &ms) noexcept;
3026 INLINE imatrix operator +(
const imatrix &m1,
const imatrix &m2)
3027 #if(CXSC_INDEX_CHECK)
3032 INLINE imatrix operator +(
const imatrix &m,
const imatrix_slice &ms)
3034 #if(CXSC_INDEX_CHECK)
3039 INLINE imatrix operator +(
const imatrix_slice &ms,
const imatrix &m)
3041 #if(CXSC_INDEX_CHECK)
3046 INLINE imatrix operator +(
const imatrix_slice &m1,
const imatrix_slice &m2)
3048 #if(CXSC_INDEX_CHECK)
3053 INLINE imatrix &
operator +=(imatrix &m1,
const imatrix &m2)
3055 #if(CXSC_INDEX_CHECK)
3060 INLINE imatrix &
operator +=(imatrix &m1,
const imatrix_slice &ms)
3062 #if(CXSC_INDEX_CHECK)
3069 INLINE imatrix operator -(
const imatrix &m) noexcept;
3071 INLINE imatrix operator -(
const imatrix_slice &ms) noexcept;
3073 INLINE imatrix operator -(
const imatrix &m1,
const imatrix &m2)
3074 #if(CXSC_INDEX_CHECK)
3079 INLINE imatrix operator -(
const imatrix &m,
const imatrix_slice &ms)
3081 #if(CXSC_INDEX_CHECK)
3086 INLINE imatrix operator -(
const imatrix_slice &ms,
const imatrix &m)
3088 #if(CXSC_INDEX_CHECK)
3093 INLINE imatrix operator -(
const imatrix_slice &ms1,
const imatrix_slice &ms2)
3095 #if(CXSC_INDEX_CHECK)
3100 INLINE imatrix &operator -=(imatrix &m1,
const imatrix &m2)
3102 #if(CXSC_INDEX_CHECK)
3107 INLINE imatrix &operator -=(imatrix &m1,
const imatrix_slice &ms)
3109 #if(CXSC_INDEX_CHECK)
3116 INLINE imatrix
operator *(
const imatrix &m1,
const imatrix &m2)
3117 #if(CXSC_INDEX_CHECK)
3122 INLINE imatrix
operator *(
const imatrix &m1,
const imatrix_slice &ms)
3124 #if(CXSC_INDEX_CHECK)
3129 INLINE imatrix
operator *(
const imatrix_slice &ms,
const imatrix &m1)
3131 #if(CXSC_INDEX_CHECK)
3136 INLINE imatrix
operator *(
const imatrix_slice &ms1,
const imatrix_slice &ms2)
3138 #if(CXSC_INDEX_CHECK)
3143 INLINE imatrix &
operator *=(imatrix &m1,
const imatrix &m2)
3145 #if(CXSC_INDEX_CHECK)
3150 INLINE imatrix &
operator *=(imatrix &m1,
const imatrix_slice &ms)
3152 #if(CXSC_INDEX_CHECK)
3160 INLINE imatrix operator |(
const imatrix &m1,
const imatrix &m2)
3161 #if(CXSC_INDEX_CHECK)
3166 INLINE imatrix operator |(
const imatrix &m,
const imatrix_slice &ms)
3168 #if(CXSC_INDEX_CHECK)
3173 INLINE imatrix operator |(
const imatrix_slice &ms,
const imatrix &m)
3175 #if(CXSC_INDEX_CHECK)
3180 INLINE imatrix operator |(
const imatrix_slice &m1,
const imatrix_slice &m2)
3182 #if(CXSC_INDEX_CHECK)
3187 INLINE imatrix &operator |=(imatrix &m1,
const imatrix &m2)
3189 #if(CXSC_INDEX_CHECK)
3194 INLINE imatrix &operator |=(imatrix &m1,
const imatrix_slice &ms)
3196 #if(CXSC_INDEX_CHECK)
3203 INLINE imatrix operator &(
const imatrix &m1,
const imatrix &m2)
3204 #if(CXSC_INDEX_CHECK)
3209 INLINE imatrix operator &(
const imatrix &m,
const imatrix_slice &ms)
3211 #if(CXSC_INDEX_CHECK)
3216 INLINE imatrix operator &(
const imatrix_slice &ms,
const imatrix &m)
3218 #if(CXSC_INDEX_CHECK)
3223 INLINE imatrix operator &(
const imatrix_slice &m1,
const imatrix_slice &m2)
3225 #if(CXSC_INDEX_CHECK)
3230 INLINE imatrix &operator &=(imatrix &m1,
const imatrix &m2)
3232 #if(CXSC_INDEX_CHECK)
3237 INLINE imatrix &operator &=(imatrix &m1,
const imatrix_slice &ms)
3239 #if(CXSC_INDEX_CHECK)
3247 INLINE imatrix operator +(
const rmatrix &m1,
const imatrix &m2)
3248 #if(CXSC_INDEX_CHECK)
3253 INLINE imatrix operator +(
const imatrix &m1,
const rmatrix &m2)
3255 #if(CXSC_INDEX_CHECK)
3260 INLINE imatrix operator +(
const rmatrix &m,
const imatrix_slice &ms)
3262 #if(CXSC_INDEX_CHECK)
3267 INLINE imatrix operator +(
const imatrix &m,
const rmatrix_slice &ms)
3269 #if(CXSC_INDEX_CHECK)
3274 INLINE imatrix operator +(
const rmatrix_slice &ms,
const imatrix &m)
3276 #if(CXSC_INDEX_CHECK)
3281 INLINE imatrix operator +(
const imatrix_slice &ms,
const rmatrix &m)
3283 #if(CXSC_INDEX_CHECK)
3288 INLINE imatrix operator +(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3290 #if(CXSC_INDEX_CHECK)
3295 INLINE imatrix operator +(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3297 #if(CXSC_INDEX_CHECK)
3302 INLINE imatrix &
operator +=(imatrix &m1,
const rmatrix &m2)
3304 #if(CXSC_INDEX_CHECK)
3309 INLINE imatrix &
operator +=(imatrix &m1,
const rmatrix_slice &ms)
3311 #if(CXSC_INDEX_CHECK)
3318 INLINE imatrix operator -(
const rmatrix &m1,
const imatrix &m2)
3319 #if(CXSC_INDEX_CHECK)
3324 INLINE imatrix operator -(
const imatrix &m1,
const rmatrix &m2)
3326 #if(CXSC_INDEX_CHECK)
3331 INLINE imatrix operator -(
const rmatrix &m,
const imatrix_slice &ms)
3333 #if(CXSC_INDEX_CHECK)
3338 INLINE imatrix operator -(
const imatrix &m,
const rmatrix_slice &ms)
3340 #if(CXSC_INDEX_CHECK)
3345 INLINE imatrix operator -(
const rmatrix_slice &ms,
const imatrix &m)
3347 #if(CXSC_INDEX_CHECK)
3352 INLINE imatrix operator -(
const imatrix_slice &ms,
const rmatrix &m)
3354 #if(CXSC_INDEX_CHECK)
3359 INLINE imatrix operator -(
const rmatrix_slice &ms1,
const imatrix_slice &ms2)
3361 #if(CXSC_INDEX_CHECK)
3366 INLINE imatrix operator -(
const imatrix_slice &ms1,
const rmatrix_slice &ms2)
3368 #if(CXSC_INDEX_CHECK)
3373 INLINE imatrix &operator -=(imatrix &m1,
const rmatrix &m2)
3375 #if(CXSC_INDEX_CHECK)
3380 INLINE imatrix &operator -=(imatrix &m1,
const rmatrix_slice &ms)
3382 #if(CXSC_INDEX_CHECK)
3389 INLINE imatrix
operator *(
const rmatrix &m1,
const imatrix &m2)
3390 #if(CXSC_INDEX_CHECK)
3395 INLINE imatrix
operator *(
const imatrix &m1,
const rmatrix &m2)
3397 #if(CXSC_INDEX_CHECK)
3402 INLINE imatrix
operator *(
const rmatrix &m1,
const imatrix_slice &ms)
3404 #if(CXSC_INDEX_CHECK)
3409 INLINE imatrix
operator *(
const imatrix &m1,
const rmatrix_slice &ms)
3411 #if(CXSC_INDEX_CHECK)
3416 INLINE imatrix
operator *(
const rmatrix_slice &ms,
const imatrix &m1)
3418 #if(CXSC_INDEX_CHECK)
3423 INLINE imatrix
operator *(
const imatrix_slice &ms,
const rmatrix &m1)
3425 #if(CXSC_INDEX_CHECK)
3430 INLINE imatrix
operator *(
const rmatrix_slice &ms1,
const imatrix_slice &ms2)
3432 #if(CXSC_INDEX_CHECK)
3437 INLINE imatrix
operator *(
const imatrix_slice &ms1,
const rmatrix_slice &ms2)
3439 #if(CXSC_INDEX_CHECK)
3444 INLINE imatrix &
operator *=(imatrix &m1,
const rmatrix &m2)
3446 #if(CXSC_INDEX_CHECK)
3451 INLINE imatrix &
operator *=(imatrix &m1,
const rmatrix_slice &ms)
3453 #if(CXSC_INDEX_CHECK)
3460 INLINE imatrix operator |(
const rmatrix &m1,
const imatrix &m2)
3461 #if(CXSC_INDEX_CHECK)
3466 INLINE imatrix operator |(
const imatrix &m1,
const rmatrix &m2)
3468 #if(CXSC_INDEX_CHECK)
3473 INLINE imatrix operator |(
const rmatrix &m,
const imatrix_slice &ms)
3475 #if(CXSC_INDEX_CHECK)
3480 INLINE imatrix operator |(
const imatrix &m,
const rmatrix_slice &ms)
3482 #if(CXSC_INDEX_CHECK)
3487 INLINE imatrix operator |(
const rmatrix_slice &ms,
const imatrix &m)
3489 #if(CXSC_INDEX_CHECK)
3494 INLINE imatrix operator |(
const imatrix_slice &ms,
const rmatrix &m)
3496 #if(CXSC_INDEX_CHECK)
3501 INLINE imatrix operator |(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3503 #if(CXSC_INDEX_CHECK)
3508 INLINE imatrix operator |(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3510 #if(CXSC_INDEX_CHECK)
3515 INLINE imatrix &operator |=(imatrix &m1,
const rmatrix &m2)
3517 #if(CXSC_INDEX_CHECK)
3522 INLINE imatrix &operator |=(imatrix &m1,
const rmatrix_slice &ms)
3524 #if(CXSC_INDEX_CHECK)
3531 INLINE imatrix operator &(
const rmatrix &m1,
const imatrix &m2)
3532 #if(CXSC_INDEX_CHECK)
3537 INLINE imatrix operator &(
const imatrix &m1,
const rmatrix &m2)
3539 #if(CXSC_INDEX_CHECK)
3544 INLINE imatrix operator &(
const rmatrix &m,
const imatrix_slice &ms)
3546 #if(CXSC_INDEX_CHECK)
3551 INLINE imatrix operator &(
const imatrix &m,
const rmatrix_slice &ms)
3553 #if(CXSC_INDEX_CHECK)
3558 INLINE imatrix operator &(
const rmatrix_slice &ms,
const imatrix &m)
3560 #if(CXSC_INDEX_CHECK)
3565 INLINE imatrix operator &(
const imatrix_slice &ms,
const rmatrix &m)
3567 #if(CXSC_INDEX_CHECK)
3572 INLINE imatrix operator &(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3574 #if(CXSC_INDEX_CHECK)
3579 INLINE imatrix operator &(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3581 #if(CXSC_INDEX_CHECK)
3586 INLINE imatrix &operator &=(imatrix &m1,
const rmatrix &m2)
3588 #if(CXSC_INDEX_CHECK)
3593 INLINE imatrix &operator &=(imatrix &m1,
const rmatrix_slice &ms)
3595 #if(CXSC_INDEX_CHECK)
3604 INLINE imatrix operator |(
const rmatrix &m1,
const rmatrix &m2)
3605 #if(CXSC_INDEX_CHECK)
3610 INLINE imatrix operator |(
const rmatrix &m,
const rmatrix_slice &ms)
3612 #if(CXSC_INDEX_CHECK)
3617 INLINE imatrix operator |(
const rmatrix_slice &ms,
const rmatrix &m)
3619 #if(CXSC_INDEX_CHECK)
3624 INLINE imatrix operator |(
const rmatrix_slice &m1,
const rmatrix_slice &m2)
3626 #if(CXSC_INDEX_CHECK)
3637 INLINE
bool operator ==(
const imatrix &m1,
const imatrix &m2) noexcept;
3639 INLINE
bool operator !=(
const imatrix &m1,
const imatrix &m2) noexcept;
3641 INLINE
bool operator <(
const imatrix &m1,
const imatrix &m2) noexcept;
3643 INLINE
bool operator <=(
const imatrix &m1,
const imatrix &m2) noexcept;
3645 INLINE
bool operator >(
const imatrix &m1,
const imatrix &m2) noexcept;
3647 INLINE
bool operator >=(
const imatrix &m1,
const imatrix &m2) noexcept;
3649 INLINE
bool operator ==(
const imatrix &m1,
const imatrix_slice &ms) noexcept;
3651 INLINE
bool operator !=(
const imatrix &m1,
const imatrix_slice &ms) noexcept;
3653 INLINE
bool operator <(
const imatrix &m1,
const imatrix_slice &ms) noexcept;
3655 INLINE
bool operator <=(
const imatrix &m1,
const imatrix_slice &ms) noexcept;
3657 INLINE
bool operator >(
const imatrix &m1,
const imatrix_slice &ms) noexcept;
3659 INLINE
bool operator >=(
const imatrix &m1,
const imatrix_slice &ms) noexcept;
3664 INLINE
bool operator ==(
const imatrix_slice &m1,
const imatrix_slice &m2) noexcept;
3666 INLINE
bool operator !=(
const imatrix_slice &m1,
const imatrix_slice &m2) noexcept;
3668 INLINE
bool operator <(
const imatrix_slice &m1,
const imatrix_slice &m2) noexcept;
3670 INLINE
bool operator <=(
const imatrix_slice &m1,
const imatrix_slice &m2) noexcept;
3672 INLINE
bool operator >(
const imatrix_slice &m1,
const imatrix_slice &m2) noexcept;
3674 INLINE
bool operator >=(
const imatrix_slice &m1,
const imatrix_slice &m2) noexcept;
3679 INLINE
bool operator !(
const imatrix &ms) noexcept;
3681 INLINE
bool operator !(
const imatrix_slice &ms) noexcept;
3686 INLINE std::ostream &operator <<(std::ostream &s,
const imatrix &r) noexcept;
3688 INLINE std::ostream &operator <<(std::ostream &s,
const imatrix_slice &r) noexcept;
3690 INLINE std::istream &operator >>(std::istream &s,imatrix &r) noexcept;
3692 INLINE std::istream &operator >>(std::istream &s,imatrix_slice &r) noexcept;
3695 rmatrix
CompMat (
const imatrix& );
3697 imatrix
Id (
const imatrix& );
3699 imatrix
transp (
const imatrix& );
3703 INLINE
int RowLen (
const imatrix& );
3705 INLINE
int ColLen (
const imatrix& );
3707 INLINE
int RowLen (
const imatrix_slice& );
3709 INLINE
int ColLen (
const imatrix_slice& );
3715 #ifdef _CXSC_INCL_INL
3716 #include "matrix.inl"
3717 #include "imatrix.inl"
3720 #ifdef _CXSC_CIVECTOR_HPP_INCLUDED
3721 # ifdef _CXSC_INCL_INL
3722 # include "civecimat.inl"
3724 # include "civecimat.hpp"
3728 #ifdef _CXSC_CVECTOR_HPP_INCLUDED
3729 # ifdef _CXSC_INCL_INL
3730 # include "cvecimat.inl"
3732 # include "cvecimat.hpp"
3736 #ifdef _CXSC_CMATRIX_HPP_INCLUDED
3737 # ifdef _CXSC_INCL_INL
3738 # include "cmatimat.inl"
3740 # include "cmatimat.hpp"
3744 #ifdef _CXSC_LIVECTOR_HPP_INCLUDED
3745 # ifdef _CXSC_INCL_INL
3746 # include "livecimat.inl"
3748 # include "livecimat.hpp"
3752 #ifdef _CXSC_LRVECTOR_HPP_INCLUDED
3753 # ifdef _CXSC_INCL_INL
3754 # include "lrvecimat.inl"
3756 # include "lrvecimat.hpp"
3760 #ifdef _CXSC_LRMATRIX_HPP_INCLUDED
3761 # ifdef _CXSC_INCL_INL
3762 # include "lrmatimat.inl"
3764 # include "lrmatimat.hpp"
3769 #ifdef CXSC_USE_BLAS
3770 #define _CXSC_BLAS_IMATRIX
3771 #include "cxsc_blas.inl"