26#ifndef _CXSC_IMATRIX_HPP_INCLUDED
27#define _CXSC_IMATRIX_HPP_INCLUDED
29#include "xscclass.hpp"
65 int size,start,offset;
98#ifdef _CXSC_FRIEND_TPL
100template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
106template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r)
noexcept;
107template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
113template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
noexcept;
114template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
120template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
126template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
132template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
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;
142template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
noexcept;
143template <
class MV,
class V>
friend V _mvdiam(
const MV &mv)
noexcept;
144template <
class MV,
class V>
friend V _mvmid(
const MV &mv)
noexcept;
145template <
class MV,
class V>
friend V _mvinf(
const MV &mv)
noexcept;
146template <
class MV,
class V>
friend V _mvsup(
const MV &mv)
noexcept;
147template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
153template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
159 template <
class MV1,
class MV2,
class S>
friend S _mvmvimult(
const MV1 & rv1,
const MV2 &rv2)
165 template <
class V,
class MV,
class S>
friend S _vmvimult(
const V &rv1,
const MV &rv2)
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)
178 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
184 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
190 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
196 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
202 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
noexcept;
203template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r)
noexcept;
204template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r)
noexcept;
205template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r)
noexcept;
206template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r)
noexcept;
207template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
213template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
219template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
225template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
231 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
237 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
243template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
249 template <
class MV1,
class MV2,
class E>
friend E _mvmvsect(
const MV1 &rv1,
const MV2 &rv2)
255 template <
class MV,
class V,
class E>
friend E _mvvsect(
const MV &rv1,
const V &rv2)
261template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
267template <
class V,
class MV>
friend V &_vmvsectassign(V &rv,
const MV &v)
275template <
class V,
class MV>
friend V &_vmvsetim(V &rv,
const MV &v)
281template <
class V,
class MV>
friend V &_vmvsetre(V &rv,
const MV &v)
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) { }
623INLINE imatrix_subv
Row(imatrix &m,
const int &i)
630INLINE imatrix_subv
Col(imatrix &m,
const int &i)
637INLINE imatrix_subv
Row(
const imatrix &m,
const int &i)
644INLINE imatrix_subv
Col(
const imatrix &m,
const int &i)
667 int lb1,ub1,lb2,ub2,xsize,ysize;
671#ifdef _CXSC_FRIEND_TPL
673template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
679template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
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)
693 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r)
noexcept;
694template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
700template <
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)
707 template <
class M>
friend int _mub(
const M &m,
const int &i)
713 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
719 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
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)
732 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
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)
750 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
756 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
762 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
768 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
774 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
780 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
786 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
793 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
799 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
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)
813 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
819 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
825 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
831 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
837 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
843 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
849 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
855 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
861 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
867 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
873 template <
class M1,
class M2,
class E>
friend E _mmimult(
const M1 &m1,
const M2 &m2)
879 template <
class M1,
class M2,
class S>
friend M1 &_mmimultassign(M1 &m1,
const M2 &m2)
885 template <
class M,
class MS,
class E>
friend E _mmsimult(
const M &m1,
const MS &ms)
891 template <
class MS,
class M,
class E>
friend E _msmimult(
const MS &ms,
const M &m2)
897 template <
class M,
class MS,
class S>
friend M &_mmsimultassign(M &m1,
const MS &ms)
903 template <
class MS1,
class MS2,
class E>
friend E _msmsimult(
const MS1 &ms1,
const MS2 &ms2)
909 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
915 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
921 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
927 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
933 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
939 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
945 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
951 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
957 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
963 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
969 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
975 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
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)
995 template <
class V,
class M,
class E>
friend E _vmimult(
const V &v,
const M &m)
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)
1286 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
1455template <
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)
2259 INLINE imatrix_subv &SetSup(imatrix_subv &mv,
const rvector &rv)
2260#if(CXSC_INDEX_CHECK)
2266 INLINE imatrix_subv &UncheckedSetInf(imatrix_subv &mv,
const rvector &rv)
2267#if(CXSC_INDEX_CHECK)
2273 INLINE imatrix_subv &UncheckedSetSup(imatrix_subv &mv,
const rvector &rv)
2274#if(CXSC_INDEX_CHECK)
2280 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)
2297 void accumulate(idotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
2298#if(CXSC_INDEX_CHECK)
2304 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
2305#if(CXSC_INDEX_CHECK)
2311 void accumulate(idotprecision &dp,
const ivector_slice & sl1,
const imatrix_subv &rv2)
2312#if(CXSC_INDEX_CHECK)
2318 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)
2333 void accumulate(cidotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
2334#if(CXSC_INDEX_CHECK)
2340 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
2341#if(CXSC_INDEX_CHECK)
2347 void accumulate(cidotprecision &dp,
const ivector_slice & sl1,
const imatrix_subv &rv2)
2348#if(CXSC_INDEX_CHECK)
2354 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)
2369 INLINE interval
operator *(
const ivector & rv1,
const imatrix_subv &rv2)
2370#if(CXSC_INDEX_CHECK)
2376 INLINE interval
operator *(
const imatrix_subv &rv1,
const ivector &rv2)
2377#if(CXSC_INDEX_CHECK)
2383 INLINE interval
operator *(
const ivector_slice &sl,
const imatrix_subv &sv)
2384#if(CXSC_INDEX_CHECK)
2390 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)
2405 INLINE ivector operator +(
const imatrix_subv &rv1,
const ivector &rv2)
2406#if(CXSC_INDEX_CHECK)
2412 INLINE ivector operator +(
const ivector & rv1,
const imatrix_subv &rv2)
2413#if(CXSC_INDEX_CHECK)
2419 INLINE ivector operator +(
const ivector_slice &sl,
const imatrix_subv &mv)
2420#if(CXSC_INDEX_CHECK)
2426 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)
2441 INLINE ivector operator -(
const ivector & rv1,
const imatrix_subv &rv2)
2442#if(CXSC_INDEX_CHECK)
2448 INLINE ivector operator -(
const imatrix_subv &rv1,
const ivector &rv2)
2449#if(CXSC_INDEX_CHECK)
2455 INLINE ivector operator -(
const ivector_slice &sl,
const imatrix_subv &mv)
2456#if(CXSC_INDEX_CHECK)
2462 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)
2479 void accumulate(idotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2480#if(CXSC_INDEX_CHECK)
2486 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)
2501 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2502#if(CXSC_INDEX_CHECK)
2508 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)
2523 void accumulate(cidotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2524#if(CXSC_INDEX_CHECK)
2530 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)
2545 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2546#if(CXSC_INDEX_CHECK)
2552 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)
2569 void accumulate(cidotprecision &dp,
const cvector & rv1,
const imatrix_subv &rv2)
2570#if(CXSC_INDEX_CHECK)
2576 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)
2591 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cvector &rv2)
2592#if(CXSC_INDEX_CHECK)
2598 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)
2615 void accumulate(cidotprecision &dp,
const civector & rv1,
const imatrix_subv &rv2)
2616#if(CXSC_INDEX_CHECK)
2622 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)
2637 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const civector &rv2)
2638#if(CXSC_INDEX_CHECK)
2644 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)
2672 INLINE
int Ub(
const imatrix &rm,
const int &i)
2673#if(CXSC_INDEX_CHECK)
2679 INLINE
int Lb(
const imatrix_slice &rm,
const int &i)
2680#if(CXSC_INDEX_CHECK)
2686 INLINE
int Ub(
const imatrix_slice &rm,
const int &i)
2687#if(CXSC_INDEX_CHECK)
2693 INLINE imatrix &
SetLb(imatrix &m,
const int &i,
const int &j)
2694#if(CXSC_INDEX_CHECK)
2700 INLINE imatrix &
SetUb(imatrix &m,
const int &i,
const int &j)
2701#if(CXSC_INDEX_CHECK)
2707 INLINE
void Resize(imatrix &A)
noexcept;
2709 INLINE
void Resize(imatrix &A,
const int &m,
const int &n)
2710#if(CXSC_INDEX_CHECK)
2716 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)
2759 INLINE imatrix_slice &SetInf(imatrix_slice &cm,
const rmatrix &rm)
2760#if(CXSC_INDEX_CHECK)
2766 INLINE imatrix &SetInf(imatrix &cm,
const rmatrix_slice &rm)
2767#if(CXSC_INDEX_CHECK)
2773 INLINE imatrix_slice &SetInf(imatrix_slice &cm,
const rmatrix_slice &rm)
2774#if(CXSC_INDEX_CHECK)
2780 INLINE imatrix &SetSup(imatrix &cm,
const rmatrix &rm)
2781#if(CXSC_INDEX_CHECK)
2787 INLINE imatrix_slice &SetSup(imatrix_slice &cm,
const rmatrix &rm)
2788#if(CXSC_INDEX_CHECK)
2794 INLINE imatrix &SetSup(imatrix &cm,
const rmatrix_slice &rm)
2795#if(CXSC_INDEX_CHECK)
2801 INLINE imatrix_slice &SetSup(imatrix_slice &cm,
const rmatrix_slice &rm)
2802#if(CXSC_INDEX_CHECK)
2808 INLINE imatrix &UncheckedSetInf(imatrix &cm,
const rmatrix &rm)
2809#if(CXSC_INDEX_CHECK)
2815 INLINE imatrix_slice &UncheckedSetInf(imatrix_slice &cm,
const rmatrix &rm)
2816#if(CXSC_INDEX_CHECK)
2822 INLINE imatrix &UncheckedSetInf(imatrix &cm,
const rmatrix_slice &rm)
2823#if(CXSC_INDEX_CHECK)
2829 INLINE imatrix_slice &UncheckedSetInf(imatrix_slice &cm,
const rmatrix_slice &rm)
2830#if(CXSC_INDEX_CHECK)
2836 INLINE imatrix &UncheckedSetSup(imatrix &cm,
const rmatrix &rm)
2837#if(CXSC_INDEX_CHECK)
2843 INLINE imatrix_slice &UncheckedSetSup(imatrix_slice &cm,
const rmatrix &rm)
2844#if(CXSC_INDEX_CHECK)
2850 INLINE imatrix &UncheckedSetSup(imatrix &cm,
const rmatrix_slice &rm)
2851#if(CXSC_INDEX_CHECK)
2857 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)
2928 INLINE ivector
operator *(
const imatrix_slice &ms,
const ivector &v)
2929#if(CXSC_INDEX_CHECK)
2935 INLINE ivector
operator *(
const ivector &v,
const imatrix &m)
2936#if(CXSC_INDEX_CHECK)
2942 INLINE ivector
operator *(
const ivector &v,
const imatrix_slice &ms)
2943#if(CXSC_INDEX_CHECK)
2949 INLINE ivector &
operator *=(ivector &v,
const imatrix &m)
2950#if(CXSC_INDEX_CHECK)
2956 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)
2971 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)
2989 INLINE ivector
operator *(
const rvector &v,
const imatrix_slice &ms)
2990#if(CXSC_INDEX_CHECK)
2996 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)
3011 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)
3033 INLINE imatrix operator +(
const imatrix &m,
const imatrix_slice &ms)
3034#if(CXSC_INDEX_CHECK)
3040 INLINE imatrix operator +(
const imatrix_slice &ms,
const imatrix &m)
3041#if(CXSC_INDEX_CHECK)
3047 INLINE imatrix operator +(
const imatrix_slice &m1,
const imatrix_slice &m2)
3048#if(CXSC_INDEX_CHECK)
3054 INLINE imatrix &
operator +=(imatrix &m1,
const imatrix &m2)
3055#if(CXSC_INDEX_CHECK)
3061 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)
3080 INLINE imatrix operator -(
const imatrix &m,
const imatrix_slice &ms)
3081#if(CXSC_INDEX_CHECK)
3087 INLINE imatrix operator -(
const imatrix_slice &ms,
const imatrix &m)
3088#if(CXSC_INDEX_CHECK)
3094 INLINE imatrix operator -(
const imatrix_slice &ms1,
const imatrix_slice &ms2)
3095#if(CXSC_INDEX_CHECK)
3101 INLINE imatrix &operator -=(imatrix &m1,
const imatrix &m2)
3102#if(CXSC_INDEX_CHECK)
3108 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)
3123 INLINE imatrix
operator *(
const imatrix &m1,
const imatrix_slice &ms)
3124#if(CXSC_INDEX_CHECK)
3130 INLINE imatrix
operator *(
const imatrix_slice &ms,
const imatrix &m1)
3131#if(CXSC_INDEX_CHECK)
3137 INLINE imatrix
operator *(
const imatrix_slice &ms1,
const imatrix_slice &ms2)
3138#if(CXSC_INDEX_CHECK)
3144 INLINE imatrix &
operator *=(imatrix &m1,
const imatrix &m2)
3145#if(CXSC_INDEX_CHECK)
3151 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)
3167 INLINE imatrix operator |(
const imatrix &m,
const imatrix_slice &ms)
3168#if(CXSC_INDEX_CHECK)
3174 INLINE imatrix operator |(
const imatrix_slice &ms,
const imatrix &m)
3175#if(CXSC_INDEX_CHECK)
3181 INLINE imatrix operator |(
const imatrix_slice &m1,
const imatrix_slice &m2)
3182#if(CXSC_INDEX_CHECK)
3188 INLINE imatrix &operator |=(imatrix &m1,
const imatrix &m2)
3189#if(CXSC_INDEX_CHECK)
3195 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)
3210 INLINE imatrix operator &(
const imatrix &m,
const imatrix_slice &ms)
3211#if(CXSC_INDEX_CHECK)
3217 INLINE imatrix operator &(
const imatrix_slice &ms,
const imatrix &m)
3218#if(CXSC_INDEX_CHECK)
3224 INLINE imatrix operator &(
const imatrix_slice &m1,
const imatrix_slice &m2)
3225#if(CXSC_INDEX_CHECK)
3231 INLINE imatrix &operator &=(imatrix &m1,
const imatrix &m2)
3232#if(CXSC_INDEX_CHECK)
3238 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)
3254 INLINE imatrix operator +(
const imatrix &m1,
const rmatrix &m2)
3255#if(CXSC_INDEX_CHECK)
3261 INLINE imatrix operator +(
const rmatrix &m,
const imatrix_slice &ms)
3262#if(CXSC_INDEX_CHECK)
3268 INLINE imatrix operator +(
const imatrix &m,
const rmatrix_slice &ms)
3269#if(CXSC_INDEX_CHECK)
3275 INLINE imatrix operator +(
const rmatrix_slice &ms,
const imatrix &m)
3276#if(CXSC_INDEX_CHECK)
3282 INLINE imatrix operator +(
const imatrix_slice &ms,
const rmatrix &m)
3283#if(CXSC_INDEX_CHECK)
3289 INLINE imatrix operator +(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3290#if(CXSC_INDEX_CHECK)
3296 INLINE imatrix operator +(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3297#if(CXSC_INDEX_CHECK)
3303 INLINE imatrix &
operator +=(imatrix &m1,
const rmatrix &m2)
3304#if(CXSC_INDEX_CHECK)
3310 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)
3325 INLINE imatrix operator -(
const imatrix &m1,
const rmatrix &m2)
3326#if(CXSC_INDEX_CHECK)
3332 INLINE imatrix operator -(
const rmatrix &m,
const imatrix_slice &ms)
3333#if(CXSC_INDEX_CHECK)
3339 INLINE imatrix operator -(
const imatrix &m,
const rmatrix_slice &ms)
3340#if(CXSC_INDEX_CHECK)
3346 INLINE imatrix operator -(
const rmatrix_slice &ms,
const imatrix &m)
3347#if(CXSC_INDEX_CHECK)
3353 INLINE imatrix operator -(
const imatrix_slice &ms,
const rmatrix &m)
3354#if(CXSC_INDEX_CHECK)
3360 INLINE imatrix operator -(
const rmatrix_slice &ms1,
const imatrix_slice &ms2)
3361#if(CXSC_INDEX_CHECK)
3367 INLINE imatrix operator -(
const imatrix_slice &ms1,
const rmatrix_slice &ms2)
3368#if(CXSC_INDEX_CHECK)
3374 INLINE imatrix &operator -=(imatrix &m1,
const rmatrix &m2)
3375#if(CXSC_INDEX_CHECK)
3381 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)
3396 INLINE imatrix
operator *(
const imatrix &m1,
const rmatrix &m2)
3397#if(CXSC_INDEX_CHECK)
3403 INLINE imatrix
operator *(
const rmatrix &m1,
const imatrix_slice &ms)
3404#if(CXSC_INDEX_CHECK)
3410 INLINE imatrix
operator *(
const imatrix &m1,
const rmatrix_slice &ms)
3411#if(CXSC_INDEX_CHECK)
3417 INLINE imatrix
operator *(
const rmatrix_slice &ms,
const imatrix &m1)
3418#if(CXSC_INDEX_CHECK)
3424 INLINE imatrix
operator *(
const imatrix_slice &ms,
const rmatrix &m1)
3425#if(CXSC_INDEX_CHECK)
3431 INLINE imatrix
operator *(
const rmatrix_slice &ms1,
const imatrix_slice &ms2)
3432#if(CXSC_INDEX_CHECK)
3438 INLINE imatrix
operator *(
const imatrix_slice &ms1,
const rmatrix_slice &ms2)
3439#if(CXSC_INDEX_CHECK)
3445 INLINE imatrix &
operator *=(imatrix &m1,
const rmatrix &m2)
3446#if(CXSC_INDEX_CHECK)
3452 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)
3467 INLINE imatrix operator |(
const imatrix &m1,
const rmatrix &m2)
3468#if(CXSC_INDEX_CHECK)
3474 INLINE imatrix operator |(
const rmatrix &m,
const imatrix_slice &ms)
3475#if(CXSC_INDEX_CHECK)
3481 INLINE imatrix operator |(
const imatrix &m,
const rmatrix_slice &ms)
3482#if(CXSC_INDEX_CHECK)
3488 INLINE imatrix operator |(
const rmatrix_slice &ms,
const imatrix &m)
3489#if(CXSC_INDEX_CHECK)
3495 INLINE imatrix operator |(
const imatrix_slice &ms,
const rmatrix &m)
3496#if(CXSC_INDEX_CHECK)
3502 INLINE imatrix operator |(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3503#if(CXSC_INDEX_CHECK)
3509 INLINE imatrix operator |(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3510#if(CXSC_INDEX_CHECK)
3516 INLINE imatrix &operator |=(imatrix &m1,
const rmatrix &m2)
3517#if(CXSC_INDEX_CHECK)
3523 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)
3538 INLINE imatrix operator &(
const imatrix &m1,
const rmatrix &m2)
3539#if(CXSC_INDEX_CHECK)
3545 INLINE imatrix operator &(
const rmatrix &m,
const imatrix_slice &ms)
3546#if(CXSC_INDEX_CHECK)
3552 INLINE imatrix operator &(
const imatrix &m,
const rmatrix_slice &ms)
3553#if(CXSC_INDEX_CHECK)
3559 INLINE imatrix operator &(
const rmatrix_slice &ms,
const imatrix &m)
3560#if(CXSC_INDEX_CHECK)
3566 INLINE imatrix operator &(
const imatrix_slice &ms,
const rmatrix &m)
3567#if(CXSC_INDEX_CHECK)
3573 INLINE imatrix operator &(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3574#if(CXSC_INDEX_CHECK)
3580 INLINE imatrix operator &(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3581#if(CXSC_INDEX_CHECK)
3587 INLINE imatrix &operator &=(imatrix &m1,
const rmatrix &m2)
3588#if(CXSC_INDEX_CHECK)
3594 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)
3611 INLINE imatrix operator |(
const rmatrix &m,
const rmatrix_slice &ms)
3612#if(CXSC_INDEX_CHECK)
3618 INLINE imatrix operator |(
const rmatrix_slice &ms,
const rmatrix &m)
3619#if(CXSC_INDEX_CHECK)
3625 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"
3770#define _CXSC_BLAS_IMATRIX
3771#include "cxsc_blas.inl"
The Data Type imatrix_slice.
imatrix_subv operator[](const int &i) noexcept
Operator for accessing a single row of the matrix.
imatrix_slice & operator+=(const imatrix &m1) noexcept
Implementation of addition and allocation operation.
imatrix_slice(imatrix_slice &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class imatrix_slice.
imatrix_slice & operator=(const imatrix &m) noexcept
Implementation of standard assigning operator.
imatrix_slice & operator/=(const interval &c) noexcept
Implementation of division and allocation operation.
imatrix_slice & operator|=(const imatrix &m1) noexcept
Allocates the convex hull of the arguments to the first argument.
imatrix_slice & operator()() noexcept
Operator for accessing the whole matrix.
imatrix_slice & operator&=(const imatrix &m1) noexcept
Allocates the intersection of the arguments to the first argument.
imatrix_slice(const imatrix_slice &ms) noexcept
Constructor of class imatrix_slice.
imatrix_slice & operator-=(const imatrix &m1) noexcept
Implementation of subtraction and allocation operation.
imatrix_slice & operator*=(const imatrix &m) noexcept
Implementation of multiplication and allocation operation.
imatrix_slice(imatrix &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class imatrix_slice.
The Data Type imatrix_subv.
interval & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector (read-only)
friend imatrix_subv Row(imatrix &m, const int &i) noexcept
Returns one row of the matrix as a vector.
friend int Lb(const imatrix_subv &rv) noexcept
Returns the lower bound of the vector.
imatrix_subv(const imatrix_subv &v) noexcept
Constructor of class imatrix_subv.
imatrix_subv & operator*=(const interval &c) noexcept
Implementation of multiplication and allocation operation.
friend int Ub(const imatrix_subv &rv) noexcept
Returns the upper bound of the vector.
friend int VecLen(const imatrix_subv &rv) noexcept
Returns the size of the vector.
imatrix_subv(interval *d, const int &l, const int &u, const int &s, const int &st, const int &o) noexcept
Constructor of class imatrix_subv.
imatrix_subv & operator/=(const interval &c) noexcept
Implementation of division and allocation operation.
imatrix_subv & operator()() noexcept
Operator for accessing the whole vector.
imatrix_subv & operator|=(const sivector &rv)
Implementation of addition and allocation operation.
imatrix_subv & operator+=(const interval &c) noexcept
Implementation of addition and allocation operation.
imatrix_subv & operator-=(const interval &c) noexcept
Implementation of subtraction and allocation operation.
imatrix_subv & operator&=(const sivector &rv)
Implementation of subtraction and allocation operation.
friend imatrix_subv Col(imatrix &m, const int &i) noexcept
Returns one column of the matrix as a vector.
imatrix_subv & operator=(const simatrix_subv &rv)
Implementation of standard assigning operator.
imatrix & operator+=(const simatrix &)
Implementation of addition and assignment operator.
imatrix & operator=(const interval &r) noexcept
Implementation of standard assigning operator.
imatrix() noexcept
Constructor of class imatrix.
imatrix_subv operator[](const int &i) const noexcept
Operator for accessing a single row of the matrix.
imatrix & operator&=(const simatrix &)
Implementation of intersection and assignment operator.
imatrix & operator-=(const simatrix &)
Implementation of substraction and assignment operator.
imatrix & operator*=(const simatrix &)
Implementation of product and assignment operator.
imatrix & operator|=(const simatrix &)
Implementation of convex hull and assignment operator.
imatrix & operator()() noexcept
Operator for accessing the whole matrix.
The Scalar Type interval.
The Data Type ivector_slice.
ivector() noexcept
Constructor of class ivector.
The Multiple-Precision Data Type l_imatrix.
The Multiple-Precision Data Type l_ivector.
The Data Type rmatrix_slice.
The Data Type rmatrix_subv.
The Data Type rvector_slice.
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.
real MaxRelDiam(const imatrix_subv &v)
Computes the relative diameter .
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.
rvector absmax(const imatrix_subv &mv) noexcept
Returns the absolute maximum value 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.
rvector absmin(const imatrix_subv &mv) noexcept
Returns the absolute minimum value of the matrix.
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.