26#ifndef _CXSC_CIMATRIX_HPP_INCLUDED
27#define _CXSC_CIMATRIX_HPP_INCLUDED
29#include "xscclass.hpp"
31#include "civector.hpp"
76 int size,start,offset;
111#ifdef _CXSC_FRIEND_TPL
113template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
119template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r)
noexcept;
120template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
126template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
noexcept;
127template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
133template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
139template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
145template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
151template <
class MV,
class V>
friend MV &_mvvsetre(MV &v,
const V &rv)
157template <
class MV,
class V>
friend MV &_mvvsetim(MV &v,
const V &rv)
163template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
noexcept;
164template <
class MV,
class V>
friend V _mvim(
const MV &mv)
noexcept;
165template <
class MV,
class V>
friend V _mvre(
const MV &mv)
noexcept;
166template <
class MV,
class V>
friend V _mvdiam(
const MV &mv)
noexcept;
167template <
class MV,
class V>
friend V _mvmid(
const MV &mv)
noexcept;
168template <
class MV,
class V>
friend V _mvinf(
const MV &mv)
noexcept;
169template <
class MV,
class V>
friend V _mvsup(
const MV &mv)
noexcept;
171 template <
class MV,
class S>
friend MV &_mvssetinf(MV &mv,
const S &s)
noexcept;
172 template <
class MV,
class S>
friend MV &_mvssetsup(MV &mv,
const S &s)
noexcept;
173 template <
class MV,
class S>
friend MV &_mvsusetinf(MV &mv,
const S &s)
noexcept;
174 template <
class MV,
class S>
friend MV &_mvsusetsup(MV &mv,
const S &s)
noexcept;
175 template <
class MV,
class S>
friend MV &_mvssetim(MV &mv,
const S &s)
noexcept;
176 template <
class MV,
class S>
friend MV &_mvssetre(MV &mv,
const S &s)
noexcept;
177template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
183template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
189 template <
class MV1,
class MV2,
class S>
friend S _mvmvcimult(
const MV1 & rv1,
const MV2 &rv2)
195 template <
class V,
class MV,
class S>
friend S _vmvcimult(
const V &rv1,
const MV &rv2)
201 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
noexcept;
202 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
208 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
214 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
220 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
226 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
232 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
noexcept;
233template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r)
noexcept;
234template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r)
noexcept;
235template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r)
noexcept;
236template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r)
noexcept;
237template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
243template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
249template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
255template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
261 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
267 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
273template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
279 template <
class MV1,
class MV2,
class E>
friend E _mvmvsect(
const MV1 &rv1,
const MV2 &rv2)
285 template <
class MV,
class V,
class E>
friend E _mvvsect(
const MV &rv1,
const V &rv2)
291template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
297template <
class V,
class MV>
friend V &_vmvsectassign(V &rv,
const MV &v)
315 explicit INLINE
cimatrix_subv (
cinterval *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) { }
913 int lb1,ub1,lb2,ub2,xsize,ysize;
917#ifdef _CXSC_FRIEND_TPL
919template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
925template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
931 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms)
noexcept;
932 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
noexcept;
933 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
939 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r)
noexcept;
940template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
946template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
noexcept;
947 template <
class M>
friend int _mlb(
const M &m,
const int &i)
953 template <
class M>
friend int _mub(
const M &m,
const int &i)
959 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
965 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
971 template <
class M>
friend void _mresize(M &A)
noexcept;
972 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
978 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
984 template <
class M,
class E>
friend E _mabs(
const M &m)
noexcept;
985 template <
class M,
class E>
friend E _mdiam(
const M &m)
noexcept;
986 template <
class M,
class E>
friend E _mmid(
const M &m)
noexcept;
987 template <
class M,
class E>
friend E _mre(
const M &m)
noexcept;
988 template <
class M,
class E>
friend E _mim(
const M &m)
noexcept;
993 template <
class M1,
class M2>
friend M1 &_mmsetre(M1 &m1,
const M2 &m2)
999 template <
class M1,
class M2>
friend M1 &_mmsetim(M1 &m1,
const M2 &m2)
1000#if(CXSC_INDEX_CHECK)
1005 template <
class M1,
class MS2>
friend M1 &_mmssetre(M1 &m1,
const MS2 &ms2)
1006#if(CXSC_INDEX_CHECK)
1011 template <
class M1,
class MS2>
friend M1 &_mmssetim(M1 &m1,
const MS2 &ms2)
1012#if(CXSC_INDEX_CHECK)
1017 template <
class M,
class E>
friend E _minf(
const M &m)
noexcept;
1018 template <
class M,
class E>
friend E _msup(
const M &m)
noexcept;
1019 template <
class M1,
class M2>
friend M1 &_mmsetinf(M1 &m1,
const M2 &m2)
1020#if(CXSC_INDEX_CHECK)
1025 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
1026#if(CXSC_INDEX_CHECK)
1031 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
1032#if(CXSC_INDEX_CHECK)
1037 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
1038#if(CXSC_INDEX_CHECK)
1043 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
1044#if(CXSC_INDEX_CHECK)
1049 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
1050#if(CXSC_INDEX_CHECK)
1055 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
1056#if(CXSC_INDEX_CHECK)
1061 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
1062#if(CXSC_INDEX_CHECK)
1068 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
1069#if(CXSC_INDEX_CHECK)
1074 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1075#if(CXSC_INDEX_CHECK)
1080 template <
class M>
friend M _mminus(
const M &m)
noexcept;
1081 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
noexcept;
1082 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
1083#if(CXSC_INDEX_CHECK)
1088 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
1089#if(CXSC_INDEX_CHECK)
1094 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1095#if(CXSC_INDEX_CHECK)
1100 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1101#if(CXSC_INDEX_CHECK)
1106 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1107#if(CXSC_INDEX_CHECK)
1112 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1113#if(CXSC_INDEX_CHECK)
1118 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1119#if(CXSC_INDEX_CHECK)
1124 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1125#if(CXSC_INDEX_CHECK)
1130 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
1131#if(CXSC_INDEX_CHECK)
1136 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1137#if(CXSC_INDEX_CHECK)
1142 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1143#if(CXSC_INDEX_CHECK)
1148 template <
class M1,
class M2,
class E>
friend E _mmcimult(
const M1 &m1,
const M2 &m2)
1149#if(CXSC_INDEX_CHECK)
1154 template <
class M1,
class M2,
class S>
friend M1 &_mmcimultassign(M1 &m1,
const M2 &m2)
1155#if(CXSC_INDEX_CHECK)
1160 template <
class M,
class MS,
class E>
friend E _mmscimult(
const M &m1,
const MS &ms)
1161#if(CXSC_INDEX_CHECK)
1166 template <
class MS,
class M,
class E>
friend E _msmcimult(
const MS &ms,
const M &m2)
1167#if(CXSC_INDEX_CHECK)
1172 template <
class M,
class MS,
class S>
friend M &_mmscimultassign(M &m1,
const MS &ms)
1173#if(CXSC_INDEX_CHECK)
1178 template <
class MS1,
class MS2,
class E>
friend E _msmscimult(
const MS1 &ms1,
const MS2 &ms2)
1179#if(CXSC_INDEX_CHECK)
1184 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
1185#if(CXSC_INDEX_CHECK)
1190 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1191#if(CXSC_INDEX_CHECK)
1196 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
1197#if(CXSC_INDEX_CHECK)
1202 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1203#if(CXSC_INDEX_CHECK)
1208 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
1209#if(CXSC_INDEX_CHECK)
1214 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1215#if(CXSC_INDEX_CHECK)
1220 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
1221#if(CXSC_INDEX_CHECK)
1226 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1227#if(CXSC_INDEX_CHECK)
1232 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
1233#if(CXSC_INDEX_CHECK)
1238 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1239#if(CXSC_INDEX_CHECK)
1244 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
1245#if(CXSC_INDEX_CHECK)
1250 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1251#if(CXSC_INDEX_CHECK)
1257 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m)
noexcept;
1258 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c)
noexcept;
1259 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
noexcept;
1260 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c)
noexcept;
1261 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c)
noexcept;
1262 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
noexcept;
1264 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
1265#if(CXSC_INDEX_CHECK)
1270 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
1271#if(CXSC_INDEX_CHECK)
1276 template <
class V,
class M,
class S>
friend V &_vmcimultassign(V &v,
const M &m)
1277#if(CXSC_INDEX_CHECK)
1282 template <
class VS,
class M,
class S>
friend VS &_vsmcimultassign(VS &v,
const M &m)
1283#if(CXSC_INDEX_CHECK)
1289 template <
class M>
friend void *_mvoid(
const M &m)
noexcept;
1290 template <
class M>
friend bool _mnot(
const M &m)
noexcept;
1291 template <
class MS>
friend void *_msvoid(
const MS &ms)
noexcept;
1292 template <
class MS>
friend bool _msnot(
const MS &ms)
noexcept;
1293 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2)
noexcept;
1294 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2)
noexcept;
1295 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2)
noexcept;
1296 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2)
noexcept;
1297 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
noexcept;
1298 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
noexcept;
1299 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
noexcept;
1300 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
noexcept;
1301 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
noexcept;
1302 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
noexcept;
1303 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r)
noexcept;
1304 template <
class M>
friend std::istream &_min(std::istream &s,M &r)
noexcept;
1313 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
1314#if(CXSC_INDEX_CHECK)
1319 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
1320#if(CXSC_INDEX_CHECK)
1370 explicit INLINE
cimatrix(
const int &m,
const int &n)
1371#if(CXSC_INDEX_CHECK)
1377 explicit INLINE
cimatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
1378#if(CXSC_INDEX_CHECK)
1495 INLINE
~cimatrix()
noexcept {
delete [] dat; }
1595#if(CXSC_INDEX_CHECK)
1602#if(CXSC_INDEX_CHECK)
1609#if(CXSC_INDEX_CHECK)
1616#if(CXSC_INDEX_CHECK)
1626#if(CXSC_INDEX_CHECK)
1633#if(CXSC_INDEX_CHECK)
1638 INLINE
operator void*()
noexcept;
1655 int offset1,offset2,mxsize,mysize;
1656 int start1,end1,start2,end2,sxsize,sysize;
1660#ifdef _CXSC_FRIEND_TPL
1662template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
1663#if(CXSC_INDEX_CHECK)
1668 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
1669#if(CXSC_INDEX_CHECK)
1674 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
1675#if(CXSC_INDEX_CHECK)
1680 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
noexcept;
1681 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r)
noexcept;
1682 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
1683#if(CXSC_INDEX_CHECK)
1688 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
1689#if(CXSC_INDEX_CHECK)
1694 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
noexcept;
1695 template <
class MS,
class E>
friend E _msinf(
const MS &ms)
noexcept;
1696 template <
class MS,
class E>
friend E _mssup(
const MS &ms)
noexcept;
1697 template <
class MS,
class E>
friend E _msdiam(
const MS &ms)
noexcept;
1698 template <
class MS,
class E>
friend E _msmid(
const MS &ms)
noexcept;
1699 template <
class MS,
class E>
friend E _msre(
const MS &ms)
noexcept;
1700 template <
class MS,
class E>
friend E _msim(
const MS &ms)
noexcept;
1705 template <
class MS1,
class M2>
friend MS1 &_msmsetre(MS1 &ms1,
const M2 &m2)
1706#if(CXSC_INDEX_CHECK)
1711 template <
class MS1,
class M2>
friend MS1 &_msmsetim(MS1 &ms1,
const M2 &m2)
1712#if(CXSC_INDEX_CHECK)
1717 template <
class MS1,
class MS2>
friend MS1 &_msmssetre(MS1 &ms1,
const MS2 &ms2)
1718#if(CXSC_INDEX_CHECK)
1723 template <
class MS1,
class MS2>
friend MS1 &_msmssetim(MS1 &ms1,
const MS2 &ms2)
1724#if(CXSC_INDEX_CHECK)
1729 template <
class MS1,
class M2>
friend MS1 &_msmsetinf(MS1 &ms1,
const M2 &m2)
1730#if(CXSC_INDEX_CHECK)
1735 template <
class MS1,
class M2>
friend MS1 &_msmsetsup(MS1 &ms1,
const M2 &m2)
1736#if(CXSC_INDEX_CHECK)
1741 template <
class MS1,
class MS2>
friend MS1 &_msmssetinf(MS1 &ms1,
const MS2 &ms2)
1742#if(CXSC_INDEX_CHECK)
1747 template <
class MS1,
class MS2>
friend MS1 &_msmssetsup(MS1 &ms1,
const MS2 &ms2)
1748#if(CXSC_INDEX_CHECK)
1753 template <
class MS1,
class M2>
friend MS1 &_msmusetinf(MS1 &ms1,
const M2 &m2)
1754#if(CXSC_INDEX_CHECK)
1759 template <
class MS1,
class M2>
friend MS1 &_msmusetsup(MS1 &ms1,
const M2 &m2)
1760#if(CXSC_INDEX_CHECK)
1765 template <
class MS1,
class MS2>
friend MS1 &_msmsusetinf(MS1 &ms1,
const MS2 &ms2)
1766#if(CXSC_INDEX_CHECK)
1771 template <
class MS1,
class MS2>
friend MS1 &_msmsusetsup(MS1 &ms1,
const MS2 &ms2)
1772#if(CXSC_INDEX_CHECK)
1778 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
noexcept;
1779 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1780#if(CXSC_INDEX_CHECK)
1785 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1786#if(CXSC_INDEX_CHECK)
1791 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1792#if(CXSC_INDEX_CHECK)
1797 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1798#if(CXSC_INDEX_CHECK)
1803 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
1804#if(CXSC_INDEX_CHECK)
1809 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1810#if(CXSC_INDEX_CHECK)
1815 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1816#if(CXSC_INDEX_CHECK)
1821 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1822#if(CXSC_INDEX_CHECK)
1827 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1828#if(CXSC_INDEX_CHECK)
1833 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1834#if(CXSC_INDEX_CHECK)
1839 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
1840#if(CXSC_INDEX_CHECK)
1845 template <
class M,
class MS,
class E>
friend E _mmscimult(
const M &m1,
const MS &ms)
1846#if(CXSC_INDEX_CHECK)
1851 template <
class MS,
class M,
class E>
friend E _msmcimult(
const MS &ms,
const M &m2)
1852#if(CXSC_INDEX_CHECK)
1857 template <
class M,
class MS,
class S>
friend M &_mmscimultassign(M &m1,
const MS &ms)
1858#if(CXSC_INDEX_CHECK)
1863 template <
class MS1,
class MS2,
class E>
friend E _msmscimult(
const MS1 &ms1,
const MS2 &ms2)
1864#if(CXSC_INDEX_CHECK)
1869 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1870#if(CXSC_INDEX_CHECK)
1875 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1876#if(CXSC_INDEX_CHECK)
1881 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
1882#if(CXSC_INDEX_CHECK)
1887 template <
class MS1,
class MS2>
friend MS1 &_msmsconvassign(MS1 &ms1,
const MS2 &ms2)
1888#if(CXSC_INDEX_CHECK)
1893 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1894#if(CXSC_INDEX_CHECK)
1899 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1900#if(CXSC_INDEX_CHECK)
1905 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1906#if(CXSC_INDEX_CHECK)
1911 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
1912#if(CXSC_INDEX_CHECK)
1917 template <
class MS1,
class MS2>
friend MS1 &_msmssectassign(MS1 &ms1,
const MS2 &ms2)
1918#if(CXSC_INDEX_CHECK)
1923 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1924#if(CXSC_INDEX_CHECK)
1930 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
1931#if(CXSC_INDEX_CHECK)
1936 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
1937#if(CXSC_INDEX_CHECK)
1942 template <
class V,
class MS,
class S>
friend V &_vmscimultassign(V &v,
const MS &ms)
1943#if(CXSC_INDEX_CHECK)
1949 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
noexcept;
1950 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c)
noexcept;
1951 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
noexcept;
1952 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c)
noexcept;
1954 template <
class MS>
friend void *_msvoid(
const MS &ms)
noexcept;
1955 template <
class MS>
friend bool _msnot(
const MS &ms)
noexcept;
1956 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
noexcept;
1957 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
noexcept;
1958 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
noexcept;
1959 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
noexcept;
1960 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
noexcept;
1961 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
noexcept;
1962 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
1963 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
1964 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
1965 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
1966 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r)
noexcept;
1967 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r)
noexcept;
2003 explicit INLINE
cimatrix_slice(
cimatrix &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) { }
2005 explicit INLINE
cimatrix_slice(
cimatrix_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) { }
2008 INLINE
cimatrix_slice(
const cimatrix_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) { }
2014#if(CXSC_INDEX_CHECK)
2022#if(CXSC_INDEX_CHECK)
2029#if(CXSC_INDEX_CHECK)
2044#if(CXSC_INDEX_CHECK)
2051#if(CXSC_INDEX_CHECK)
2058#if(CXSC_INDEX_CHECK)
2072#if(CXSC_INDEX_CHECK)
2079#if(CXSC_INDEX_CHECK)
2088#if(CXSC_INDEX_CHECK)
2095#if(CXSC_INDEX_CHECK)
2102#if(CXSC_INDEX_CHECK)
2117#if(CXSC_INDEX_CHECK)
2124#if(CXSC_INDEX_CHECK)
2133#if(CXSC_INDEX_CHECK)
2140#if(CXSC_INDEX_CHECK)
2147#if(CXSC_INDEX_CHECK)
2162#if(CXSC_INDEX_CHECK)
2169#if(CXSC_INDEX_CHECK)
2178#if(CXSC_INDEX_CHECK)
2185#if(CXSC_INDEX_CHECK)
2192#if(CXSC_INDEX_CHECK)
2200#if(CXSC_INDEX_CHECK)
2207#if(CXSC_INDEX_CHECK)
2215#if(CXSC_INDEX_CHECK)
2222#if(CXSC_INDEX_CHECK)
2232#if(CXSC_INDEX_CHECK)
2239#if(CXSC_INDEX_CHECK)
2244 INLINE
operator void*()
noexcept;
2277#if(CXSC_INDEX_CHECK)
2284#if(CXSC_INDEX_CHECK)
2291#if(CXSC_INDEX_CHECK)
2298#if(CXSC_INDEX_CHECK)
2305#if(CXSC_INDEX_CHECK)
2312#if(CXSC_INDEX_CHECK)
2319#if(CXSC_INDEX_CHECK)
2326#if(CXSC_INDEX_CHECK)
2333#if(CXSC_INDEX_CHECK)
2340#if(CXSC_INDEX_CHECK)
2377#if(CXSC_INDEX_CHECK)
2384#if(CXSC_INDEX_CHECK)
2391#if(CXSC_INDEX_CHECK)
2398#if(CXSC_INDEX_CHECK)
2405#if(CXSC_INDEX_CHECK)
2412#if(CXSC_INDEX_CHECK)
2419#if(CXSC_INDEX_CHECK)
2426#if(CXSC_INDEX_CHECK)
2433#if(CXSC_INDEX_CHECK)
2440#if(CXSC_INDEX_CHECK)
2477#if(CXSC_INDEX_CHECK)
2484#if(CXSC_INDEX_CHECK)
2491#if(CXSC_INDEX_CHECK)
2498#if(CXSC_INDEX_CHECK)
2505#if(CXSC_INDEX_CHECK)
2512#if(CXSC_INDEX_CHECK)
2519#if(CXSC_INDEX_CHECK)
2526#if(CXSC_INDEX_CHECK)
2533#if(CXSC_INDEX_CHECK)
2540#if(CXSC_INDEX_CHECK)
2577#if(CXSC_INDEX_CHECK)
2584#if(CXSC_INDEX_CHECK)
2591#if(CXSC_INDEX_CHECK)
2598#if(CXSC_INDEX_CHECK)
2605#if(CXSC_INDEX_CHECK)
2612#if(CXSC_INDEX_CHECK)
2619#if(CXSC_INDEX_CHECK)
2626#if(CXSC_INDEX_CHECK)
2633#if(CXSC_INDEX_CHECK)
2640#if(CXSC_INDEX_CHECK)
2693#if(CXSC_INDEX_CHECK)
2700#if(CXSC_INDEX_CHECK)
2707#if(CXSC_INDEX_CHECK)
2714#if(CXSC_INDEX_CHECK)
2721#if(CXSC_INDEX_CHECK)
2728#if(CXSC_INDEX_CHECK)
2752#if(CXSC_INDEX_CHECK)
2759#if(CXSC_INDEX_CHECK)
2766#if(CXSC_INDEX_CHECK)
2773#if(CXSC_INDEX_CHECK)
2780#if(CXSC_INDEX_CHECK)
2787#if(CXSC_INDEX_CHECK)
2795#if(CXSC_INDEX_CHECK)
2803#if(CXSC_INDEX_CHECK)
2810#if(CXSC_INDEX_CHECK)
2817#if(CXSC_INDEX_CHECK)
2824#if(CXSC_INDEX_CHECK)
2831#if(CXSC_INDEX_CHECK)
2839#if(CXSC_INDEX_CHECK)
2846#if(CXSC_INDEX_CHECK)
2853#if(CXSC_INDEX_CHECK)
2860#if(CXSC_INDEX_CHECK)
2867#if(CXSC_INDEX_CHECK)
2875#if(CXSC_INDEX_CHECK)
2882#if(CXSC_INDEX_CHECK)
2889#if(CXSC_INDEX_CHECK)
2896#if(CXSC_INDEX_CHECK)
2903#if(CXSC_INDEX_CHECK)
2913#if(CXSC_INDEX_CHECK)
2920#if(CXSC_INDEX_CHECK)
2927#if(CXSC_INDEX_CHECK)
2934#if(CXSC_INDEX_CHECK)
2941#if(CXSC_INDEX_CHECK)
2948#if(CXSC_INDEX_CHECK)
2958#if(CXSC_INDEX_CHECK)
2965#if(CXSC_INDEX_CHECK)
2972#if(CXSC_INDEX_CHECK)
2979#if(CXSC_INDEX_CHECK)
2986#if(CXSC_INDEX_CHECK)
2993#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)
3038#if(CXSC_INDEX_CHECK)
3045#if(CXSC_INDEX_CHECK)
3052#if(CXSC_INDEX_CHECK)
3072 INLINE
int Lb(
const cimatrix &rm,
const int &i)
3073#if(CXSC_INDEX_CHECK)
3079 INLINE
int Ub(
const cimatrix &rm,
const int &i)
3080#if(CXSC_INDEX_CHECK)
3087#if(CXSC_INDEX_CHECK)
3094#if(CXSC_INDEX_CHECK)
3101#if(CXSC_INDEX_CHECK)
3108#if(CXSC_INDEX_CHECK)
3117#if(CXSC_INDEX_CHECK)
3123 INLINE
void Resize(
cimatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
3124#if(CXSC_INDEX_CHECK)
3152#if(CXSC_INDEX_CHECK)
3159#if(CXSC_INDEX_CHECK)
3166#if(CXSC_INDEX_CHECK)
3173#if(CXSC_INDEX_CHECK)
3180#if(CXSC_INDEX_CHECK)
3187#if(CXSC_INDEX_CHECK)
3194#if(CXSC_INDEX_CHECK)
3201#if(CXSC_INDEX_CHECK)
3208#if(CXSC_INDEX_CHECK)
3215#if(CXSC_INDEX_CHECK)
3222#if(CXSC_INDEX_CHECK)
3229#if(CXSC_INDEX_CHECK)
3236#if(CXSC_INDEX_CHECK)
3243#if(CXSC_INDEX_CHECK)
3250#if(CXSC_INDEX_CHECK)
3257#if(CXSC_INDEX_CHECK)
3273#if(CXSC_INDEX_CHECK)
3280#if(CXSC_INDEX_CHECK)
3287#if(CXSC_INDEX_CHECK)
3294#if(CXSC_INDEX_CHECK)
3301#if(CXSC_INDEX_CHECK)
3308#if(CXSC_INDEX_CHECK)
3315#if(CXSC_INDEX_CHECK)
3322#if(CXSC_INDEX_CHECK)
3452#if(CXSC_INDEX_CHECK)
3459#if(CXSC_INDEX_CHECK)
3466#if(CXSC_INDEX_CHECK)
3473#if(CXSC_INDEX_CHECK)
3480#if(CXSC_INDEX_CHECK)
3487#if(CXSC_INDEX_CHECK)
3495#if(CXSC_INDEX_CHECK)
3502#if(CXSC_INDEX_CHECK)
3512#if(CXSC_INDEX_CHECK)
3519#if(CXSC_INDEX_CHECK)
3526#if(CXSC_INDEX_CHECK)
3534#if(CXSC_INDEX_CHECK)
3541#if(CXSC_INDEX_CHECK)
3551#if(CXSC_INDEX_CHECK)
3558#if(CXSC_INDEX_CHECK)
3565#if(CXSC_INDEX_CHECK)
3573#if(CXSC_INDEX_CHECK)
3580#if(CXSC_INDEX_CHECK)
3590#if(CXSC_INDEX_CHECK)
3597#if(CXSC_INDEX_CHECK)
3604#if(CXSC_INDEX_CHECK)
3612#if(CXSC_INDEX_CHECK)
3619#if(CXSC_INDEX_CHECK)
3634#if(CXSC_INDEX_CHECK)
3641#if(CXSC_INDEX_CHECK)
3648#if(CXSC_INDEX_CHECK)
3655#if(CXSC_INDEX_CHECK)
3662#if(CXSC_INDEX_CHECK)
3669#if(CXSC_INDEX_CHECK)
3681#if(CXSC_INDEX_CHECK)
3688#if(CXSC_INDEX_CHECK)
3695#if(CXSC_INDEX_CHECK)
3702#if(CXSC_INDEX_CHECK)
3709#if(CXSC_INDEX_CHECK)
3716#if(CXSC_INDEX_CHECK)
3724#if(CXSC_INDEX_CHECK)
3731#if(CXSC_INDEX_CHECK)
3738#if(CXSC_INDEX_CHECK)
3745#if(CXSC_INDEX_CHECK)
3752#if(CXSC_INDEX_CHECK)
3759#if(CXSC_INDEX_CHECK)
3768#if(CXSC_INDEX_CHECK)
3775#if(CXSC_INDEX_CHECK)
3782#if(CXSC_INDEX_CHECK)
3789#if(CXSC_INDEX_CHECK)
3796#if(CXSC_INDEX_CHECK)
3803#if(CXSC_INDEX_CHECK)
3811#if(CXSC_INDEX_CHECK)
3818#if(CXSC_INDEX_CHECK)
3825#if(CXSC_INDEX_CHECK)
3832#if(CXSC_INDEX_CHECK)
3839#if(CXSC_INDEX_CHECK)
3846#if(CXSC_INDEX_CHECK)
3855#if(CXSC_INDEX_CHECK)
3862#if(CXSC_INDEX_CHECK)
3869#if(CXSC_INDEX_CHECK)
3876#if(CXSC_INDEX_CHECK)
3883#if(CXSC_INDEX_CHECK)
3890#if(CXSC_INDEX_CHECK)
3897#if(CXSC_INDEX_CHECK)
3904#if(CXSC_INDEX_CHECK)
3911#if(CXSC_INDEX_CHECK)
3918#if(CXSC_INDEX_CHECK)
3926#if(CXSC_INDEX_CHECK)
3933#if(CXSC_INDEX_CHECK)
3940#if(CXSC_INDEX_CHECK)
3947#if(CXSC_INDEX_CHECK)
3954#if(CXSC_INDEX_CHECK)
3961#if(CXSC_INDEX_CHECK)
3968#if(CXSC_INDEX_CHECK)
3975#if(CXSC_INDEX_CHECK)
3982#if(CXSC_INDEX_CHECK)
3989#if(CXSC_INDEX_CHECK)
3997#if(CXSC_INDEX_CHECK)
4004#if(CXSC_INDEX_CHECK)
4011#if(CXSC_INDEX_CHECK)
4018#if(CXSC_INDEX_CHECK)
4025#if(CXSC_INDEX_CHECK)
4032#if(CXSC_INDEX_CHECK)
4039#if(CXSC_INDEX_CHECK)
4046#if(CXSC_INDEX_CHECK)
4053#if(CXSC_INDEX_CHECK)
4060#if(CXSC_INDEX_CHECK)
4068#if(CXSC_INDEX_CHECK)
4075#if(CXSC_INDEX_CHECK)
4082#if(CXSC_INDEX_CHECK)
4089#if(CXSC_INDEX_CHECK)
4096#if(CXSC_INDEX_CHECK)
4103#if(CXSC_INDEX_CHECK)
4110#if(CXSC_INDEX_CHECK)
4117#if(CXSC_INDEX_CHECK)
4124#if(CXSC_INDEX_CHECK)
4131#if(CXSC_INDEX_CHECK)
4139#if(CXSC_INDEX_CHECK)
4146#if(CXSC_INDEX_CHECK)
4153#if(CXSC_INDEX_CHECK)
4160#if(CXSC_INDEX_CHECK)
4167#if(CXSC_INDEX_CHECK)
4174#if(CXSC_INDEX_CHECK)
4181#if(CXSC_INDEX_CHECK)
4188#if(CXSC_INDEX_CHECK)
4195#if(CXSC_INDEX_CHECK)
4202#if(CXSC_INDEX_CHECK)
4211#if(CXSC_INDEX_CHECK)
4218#if(CXSC_INDEX_CHECK)
4225#if(CXSC_INDEX_CHECK)
4232#if(CXSC_INDEX_CHECK)
4239#if(CXSC_INDEX_CHECK)
4246#if(CXSC_INDEX_CHECK)
4253#if(CXSC_INDEX_CHECK)
4260#if(CXSC_INDEX_CHECK)
4267#if(CXSC_INDEX_CHECK)
4274#if(CXSC_INDEX_CHECK)
4282#if(CXSC_INDEX_CHECK)
4289#if(CXSC_INDEX_CHECK)
4296#if(CXSC_INDEX_CHECK)
4303#if(CXSC_INDEX_CHECK)
4310#if(CXSC_INDEX_CHECK)
4317#if(CXSC_INDEX_CHECK)
4324#if(CXSC_INDEX_CHECK)
4331#if(CXSC_INDEX_CHECK)
4338#if(CXSC_INDEX_CHECK)
4345#if(CXSC_INDEX_CHECK)
4353#if(CXSC_INDEX_CHECK)
4360#if(CXSC_INDEX_CHECK)
4367#if(CXSC_INDEX_CHECK)
4374#if(CXSC_INDEX_CHECK)
4381#if(CXSC_INDEX_CHECK)
4388#if(CXSC_INDEX_CHECK)
4395#if(CXSC_INDEX_CHECK)
4402#if(CXSC_INDEX_CHECK)
4409#if(CXSC_INDEX_CHECK)
4416#if(CXSC_INDEX_CHECK)
4424#if(CXSC_INDEX_CHECK)
4431#if(CXSC_INDEX_CHECK)
4438#if(CXSC_INDEX_CHECK)
4445#if(CXSC_INDEX_CHECK)
4452#if(CXSC_INDEX_CHECK)
4459#if(CXSC_INDEX_CHECK)
4466#if(CXSC_INDEX_CHECK)
4473#if(CXSC_INDEX_CHECK)
4480#if(CXSC_INDEX_CHECK)
4487#if(CXSC_INDEX_CHECK)
4495#if(CXSC_INDEX_CHECK)
4502#if(CXSC_INDEX_CHECK)
4509#if(CXSC_INDEX_CHECK)
4516#if(CXSC_INDEX_CHECK)
4523#if(CXSC_INDEX_CHECK)
4530#if(CXSC_INDEX_CHECK)
4537#if(CXSC_INDEX_CHECK)
4544#if(CXSC_INDEX_CHECK)
4551#if(CXSC_INDEX_CHECK)
4558#if(CXSC_INDEX_CHECK)
4567#if(CXSC_INDEX_CHECK)
4574#if(CXSC_INDEX_CHECK)
4581#if(CXSC_INDEX_CHECK)
4588#if(CXSC_INDEX_CHECK)
4595#if(CXSC_INDEX_CHECK)
4602#if(CXSC_INDEX_CHECK)
4609#if(CXSC_INDEX_CHECK)
4616#if(CXSC_INDEX_CHECK)
4623#if(CXSC_INDEX_CHECK)
4630#if(CXSC_INDEX_CHECK)
4638#if(CXSC_INDEX_CHECK)
4645#if(CXSC_INDEX_CHECK)
4652#if(CXSC_INDEX_CHECK)
4659#if(CXSC_INDEX_CHECK)
4666#if(CXSC_INDEX_CHECK)
4673#if(CXSC_INDEX_CHECK)
4680#if(CXSC_INDEX_CHECK)
4687#if(CXSC_INDEX_CHECK)
4694#if(CXSC_INDEX_CHECK)
4701#if(CXSC_INDEX_CHECK)
4709#if(CXSC_INDEX_CHECK)
4716#if(CXSC_INDEX_CHECK)
4723#if(CXSC_INDEX_CHECK)
4730#if(CXSC_INDEX_CHECK)
4737#if(CXSC_INDEX_CHECK)
4744#if(CXSC_INDEX_CHECK)
4751#if(CXSC_INDEX_CHECK)
4758#if(CXSC_INDEX_CHECK)
4765#if(CXSC_INDEX_CHECK)
4772#if(CXSC_INDEX_CHECK)
4780#if(CXSC_INDEX_CHECK)
4787#if(CXSC_INDEX_CHECK)
4794#if(CXSC_INDEX_CHECK)
4801#if(CXSC_INDEX_CHECK)
4808#if(CXSC_INDEX_CHECK)
4815#if(CXSC_INDEX_CHECK)
4822#if(CXSC_INDEX_CHECK)
4829#if(CXSC_INDEX_CHECK)
4836#if(CXSC_INDEX_CHECK)
4843#if(CXSC_INDEX_CHECK)
4851#if(CXSC_INDEX_CHECK)
4858#if(CXSC_INDEX_CHECK)
4865#if(CXSC_INDEX_CHECK)
4872#if(CXSC_INDEX_CHECK)
4879#if(CXSC_INDEX_CHECK)
4886#if(CXSC_INDEX_CHECK)
4893#if(CXSC_INDEX_CHECK)
4900#if(CXSC_INDEX_CHECK)
4907#if(CXSC_INDEX_CHECK)
4914#if(CXSC_INDEX_CHECK)
4923#if(CXSC_INDEX_CHECK)
4930#if(CXSC_INDEX_CHECK)
4937#if(CXSC_INDEX_CHECK)
4944#if(CXSC_INDEX_CHECK)
4951#if(CXSC_INDEX_CHECK)
4958#if(CXSC_INDEX_CHECK)
4965#if(CXSC_INDEX_CHECK)
4972#if(CXSC_INDEX_CHECK)
4980#if(CXSC_INDEX_CHECK)
4987#if(CXSC_INDEX_CHECK)
4994#if(CXSC_INDEX_CHECK)
5001#if(CXSC_INDEX_CHECK)
5008#if(CXSC_INDEX_CHECK)
5015#if(CXSC_INDEX_CHECK)
5022#if(CXSC_INDEX_CHECK)
5029#if(CXSC_INDEX_CHECK)
5037#if(CXSC_INDEX_CHECK)
5044#if(CXSC_INDEX_CHECK)
5051#if(CXSC_INDEX_CHECK)
5058#if(CXSC_INDEX_CHECK)
5065#if(CXSC_INDEX_CHECK)
5072#if(CXSC_INDEX_CHECK)
5079#if(CXSC_INDEX_CHECK)
5086#if(CXSC_INDEX_CHECK)
5094#if(CXSC_INDEX_CHECK)
5101#if(CXSC_INDEX_CHECK)
5108#if(CXSC_INDEX_CHECK)
5115#if(CXSC_INDEX_CHECK)
5122#if(CXSC_INDEX_CHECK)
5129#if(CXSC_INDEX_CHECK)
5136#if(CXSC_INDEX_CHECK)
5143#if(CXSC_INDEX_CHECK)
5151#if(CXSC_INDEX_CHECK)
5158#if(CXSC_INDEX_CHECK)
5165#if(CXSC_INDEX_CHECK)
5172#if(CXSC_INDEX_CHECK)
5179#if(CXSC_INDEX_CHECK)
5186#if(CXSC_INDEX_CHECK)
5193#if(CXSC_INDEX_CHECK)
5200#if(CXSC_INDEX_CHECK)
5209#if(CXSC_INDEX_CHECK)
5216#if(CXSC_INDEX_CHECK)
5223#if(CXSC_INDEX_CHECK)
5230#if(CXSC_INDEX_CHECK)
5237#if(CXSC_INDEX_CHECK)
5244#if(CXSC_INDEX_CHECK)
5251#if(CXSC_INDEX_CHECK)
5258#if(CXSC_INDEX_CHECK)
5268#if(CXSC_INDEX_CHECK)
5275#if(CXSC_INDEX_CHECK)
5282#if(CXSC_INDEX_CHECK)
5289#if(CXSC_INDEX_CHECK)
5296#if(CXSC_INDEX_CHECK)
5303#if(CXSC_INDEX_CHECK)
5310#if(CXSC_INDEX_CHECK)
5317#if(CXSC_INDEX_CHECK)
5371 INLINE
bool operator !(
const cimatrix &ms)
noexcept;
5378 INLINE std::ostream &operator <<(std::ostream &s,
const cimatrix &r)
noexcept;
5380 INLINE std::ostream &operator <<(std::ostream &s,
const cimatrix_slice &r)
noexcept;
5382 INLINE std::istream &operator >>(std::istream &s,
cimatrix &r)
noexcept;
5384 INLINE std::istream &operator >>(std::istream &s,
cimatrix_slice &r)
noexcept;
5406#ifdef _CXSC_INCL_INL
5407#include "matrix.inl"
5408#include "cimatrix.inl"
5413#define _CXSC_BLAS_CIMATRIX
5414#include "cxsc_blas.inl"
The Data Type cidotprecision.
The Data Type cimatrix_slice.
cimatrix_slice & operator|=(const scimatrix &m1)
Implementation of hull and allocation operation.
cimatrix_slice & operator&=(const scimatrix &m1)
Implementation of intersection and allocation operation.
cimatrix_slice & operator*=(const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
friend rmatrix SupRe(const cimatrix_slice &v) noexcept
Returns the supremum of real part of the matrix.
cimatrix_slice & operator+=(const cinterval &c) noexcept
Implementation of addition and allocation operation.
friend rmatrix InfIm(const cimatrix_slice &v) noexcept
Returns the infimum of imaginary part of the matrix.
cimatrix_subv operator[](const int &i) noexcept
Operator for accessing a single row of the matrix.
cimatrix_slice(cimatrix_slice &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class cimatrix_slice.
cimatrix_slice & operator=(const cimatrix &m) noexcept
Implementation of standard assigning operator.
cimatrix_slice(cimatrix &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class cimatrix_slice.
friend rmatrix SupIm(const cimatrix_slice &v) noexcept
Returns the supremum of imaginary part of the matrix.
cimatrix_slice & operator/=(const cinterval &c) noexcept
Implementation of division and allocation operation.
cimatrix_slice(const cimatrix_slice &ms) noexcept
Constructor of class cimatrix_slice.
friend rmatrix InfRe(const cimatrix_slice &v) noexcept
Returns the infimum of real part of the matrix.
cimatrix_slice & operator-=(const cinterval &c) noexcept
Implementation of subtraction and allocation operation.
cimatrix_slice & operator()() noexcept
Operator for accessing the whole matrix.
The Data Type cimatrix_subv.
cimatrix_subv & operator&=(const scivector &rv)
Implementation of intersection and allocation operation.
cimatrix_subv & operator=(const scimatrix_subv &rv)
Implementation of standard assigning operator.
cimatrix_subv & operator|=(const scivector &rv)
Implementation of hull and allocation operation.
friend cimatrix_subv Row(cimatrix &m, const int &i) noexcept
Returns one row of the matrix as a vector.
cimatrix_subv(cinterval *d, const int &l, const int &u, const int &s, const int &st, const int &o) noexcept
Constructor of class cimatrix_subv.
cimatrix_subv & operator*=(const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
friend int VecLen(const cimatrix_subv &rv) noexcept
Returns the size of the vector.
friend int Lb(const cimatrix_subv &rv) noexcept
Returns the lower bound of the vector.
friend cimatrix_subv Col(cimatrix &m, const int &i) noexcept
Returns one column of the matrix as a vector.
friend int Ub(const cimatrix_subv &rv) noexcept
Returns the upper bound of the vector.
cimatrix_subv & operator/=(const cinterval &c) noexcept
Implementation of division and allocation operation.
cimatrix_subv & operator()() noexcept
Operator for accessing the whole vector.
cimatrix_subv(const cimatrix_subv &v) noexcept
Constructor of class cimatrix_subv.
cimatrix_subv & operator+=(const cinterval &c) noexcept
Implementation of addition and allocation operation.
cinterval & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector (read-only)
cimatrix_subv & operator-=(const cinterval &c) noexcept
Implementation of subtraction and allocation operation.
friend rmatrix SupIm(const cimatrix &v) noexcept
Returns the supremum of imaginary part of the matrix.
cimatrix & operator()() noexcept
Operator for accessing the whole matrix.
friend rmatrix InfIm(const cimatrix &v) noexcept
Returns the infimum of imaginary part of the matrix.
cimatrix & operator*=(const scimatrix &m1)
Implementation of multiplication and allocation operation.
cimatrix & operator=(const cinterval &r) noexcept
Implementation of standard assigning operator.
cimatrix() noexcept
Constructor of class cimatrix.
friend rmatrix InfRe(const cimatrix &v) noexcept
Returns the infimum of real part of the matrix.
cimatrix_subv operator[](const int &i) const noexcept
Operator for accessing a single row of the matrix.
cimatrix & operator&=(const scimatrix &m1)
Implementation of intersection and allocation operation.
friend rmatrix SupRe(const cimatrix &v) noexcept
Returns the supremum of real part of the matrix.
cimatrix & operator|=(const scimatrix &m1)
Implementation of hull and allocation operation.
cimatrix & operator+=(const scimatrix &m1)
Implementation of addition and allocation operation.
cimatrix & operator-=(const scimatrix &m1)
Implementation of substraction and allocation operation.
The Scalar Type cinterval.
The Data Type civector_slice.
civector() noexcept
Constructor of class civector.
The Data Type cmatrix_slice.
The Data Type cmatrix_subv.
The Data Type cvector_slice.
The Data Type imatrix_slice.
The Data Type imatrix_subv.
The Scalar Type interval.
The Data Type ivector_slice.
The Data Type rmatrix_slice.
The Data Type rmatrix_subv.
The Data Type rvector_slice.
A slice of a sparse complex interval matrix.
Represents a row or column vector of a sparse matrix.
A sparse complex interval matrix.
Helper class for slices of sparse vectors.
A sparse complex interval vector.
A slice of a sparse complex matrix.
Represents a row or column vector of a sparse matrix.
Helper class for slices of sparse vectors.
A slice of a sparse real interval matrix.
Represents a row or column vector of a sparse matrix.
A sparse interval matrix.
Helper class for slices of sparse vectors.
A sparse interval vector.
A slice of a sparse real matrix.
Represents a row or column vector of a sparse matrix.
Helper class for slices of sparse vectors.
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.
cimatrix_subv Col(cimatrix &m, const int &i) noexcept
Returns one column of the matrix as a vector.
int ColLen(const cimatrix &)
Returns the column dimension.
rmatrix CompMat(const cimatrix &A)
Returns Ostrowski's comparison matrix.
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
cimatrix transp(const cimatrix &A)
Returns the transposed matrix.
cvector diam(const cimatrix_subv &mv) noexcept
Returns the diameter of the matrix.
int Ub(const cimatrix &rm, const int &i) noexcept
Returns the upper bound index.
cimatrix & SetLb(cimatrix &m, const int &i, const int &j) noexcept
Sets the lower bound index.
int RowLen(const cimatrix &)
Returns the row dimension.
cimatrix_subv Row(cimatrix &m, const int &i) noexcept
Returns one row of the matrix as a vector.
void DoubleSize(cimatrix &A)
Doubles the size of the matrix.
cimatrix Id(const cimatrix &A)
Returns the Identity matrix.
cimatrix _imatrix(const cimatrix &rm) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
cimatrix & operator*=(cimatrix &m, const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
void Resize(cimatrix &A) noexcept
Resizes the matrix.
cimatrix_subv & SetUncheckedInf(cimatrix_subv &iv, const complex &r) noexcept
Returns the matrix with the new unchecked given infimum value.
cimatrix & SetUb(cimatrix &m, const int &i, const int &j) noexcept
Sets the upper bound index.
int Lb(const cimatrix &rm, const int &i) noexcept
Returns the lower bound index.
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.