26#ifndef _CXSC_INTMATRIX_HPP_INCLUDED
27#define _CXSC_INTMATRIX_HPP_INCLUDED
29#include "xscclass.hpp"
32#include "intvector.hpp"
53 int size,start,offset;
84#ifdef _CXSC_FRIEND_TPL
86template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
92template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r)
noexcept;
93template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
99template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
noexcept;
100template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
noexcept;
101template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
107template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
113 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
noexcept;
114 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
120 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
126 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
132 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
138 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
144 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
noexcept;
145template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r)
noexcept;
146template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r)
noexcept;
147template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r)
noexcept;
148template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r)
noexcept;
149template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
155template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
161template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
167template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
179 explicit INLINE
intmatrix_subv (
int *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) { }
291INLINE intmatrix_subv
Row(intmatrix &m,
const int &i)
298INLINE intmatrix_subv
Col(intmatrix &m,
const int &i)
308class intmatrix_slice;
319 int lb1,ub1,lb2,ub2,xsize,ysize;
323#ifdef _CXSC_FRIEND_TPL
325template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
331template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
337 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms)
noexcept;
338 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
noexcept;
339 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
345 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r)
noexcept;
346template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
352template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
noexcept;
353 template <
class M>
friend int _mlb(
const M &m,
const int &i)
359 template <
class M>
friend int _mub(
const M &m,
const int &i)
365 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
371 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
377 template <
class M>
friend void _mresize(M &A)
noexcept;
378 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
384 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
390 template <
class M,
class E>
friend E _mabs(
const M &m)
noexcept;
391 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
noexcept;
393 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
399 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
405 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
411 template <
class M>
friend M _mminus(
const M &m)
noexcept;
412 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
noexcept;
413 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
419 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
425 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
431 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
437 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
443 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
449 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
455 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
461 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
467 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
474 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m)
noexcept;
475 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c)
noexcept;
476 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
noexcept;
477 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c)
noexcept;
478 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c)
noexcept;
479 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
noexcept;
482 template <
class M>
friend void *_mvoid(
const M &m)
noexcept;
483 template <
class M>
friend bool _mnot(
const M &m)
noexcept;
484 template <
class MS>
friend void *_msvoid(
const MS &ms)
noexcept;
485 template <
class MS>
friend bool _msnot(
const MS &ms)
noexcept;
486 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2)
noexcept;
487 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2)
noexcept;
488 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2)
noexcept;
489 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2)
noexcept;
490 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
noexcept;
491 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
noexcept;
492 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
noexcept;
493 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
noexcept;
494 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
noexcept;
495 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
noexcept;
496 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r)
noexcept;
497 template <
class M>
friend std::istream &_min(std::istream &s,M &r)
noexcept;
510 explicit INLINE
intmatrix(
const int &m,
const int &n)
517 explicit INLINE
intmatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
528 explicit INLINE
intmatrix(
const int &r)
noexcept;
542 INLINE
~intmatrix()
noexcept {
delete [] dat; }
582 INLINE
operator void*()
noexcept;
598 int offset1,offset2,mxsize,mysize;
599 int start1,end1,start2,end2,sxsize,sysize;
603#ifdef _CXSC_FRIEND_TPL
605template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
611 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
617 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
623 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
noexcept;
624 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r)
noexcept;
625 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
631 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
637 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
noexcept;
639 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
noexcept;
640 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
646 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
652 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
658 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
664 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
670 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
676 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
682 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
688 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
694 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
700 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
707 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
noexcept;
708 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c)
noexcept;
709 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
noexcept;
710 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c)
noexcept;
712 template <
class MS>
friend void *_msvoid(
const MS &ms)
noexcept;
713 template <
class MS>
friend bool _msnot(
const MS &ms)
noexcept;
714 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
noexcept;
715 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
noexcept;
716 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
noexcept;
717 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
noexcept;
718 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
noexcept;
719 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
noexcept;
720 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
721 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
722 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
723 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2)
noexcept;
724 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r)
noexcept;
725 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r)
noexcept;
733 explicit INLINE
intmatrix_slice(
intmatrix &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) { }
735 explicit INLINE
intmatrix_slice(
intmatrix_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) { }
738 INLINE
intmatrix_slice(
const intmatrix_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) { }
849 INLINE
operator void*()
noexcept;
860 INLINE intvector
operator /(
const intmatrix_subv &rv,
const int &s)
noexcept;
862 INLINE intvector
operator *(
const intmatrix_subv &rv,
const int &s)
noexcept;
864 INLINE intvector
operator *(
const int &s,
const intmatrix_subv &rv)
noexcept;
866 INLINE intvector
abs(
const intmatrix_subv &mv)
noexcept;
871 INLINE
void accumulate(dotprecision &dp,
const intmatrix_subv & rv1,
const intmatrix_subv &rv2)
878 INLINE
void accumulate(dotprecision &dp,
const intvector & rv1,
const intmatrix_subv &rv2)
885 INLINE
void accumulate(dotprecision &dp,
const intmatrix_subv & rv1,
const intvector &rv2)
892 INLINE
void accumulate(dotprecision &dp,
const intvector_slice &sl,
const intmatrix_subv &sv)
899 INLINE
void accumulate(dotprecision &dp,
const intmatrix_subv &mv,
const intvector_slice &vs)
907 INLINE intvector operator +(
const intmatrix_subv & rv1,
const intmatrix_subv &rv2)
914 INLINE intvector operator +(
const intmatrix_subv &rv1,
const intvector &rv2)
921 INLINE intvector operator +(
const intvector & rv1,
const intmatrix_subv &rv2)
928 INLINE intvector operator +(
const intvector_slice &sl,
const intmatrix_subv &mv)
935 INLINE intvector operator +(
const intmatrix_subv &mv,
const intvector_slice &sl)
943 INLINE intvector operator -(
const intmatrix_subv & rv1,
const intmatrix_subv &rv2)
950 INLINE intvector operator -(
const intvector & rv1,
const intmatrix_subv &rv2)
957 INLINE intvector operator -(
const intmatrix_subv &rv1,
const intvector &rv2)
964 INLINE intvector operator -(
const intvector_slice &sl,
const intmatrix_subv &mv)
971 INLINE intvector operator -(
const intmatrix_subv &mv,
const intvector_slice &sl)
982 INLINE intmatrix
_intmatrix(
const intmatrix &rm)
noexcept;
984 INLINE intmatrix
_intmatrix(
const intvector &v)
noexcept;
986 INLINE intmatrix
_intmatrix(
const intvector_slice &v)
noexcept;
988 INLINE intmatrix
_intmatrix(
const int &r)
noexcept;
991 INLINE
int Lb(
const intmatrix &rm,
const int &i)
998 INLINE
int Ub(
const intmatrix &rm,
const int &i)
1005 INLINE
int Lb(
const intmatrix_slice &rm,
const int &i)
1006#if(CXSC_INDEX_CHECK)
1012 INLINE
int Ub(
const intmatrix_slice &rm,
const int &i)
1013#if(CXSC_INDEX_CHECK)
1019 INLINE intmatrix &
SetLb(intmatrix &m,
const int &i,
const int &j)
1020#if(CXSC_INDEX_CHECK)
1026 INLINE intmatrix &
SetUb(intmatrix &m,
const int &i,
const int &j)
1027#if(CXSC_INDEX_CHECK)
1033 INLINE
void Resize(intmatrix &A)
noexcept;
1035 INLINE
void Resize(intmatrix &A,
const int &m,
const int &n)
1036#if(CXSC_INDEX_CHECK)
1042 INLINE
void Resize(intmatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
1043#if(CXSC_INDEX_CHECK)
1050 INLINE intmatrix
abs(
const intmatrix &m)
noexcept;
1052 INLINE intmatrix
abs(
const intmatrix_slice &ms)
noexcept;
1057 INLINE intmatrix
operator *(
const int &c,
const intmatrix &m)
noexcept;
1059 INLINE intmatrix
operator *(
const int &c,
const intmatrix_slice &ms)
noexcept;
1061 INLINE intmatrix
operator *(
const intmatrix &m,
const int &c)
noexcept;
1063 INLINE intmatrix
operator *(
const intmatrix_slice &ms,
const int &c)
noexcept;
1065 INLINE intmatrix &
operator *=(intmatrix &m,
const int &c)
noexcept;
1067 INLINE intmatrix
operator /(
const intmatrix &m,
const int &c)
noexcept;
1069 INLINE intmatrix
operator /(
const intmatrix_slice &ms,
const int &c)
noexcept;
1071 INLINE intmatrix &
operator /=(intmatrix &m,
const int &c)
noexcept;
1077 INLINE
const intmatrix &operator +(
const intmatrix &m1)
noexcept;
1079 INLINE intmatrix operator +(
const intmatrix_slice &ms)
noexcept;
1081 INLINE intmatrix operator +(
const intmatrix &m1,
const intmatrix &m2)
1082#if(CXSC_INDEX_CHECK)
1088 INLINE intmatrix operator +(
const intmatrix &m,
const intmatrix_slice &ms)
1089#if(CXSC_INDEX_CHECK)
1095 INLINE intmatrix operator +(
const intmatrix_slice &ms,
const intmatrix &m)
1096#if(CXSC_INDEX_CHECK)
1102 INLINE intmatrix operator +(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
1103#if(CXSC_INDEX_CHECK)
1109 INLINE intmatrix &
operator +=(intmatrix &m1,
const intmatrix &m2)
1110#if(CXSC_INDEX_CHECK)
1116 INLINE intmatrix &
operator +=(intmatrix &m1,
const intmatrix_slice &ms)
1117#if(CXSC_INDEX_CHECK)
1124 INLINE intmatrix operator -(
const intmatrix &m)
noexcept;
1126 INLINE intmatrix operator -(
const intmatrix_slice &ms)
noexcept;
1128 INLINE intmatrix operator -(
const intmatrix &m1,
const intmatrix &m2)
1129#if(CXSC_INDEX_CHECK)
1135 INLINE intmatrix operator -(
const intmatrix &m,
const intmatrix_slice &ms)
1136#if(CXSC_INDEX_CHECK)
1142 INLINE intmatrix operator -(
const intmatrix_slice &ms,
const intmatrix &m)
1143#if(CXSC_INDEX_CHECK)
1149 INLINE intmatrix operator -(
const intmatrix_slice &ms1,
const intmatrix_slice &ms2)
1150#if(CXSC_INDEX_CHECK)
1156 INLINE intmatrix &operator -=(intmatrix &m1,
const intmatrix &m2)
1157#if(CXSC_INDEX_CHECK)
1163 INLINE intmatrix &operator -=(intmatrix &m1,
const intmatrix_slice &ms)
1164#if(CXSC_INDEX_CHECK)
1176 INLINE
bool operator ==(
const intmatrix &m1,
const intmatrix &m2)
noexcept;
1178 INLINE
bool operator !=(
const intmatrix &m1,
const intmatrix &m2)
noexcept;
1180 INLINE
bool operator <(
const intmatrix &m1,
const intmatrix &m2)
noexcept;
1182 INLINE
bool operator <=(
const intmatrix &m1,
const intmatrix &m2)
noexcept;
1184 INLINE
bool operator >(
const intmatrix &m1,
const intmatrix &m2)
noexcept;
1186 INLINE
bool operator >=(
const intmatrix &m1,
const intmatrix &m2)
noexcept;
1188 INLINE
bool operator ==(
const intmatrix &m1,
const intmatrix_slice &ms)
noexcept;
1190 INLINE
bool operator !=(
const intmatrix &m1,
const intmatrix_slice &ms)
noexcept;
1192 INLINE
bool operator <(
const intmatrix &m1,
const intmatrix_slice &ms)
noexcept;
1194 INLINE
bool operator <=(
const intmatrix &m1,
const intmatrix_slice &ms)
noexcept;
1196 INLINE
bool operator >(
const intmatrix &m1,
const intmatrix_slice &ms)
noexcept;
1198 INLINE
bool operator >=(
const intmatrix &m1,
const intmatrix_slice &ms)
noexcept;
1203 INLINE
bool operator ==(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
noexcept;
1205 INLINE
bool operator !=(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
noexcept;
1207 INLINE
bool operator <(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
noexcept;
1209 INLINE
bool operator <=(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
noexcept;
1211 INLINE
bool operator >(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
noexcept;
1213 INLINE
bool operator >=(
const intmatrix_slice &m1,
const intmatrix_slice &m2)
noexcept;
1218 INLINE
bool operator !(
const intmatrix &ms)
noexcept;
1220 INLINE
bool operator !(
const intmatrix_slice &ms)
noexcept;
1225 INLINE std::ostream &operator <<(std::ostream &s,
const intmatrix &r)
noexcept;
1227 INLINE std::ostream &operator <<(std::ostream &s,
const intmatrix_slice &r)
noexcept;
1229 INLINE std::istream &operator >>(std::istream &s,intmatrix &r)
noexcept;
1231 INLINE std::istream &operator >>(std::istream &s,intmatrix_slice &r)
noexcept;
1234 INLINE
int RowLen (
const intmatrix& );
1236 INLINE
int ColLen (
const intmatrix& );
1239 INLINE
int RowLen (
const intmatrix_slice& );
1241 INLINE
int ColLen (
const intmatrix_slice& );
1243 intmatrix
Id (
const intmatrix& );
1245 intmatrix
transp (
const intmatrix& );
1251 INLINE intvector permvec(
const intmatrix&);
1252 INLINE intmatrix permmat(
const intvector&);
1253 INLINE intmatrix perminv(
const intmatrix&);
1257#ifdef _CXSC_INCL_INL
1258# include "matrix.inl"
1259# include "intmatrix.inl"
The Data Type intmatrix_slice.
intmatrix_slice & operator-=(const intmatrix &m1) noexcept
Implementation of subtraction and allocation operation.
intmatrix_slice & operator=(const intmatrix &m) noexcept
Implementation of standard assigning operator.
intmatrix_slice & operator*=(const int &c) noexcept
Implementation of multiplication and allocation operation.
intmatrix_slice & operator+=(const intmatrix &m1) noexcept
Implementation of addition and allocation operation.
intmatrix_slice(intmatrix &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class intmatrix_slice.
intmatrix_slice(const intmatrix_slice &ms) noexcept
Constructor of class intmatrix_slice.
intmatrix_slice & operator/=(const int &c) noexcept
Implementation of division and allocation operation.
intmatrix_slice & operator()() noexcept
Operator for accessing the whole matrix.
intmatrix_slice(intmatrix_slice &a, const int &l1, const int &u1, const int &l2, const int &u2) noexcept
Constructor of class intmatrix_slice.
intmatrix_subv operator[](const int &i) noexcept
Operator for accessing a single row of the matrix.
The Data Type intmatrix_subv.
friend int Ub(const intmatrix_subv &rv) noexcept
Returns the upper bound of the vector.
int & operator[](const int &i) const noexcept
Operator for accessing the single elements of the vector.
intmatrix_subv & operator/=(const int &c) noexcept
Implementation of division and allocation operation.
intmatrix_subv & operator=(const intmatrix_subv &rv) noexcept
Implementation of standard assigning operator.
intmatrix_subv(const intmatrix_subv &v) noexcept
Constructor of class intmatrix_subv.
intmatrix_subv(int *d, const int &l, const int &u, const int &s, const int &st, const int &o) noexcept
Constructor of class intmatrix_subv.
friend int Lb(const intmatrix_subv &rv) noexcept
Returns the lower bound of the vector.
intmatrix_subv & operator+=(const int &c) noexcept
Implementation of addition and allocation operation.
friend intmatrix_subv Col(intmatrix &m, const int &i) noexcept
Returns one column of the matrix as a vector.
intmatrix_subv & operator()() noexcept
Operator for accessing the whole vector.
friend intmatrix_subv Row(intmatrix &m, const int &i) noexcept
Returns one row of the matrix as a vector.
intmatrix_subv & operator-=(const int &c) noexcept
Implementation of subtraction and allocation operation.
intmatrix_subv & operator*=(const int &c) noexcept
Implementation of multiplication and allocation operation.
intmatrix & operator()() noexcept
Operator for accessing the whole matrix.
intmatrix & operator=(const int &r) noexcept
Implementation of standard assigning operator.
intmatrix() noexcept
Constructor of class intmatrix.
intmatrix_subv operator[](const int &i) const noexcept
Operator for accessing a single row of the matrix.
The Data Type intvector_slice.
intvector() noexcept
Constructor of class intvector.
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.
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
cimatrix transp(const cimatrix &A)
Returns the transposed 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.
intmatrix _intmatrix(const intmatrix &rm) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
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 & 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.
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
void Resize(cimatrix &A) noexcept
Resizes the matrix.
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.