26 #ifndef _CXSC_IMATRIX_HPP_INCLUDED 27 #define _CXSC_IMATRIX_HPP_INCLUDED 29 #include "xscclass.hpp" 32 #include "ivector.hpp" 35 #include "rmatrix.hpp" 65 int size,start,offset;
71 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
78 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
85 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
92 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
98 #ifdef _CXSC_FRIEND_TPL 100 template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
101 #if(CXSC_INDEX_CHECK) 102 throw(ERROR__OP_WITH_WRONG_DIM<MV1>);
106 template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r)
throw();
107 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
108 #if(CXSC_INDEX_CHECK) 109 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
113 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
throw();
114 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
115 #if(CXSC_INDEX_CHECK) 116 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
120 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
121 #if(CXSC_INDEX_CHECK) 122 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
126 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
127 #if(CXSC_INDEX_CHECK) 128 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
132 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
133 #if(CXSC_INDEX_CHECK) 134 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
138 template <
class MV,
class S>
friend MV &_mvssetinf(MV &mv,
const S &s)
throw();
139 template <
class MV,
class S>
friend MV &_mvssetsup(MV &mv,
const S &s)
throw();
140 template <
class MV,
class S>
friend MV &_mvsusetinf(MV &mv,
const S &s)
throw();
141 template <
class MV,
class S>
friend MV &_mvsusetsup(MV &mv,
const S &s)
throw();
142 template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
throw();
143 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv)
throw();
144 template <
class MV,
class V>
friend V _mvmid(
const MV &mv)
throw();
145 template <
class MV,
class V>
friend V _mvinf(
const MV &mv)
throw();
146 template <
class MV,
class V>
friend V _mvsup(
const MV &mv)
throw();
147 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
148 #if(CXSC_INDEX_CHECK) 149 throw(OP_WITH_WRONG_DIM);
153 template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
154 #if(CXSC_INDEX_CHECK) 155 throw(OP_WITH_WRONG_DIM);
159 template <
class MV1,
class MV2,
class S>
friend S _mvmvimult(
const MV1 & rv1,
const MV2 &rv2)
160 #if(CXSC_INDEX_CHECK) 161 throw(ERROR__OP_WITH_WRONG_DIM<MV1>);
165 template <
class V,
class MV,
class S>
friend S _vmvimult(
const V &rv1,
const MV &rv2)
166 #if(CXSC_INDEX_CHECK) 167 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
171 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
throw();
172 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
173 #if(CXSC_INDEX_CHECK) 174 throw(ERROR__OP_WITH_WRONG_DIM<E>);
178 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
179 #if(CXSC_INDEX_CHECK) 180 throw(ERROR__OP_WITH_WRONG_DIM<E>);
184 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
185 #if(CXSC_INDEX_CHECK) 186 throw(ERROR__OP_WITH_WRONG_DIM<E>);
190 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
191 #if(CXSC_INDEX_CHECK) 192 throw(ERROR__OP_WITH_WRONG_DIM<E>);
196 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
197 #if(CXSC_INDEX_CHECK) 198 throw(ERROR__OP_WITH_WRONG_DIM<E>);
202 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
throw();
203 template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r)
throw();
204 template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r)
throw();
205 template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r)
throw();
206 template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r)
throw();
207 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
208 #if(CXSC_INDEX_CHECK) 209 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
213 template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
214 #if(CXSC_INDEX_CHECK) 215 throw(ERROR__OP_WITH_WRONG_DIM<V>);
219 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
220 #if(CXSC_INDEX_CHECK) 221 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
225 template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
226 #if(CXSC_INDEX_CHECK) 227 throw(ERROR__OP_WITH_WRONG_DIM<V>);
231 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
232 #if(CXSC_INDEX_CHECK) 233 throw(ERROR__OP_WITH_WRONG_DIM<E>);
237 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
238 #if(CXSC_INDEX_CHECK) 239 throw(ERROR__OP_WITH_WRONG_DIM<E>);
243 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
244 #if(CXSC_INDEX_CHECK) 245 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
249 template <
class MV1,
class MV2,
class E>
friend E _mvmvsect(
const MV1 &rv1,
const MV2 &rv2)
250 #if(CXSC_INDEX_CHECK) 251 throw(ERROR__OP_WITH_WRONG_DIM<E>);
255 template <
class MV,
class V,
class E>
friend E _mvvsect(
const MV &rv1,
const V &rv2)
256 #if(CXSC_INDEX_CHECK) 257 throw(ERROR__OP_WITH_WRONG_DIM<E>);
261 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
262 #if(CXSC_INDEX_CHECK) 263 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
267 template <
class V,
class MV>
friend V &_vmvsectassign(V &rv,
const MV &v)
268 #if(CXSC_INDEX_CHECK) 269 throw(ERROR__OP_WITH_WRONG_DIM<V>);
275 template <
class V,
class MV>
friend V &_vmvsetim(V &rv,
const MV &v)
276 #if(CXSC_INDEX_CHECK) 277 throw(ERROR__OP_WITH_WRONG_DIM<V>);
281 template <
class V,
class MV>
friend V &_vmvsetre(V &rv,
const MV &v)
282 #if(CXSC_INDEX_CHECK) 283 throw(ERROR__OP_WITH_WRONG_DIM<V>);
306 explicit INLINE
imatrix_subv (
interval *d,
const int &l,
const int &u,
const int &s,
const int &st,
const int &o)
throw():dat(d),lb(l),ub(u),size(s),start(st),offset(o) { }
333 #if(CXSC_INDEX_CHECK) 334 throw(ERROR_IMATRIX_TYPE_CAST_OF_THICK_OBJ);
340 #if(CXSC_INDEX_CHECK) 341 throw(ERROR_IMATRIX_TYPE_CAST_OF_THICK_OBJ);
347 #if(CXSC_INDEX_CHECK) 348 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
354 #if(CXSC_INDEX_CHECK) 355 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
366 #if(CXSC_INDEX_CHECK) 367 throw(ERROR_IMATRIX_TYPE_CAST_OF_THICK_OBJ);
373 #if(CXSC_INDEX_CHECK) 374 throw(ERROR_IMATRIX_TYPE_CAST_OF_THICK_OBJ);
380 #if(CXSC_INDEX_CHECK) 381 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
387 #if(CXSC_INDEX_CHECK) 388 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
402 #if(CXSC_INDEX_CHECK) 403 throw(ERROR_IVECTOR_ELEMENT_NOT_IN_VEC);
410 #if(CXSC_INDEX_CHECK) 411 throw(ERROR_IVECTOR_ELEMENT_NOT_IN_VEC);
420 #if(CXSC_INDEX_CHECK) 421 throw(ERROR_IVECTOR_SUB_ARRAY_TOO_BIG);
427 #if(CXSC_INDEX_CHECK) 428 throw(ERROR_IVECTOR_SUB_ARRAY_TOO_BIG);
496 #if(CXSC_INDEX_CHECK) 497 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
503 #if(CXSC_INDEX_CHECK) 504 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
510 #if(CXSC_INDEX_CHECK) 511 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
517 #if(CXSC_INDEX_CHECK) 518 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
524 #if(CXSC_INDEX_CHECK) 525 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
531 #if(CXSC_INDEX_CHECK) 532 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
538 #if(CXSC_INDEX_CHECK) 539 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
545 #if(CXSC_INDEX_CHECK) 546 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
562 #if(CXSC_INDEX_CHECK) 563 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
569 #if(CXSC_INDEX_CHECK) 570 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
576 #if(CXSC_INDEX_CHECK) 577 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
583 #if(CXSC_INDEX_CHECK) 584 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
590 #if(CXSC_INDEX_CHECK) 591 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
597 #if(CXSC_INDEX_CHECK) 598 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
604 #if(CXSC_INDEX_CHECK) 605 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
611 #if(CXSC_INDEX_CHECK) 612 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
624 #if(CXSC_INDEX_CHECK) 625 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
631 #if(CXSC_INDEX_CHECK) 632 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
638 #if(CXSC_INDEX_CHECK) 639 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
645 #if(CXSC_INDEX_CHECK) 646 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
667 int lb1,ub1,lb2,ub2,xsize,ysize;
671 #ifdef _CXSC_FRIEND_TPL 673 template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
674 #if(CXSC_INDEX_CHECK) 675 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>,ERROR__USE_OF_UNINITIALIZED_OBJ<M>);
679 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
680 #if(CXSC_INDEX_CHECK) 681 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
685 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms)
throw();
686 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
throw();
687 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
688 #if(CXSC_INDEX_CHECK) 689 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
693 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r)
throw();
694 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
695 #if(CXSC_INDEX_CHECK) 696 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
700 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
throw();
701 template <
class M>
friend int _mlb(
const M &m,
const int &i)
702 #if(CXSC_INDEX_CHECK) 703 throw(ERROR__WRONG_ROW_OR_COL<M>);
707 template <
class M>
friend int _mub(
const M &m,
const int &i)
708 #if(CXSC_INDEX_CHECK) 709 throw(ERROR__WRONG_ROW_OR_COL<M>);
713 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
714 #if(CXSC_INDEX_CHECK) 715 throw(ERROR__WRONG_ROW_OR_COL<M>);
719 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
720 #if(CXSC_INDEX_CHECK) 721 throw(ERROR__WRONG_ROW_OR_COL<M>);
725 template <
class M>
friend void _mresize(M &A)
throw();
726 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
727 #if(CXSC_INDEX_CHECK) 728 throw(ERROR__WRONG_BOUNDARIES<M>);
732 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
733 #if(CXSC_INDEX_CHECK) 734 throw(ERROR__WRONG_BOUNDARIES<M>);
738 template <
class M,
class E>
friend E _mabs(
const M &m)
throw();
739 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
throw();
740 template <
class M,
class E>
friend E _mdiam(
const M &m)
throw();
741 template <
class M,
class E>
friend E _mmid(
const M &m)
throw();
742 template <
class M,
class E>
friend E _minf(
const M &m)
throw();
743 template <
class M,
class E>
friend E _msup(
const M &m)
throw();
744 template <
class M1,
class M2>
friend M1 &_mmsetinf(M1 &m1,
const M2 &m2)
745 #if(CXSC_INDEX_CHECK) 746 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
750 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
751 #if(CXSC_INDEX_CHECK) 752 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
756 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
757 #if(CXSC_INDEX_CHECK) 758 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
762 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
763 #if(CXSC_INDEX_CHECK) 764 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
768 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
769 #if(CXSC_INDEX_CHECK) 770 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
774 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
775 #if(CXSC_INDEX_CHECK) 776 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
780 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
781 #if(CXSC_INDEX_CHECK) 782 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
786 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
787 #if(CXSC_INDEX_CHECK) 788 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
793 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
794 #if(CXSC_INDEX_CHECK) 795 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
799 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
800 #if(CXSC_INDEX_CHECK) 801 throw(ERROR__OP_WITH_WRONG_DIM<M>);
805 template <
class M>
friend M _mminus(
const M &m)
throw();
806 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
throw();
807 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
808 #if(CXSC_INDEX_CHECK) 809 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
813 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
814 #if(CXSC_INDEX_CHECK) 815 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
819 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
820 #if(CXSC_INDEX_CHECK) 821 throw(ERROR__OP_WITH_WRONG_DIM<M>);
825 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
826 #if(CXSC_INDEX_CHECK) 827 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
831 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
832 #if(CXSC_INDEX_CHECK) 833 throw(ERROR__OP_WITH_WRONG_DIM<E>);
837 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
838 #if(CXSC_INDEX_CHECK) 839 throw(ERROR__OP_WITH_WRONG_DIM<E>);
843 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
844 #if(CXSC_INDEX_CHECK) 845 throw(ERROR__OP_WITH_WRONG_DIM<E>);
849 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
850 #if(CXSC_INDEX_CHECK) 851 throw(ERROR__OP_WITH_WRONG_DIM<E>);
855 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
856 #if(CXSC_INDEX_CHECK) 857 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
861 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
862 #if(CXSC_INDEX_CHECK) 863 throw(ERROR__OP_WITH_WRONG_DIM<M>);
867 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
868 #if(CXSC_INDEX_CHECK) 869 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
873 template <
class M1,
class M2,
class E>
friend E _mmimult(
const M1 &m1,
const M2 &m2)
874 #if(CXSC_INDEX_CHECK) 875 throw(ERROR__OP_WITH_WRONG_DIM<E>);
879 template <
class M1,
class M2,
class S>
friend M1 &_mmimultassign(M1 &m1,
const M2 &m2)
880 #if(CXSC_INDEX_CHECK) 881 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
885 template <
class M,
class MS,
class E>
friend E _mmsimult(
const M &m1,
const MS &ms)
886 #if(CXSC_INDEX_CHECK) 887 throw(ERROR__OP_WITH_WRONG_DIM<E>);
891 template <
class MS,
class M,
class E>
friend E _msmimult(
const MS &ms,
const M &m2)
892 #if(CXSC_INDEX_CHECK) 893 throw(ERROR__OP_WITH_WRONG_DIM<E>);
897 template <
class M,
class MS,
class S>
friend M &_mmsimultassign(M &m1,
const MS &ms)
898 #if(CXSC_INDEX_CHECK) 899 throw(ERROR__OP_WITH_WRONG_DIM<M>);
903 template <
class MS1,
class MS2,
class E>
friend E _msmsimult(
const MS1 &ms1,
const MS2 &ms2)
904 #if(CXSC_INDEX_CHECK) 905 throw(ERROR__OP_WITH_WRONG_DIM<E>);
909 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
910 #if(CXSC_INDEX_CHECK) 911 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
915 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
916 #if(CXSC_INDEX_CHECK) 917 throw(ERROR__OP_WITH_WRONG_DIM<M>);
921 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
922 #if(CXSC_INDEX_CHECK) 923 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
927 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
928 #if(CXSC_INDEX_CHECK) 929 throw(ERROR__OP_WITH_WRONG_DIM<M>);
933 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
934 #if(CXSC_INDEX_CHECK) 935 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
939 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
940 #if(CXSC_INDEX_CHECK) 941 throw(ERROR__OP_WITH_WRONG_DIM<E>);
945 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
946 #if(CXSC_INDEX_CHECK) 947 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
951 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
952 #if(CXSC_INDEX_CHECK) 953 throw(ERROR__OP_WITH_WRONG_DIM<M>);
957 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
958 #if(CXSC_INDEX_CHECK) 959 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
963 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
964 #if(CXSC_INDEX_CHECK) 965 throw(ERROR__OP_WITH_WRONG_DIM<M>);
969 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
970 #if(CXSC_INDEX_CHECK) 971 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
975 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
976 #if(CXSC_INDEX_CHECK) 977 throw(ERROR__OP_WITH_WRONG_DIM<E>);
982 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m)
throw();
983 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c)
throw();
984 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
throw();
985 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c)
throw();
986 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c)
throw();
987 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
throw();
989 template <
class M,
class V,
class E>
friend E _mvimult(
const M &m,
const V &v)
990 #if(CXSC_INDEX_CHECK) 991 throw(ERROR__OP_WITH_WRONG_DIM<M>);
995 template <
class V,
class M,
class E>
friend E _vmimult(
const V &v,
const M &m)
996 #if(CXSC_INDEX_CHECK) 997 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1001 template <
class V,
class M,
class S>
friend V &_vmimultassign(V &v,
const M &m)
1002 #if(CXSC_INDEX_CHECK) 1003 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1007 template <
class VS,
class M,
class S>
friend VS &_vsmimultassign(VS &v,
const M &m)
1008 #if(CXSC_INDEX_CHECK) 1009 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1014 template <
class M>
friend void *_mvoid(
const M &m)
throw();
1015 template <
class M>
friend bool _mnot(
const M &m)
throw();
1016 template <
class MS>
friend void *_msvoid(
const MS &ms)
throw();
1017 template <
class MS>
friend bool _msnot(
const MS &ms)
throw();
1018 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2)
throw();
1019 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2)
throw();
1020 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2)
throw();
1021 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2)
throw();
1022 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
throw();
1023 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
throw();
1024 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
throw();
1025 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
throw();
1026 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
throw();
1027 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
throw();
1028 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r)
throw();
1029 template <
class M>
friend std::istream &_min(std::istream &s,M &r)
throw();
1032 template <
class MS,
class V,
class E>
friend E _msvimult(
const MS &ms,
const V &v)
1033 #if(CXSC_INDEX_CHECK) 1034 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1038 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
1039 #if(CXSC_INDEX_CHECK) 1040 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1047 template <
class M1,
class M2,
class E>
friend E _mmcimult(
const M1 &m1,
const M2 &m2)
1048 #if(CXSC_INDEX_CHECK) 1049 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1053 template <
class M,
class MS,
class E>
friend E _mmscimult(
const M &m1,
const MS &ms)
1054 #if(CXSC_INDEX_CHECK) 1055 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1059 template <
class MS,
class M,
class E>
friend E _msmcimult(
const MS &ms,
const M &m2)
1060 #if(CXSC_INDEX_CHECK) 1061 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1065 template <
class MS1,
class MS2,
class E>
friend E _msmscimult(
const MS1 &ms1,
const MS2 &ms2)
1066 #if(CXSC_INDEX_CHECK) 1067 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1073 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
1074 #if(CXSC_INDEX_CHECK) 1075 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1079 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
1080 #if(CXSC_INDEX_CHECK) 1081 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1099 template <
class M,
class E>
friend E _mre(
const M &m)
throw();
1100 template <
class M,
class E>
friend E _mim(
const M &m)
throw();
1101 template <
class MS,
class E>
friend E _msre(
const MS &ms)
throw();
1102 template <
class MS,
class E>
friend E _msim(
const MS &ms)
throw();
1103 template <
class M1,
class M2>
friend M1 &_mmsetre(M1 &m1,
const M2 &m2)
1104 #if(CXSC_INDEX_CHECK) 1105 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1109 template <
class M1,
class M2>
friend M1 &_mmsetim(M1 &m1,
const M2 &m2)
1110 #if(CXSC_INDEX_CHECK) 1111 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1115 template <
class MS1,
class M2>
friend MS1 &_msmsetre(MS1 &ms1,
const M2 &m2)
1116 #if(CXSC_INDEX_CHECK) 1117 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1121 template <
class MS1,
class M2>
friend MS1 &_msmsetim(MS1 &ms1,
const M2 &m2)
1122 #if(CXSC_INDEX_CHECK) 1123 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1129 template <
class M1,
class M2,
class S>
friend M1 &_mmcimultassign(M1 &m1,
const M2 &m2)
1130 #if(CXSC_INDEX_CHECK) 1131 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1135 template <
class M,
class MS,
class S>
friend M &_mmscimultassign(M &m1,
const MS &ms)
1136 #if(CXSC_INDEX_CHECK) 1137 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1143 template <
class V,
class M,
class S>
friend V &_vmcimultassign(V &v,
const M &m)
1144 #if(CXSC_INDEX_CHECK) 1145 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1149 template <
class VS,
class M,
class S>
friend VS &_vsmcimultassign(VS &v,
const M &m)
1150 #if(CXSC_INDEX_CHECK) 1151 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1171 template <
class M1,
class M2,
class E>
friend E _mmlimult(
const M1 &m1,
const M2 &m2)
1172 #if(CXSC_INDEX_CHECK) 1173 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1177 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1178 #if(CXSC_INDEX_CHECK) 1179 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1183 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1184 #if(CXSC_INDEX_CHECK) 1185 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1189 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1190 #if(CXSC_INDEX_CHECK) 1191 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1197 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
1198 #if(CXSC_INDEX_CHECK) 1199 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1203 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
1204 #if(CXSC_INDEX_CHECK) 1205 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1223 template <
class M1,
class M2,
class S>
friend M1 &_mmlimultassign(M1 &m1,
const M2 &m2)
1224 #if(CXSC_INDEX_CHECK) 1225 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1229 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1230 #if(CXSC_INDEX_CHECK) 1231 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1237 template <
class V,
class M,
class S>
friend V &_vmlimultassign(V &v,
const M &m)
1238 #if(CXSC_INDEX_CHECK) 1239 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1243 template <
class VS,
class M,
class S>
friend VS &_vsmlimultassign(VS &v,
const M &m)
1244 #if(CXSC_INDEX_CHECK) 1245 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1277 INLINE imatrix()
throw();
1279 explicit INLINE imatrix(
const int &m,
const int &n)
1280 #if(CXSC_INDEX_CHECK) 1281 throw(ERROR_IMATRIX_WRONG_BOUNDARIES);
1285 explicit INLINE imatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
1287 #if(CXSC_INDEX_CHECK) 1288 throw(ERROR_IMATRIX_WRONG_BOUNDARIES);
1292 explicit INLINE imatrix(
const ivector &v)
throw();
1297 explicit INLINE imatrix(
const interval &r)
throw();
1301 INLINE imatrix &
operator =(
const imatrix &m)
throw();
1314 explicit INLINE imatrix(
const real &r)
throw();
1316 explicit INLINE imatrix(
const rmatrix &rm)
throw();
1320 explicit INLINE imatrix(
const srmatrix &rm);
1324 explicit INLINE imatrix(
const rvector &v)
throw();
1344 INLINE ~imatrix()
throw() {
delete [] dat; }
1402 #if(CXSC_INDEX_CHECK) 1403 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
1409 #if(CXSC_INDEX_CHECK) 1410 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
1414 INLINE imatrix &
operator ()()
throw() {
return *
this; }
1418 #if(CXSC_INDEX_CHECK) 1419 throw(ERROR_IMATRIX_SUB_ARRAY_TOO_BIG);
1425 #if(CXSC_INDEX_CHECK) 1426 throw(ERROR_IMATRIX_SUB_ARRAY_TOO_BIG);
1430 INLINE
operator void*()
throw();
1448 int offset1,offset2,mxsize,mysize;
1449 int start1,end1,start2,end2,sxsize,sysize;
1453 #ifdef _CXSC_FRIEND_TPL 1455 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
1456 #if(CXSC_INDEX_CHECK) 1457 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<MS>);
1461 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
1462 #if(CXSC_INDEX_CHECK) 1463 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1467 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
1468 #if(CXSC_INDEX_CHECK) 1469 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1473 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
throw();
1474 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r)
throw();
1475 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
1476 #if(CXSC_INDEX_CHECK) 1477 throw(ERROR__WRONG_ROW_OR_COL<MS>);
1481 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
1482 #if(CXSC_INDEX_CHECK) 1483 throw(ERROR__WRONG_ROW_OR_COL<MS>);
1487 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
throw();
1488 template <
class MS,
class E>
friend E _msdiam(
const MS &ms)
throw();
1489 template <
class MS,
class E>
friend E _msmid(
const MS &ms)
throw();
1490 template <
class MS,
class E>
friend E _msinf(
const MS &ms)
throw();
1491 template <
class MS,
class E>
friend E _mssup(
const MS &ms)
throw();
1492 template <
class MS1,
class M2>
friend MS1 &_msmsetinf(MS1 &ms1,
const M2 &m2)
1493 #if(CXSC_INDEX_CHECK) 1494 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1498 template <
class MS1,
class M2>
friend MS1 &_msmsetsup(MS1 &ms1,
const M2 &m2)
1499 #if(CXSC_INDEX_CHECK) 1500 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1504 template <
class MS1,
class MS2>
friend MS1 &_msmssetinf(MS1 &ms1,
const MS2 &ms2)
1505 #if(CXSC_INDEX_CHECK) 1506 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1510 template <
class MS1,
class MS2>
friend MS1 &_msmssetsup(MS1 &ms1,
const MS2 &ms2)
1511 #if(CXSC_INDEX_CHECK) 1512 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1516 template <
class MS1,
class M2>
friend MS1 &_msmusetinf(MS1 &ms1,
const M2 &m2)
1517 #if(CXSC_INDEX_CHECK) 1518 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1522 template <
class MS1,
class M2>
friend MS1 &_msmusetsup(MS1 &ms1,
const M2 &m2)
1523 #if(CXSC_INDEX_CHECK) 1524 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1528 template <
class MS1,
class MS2>
friend MS1 &_msmsusetinf(MS1 &ms1,
const MS2 &ms2)
1529 #if(CXSC_INDEX_CHECK) 1530 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1534 template <
class MS1,
class MS2>
friend MS1 &_msmsusetsup(MS1 &ms1,
const MS2 &ms2)
1535 #if(CXSC_INDEX_CHECK) 1536 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1541 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
throw();
1542 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1543 #if(CXSC_INDEX_CHECK) 1544 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1548 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1549 #if(CXSC_INDEX_CHECK) 1550 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1554 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1555 #if(CXSC_INDEX_CHECK) 1556 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1560 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1561 #if(CXSC_INDEX_CHECK) 1562 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1566 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
1567 #if(CXSC_INDEX_CHECK) 1568 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1572 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1573 #if(CXSC_INDEX_CHECK) 1574 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1578 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1579 #if(CXSC_INDEX_CHECK) 1580 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1584 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1585 #if(CXSC_INDEX_CHECK) 1586 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1590 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1591 #if(CXSC_INDEX_CHECK) 1592 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1596 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1597 #if(CXSC_INDEX_CHECK) 1598 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1602 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
1603 #if(CXSC_INDEX_CHECK) 1604 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1608 template <
class M,
class MS,
class E>
friend E _mmsimult(
const M &m1,
const MS &ms)
1609 #if(CXSC_INDEX_CHECK) 1610 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1614 template <
class MS,
class M,
class E>
friend E _msmimult(
const MS &ms,
const M &m2)
1615 #if(CXSC_INDEX_CHECK) 1616 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1620 template <
class M,
class MS,
class S>
friend M &_mmsimultassign(M &m1,
const MS &ms)
1621 #if(CXSC_INDEX_CHECK) 1622 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1626 template <
class MS1,
class MS2,
class E>
friend E _msmsimult(
const MS1 &ms1,
const MS2 &ms2)
1627 #if(CXSC_INDEX_CHECK) 1628 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1632 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1633 #if(CXSC_INDEX_CHECK) 1634 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1638 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1639 #if(CXSC_INDEX_CHECK) 1640 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1644 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
1645 #if(CXSC_INDEX_CHECK) 1646 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1650 template <
class MS1,
class MS2>
friend MS1 &_msmsconvassign(MS1 &ms1,
const MS2 &ms2)
1651 #if(CXSC_INDEX_CHECK) 1652 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1656 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1657 #if(CXSC_INDEX_CHECK) 1658 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1662 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1663 #if(CXSC_INDEX_CHECK) 1664 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1668 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1669 #if(CXSC_INDEX_CHECK) 1670 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1674 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
1675 #if(CXSC_INDEX_CHECK) 1676 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1680 template <
class MS1,
class MS2>
friend MS1 &_msmssectassign(MS1 &ms1,
const MS2 &ms2)
1681 #if(CXSC_INDEX_CHECK) 1682 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1686 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1687 #if(CXSC_INDEX_CHECK) 1688 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1693 template <
class MS,
class V,
class E>
friend E _msvimult(
const MS &ms,
const V &v)
1694 #if(CXSC_INDEX_CHECK) 1695 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1699 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
1700 #if(CXSC_INDEX_CHECK) 1701 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1705 template <
class V,
class MS,
class S>
friend V &_vmsimultassign(V &v,
const MS &ms)
1706 #if(CXSC_INDEX_CHECK) 1707 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1712 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
throw();
1713 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c)
throw();
1714 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
throw();
1715 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c)
throw();
1717 template <
class MS>
friend void *_msvoid(
const MS &ms)
throw();
1718 template <
class MS>
friend bool _msnot(
const MS &ms)
throw();
1719 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
throw();
1720 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
throw();
1721 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
throw();
1722 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
throw();
1723 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
throw();
1724 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
throw();
1725 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2)
throw();
1726 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2)
throw();
1727 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2)
throw();
1728 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2)
throw();
1729 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r)
throw();
1730 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r)
throw();
1734 template <
class M,
class MS,
class E>
friend E _mmscimult(
const M &m1,
const MS &ms)
1735 #if(CXSC_INDEX_CHECK) 1736 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1740 template <
class MS,
class M,
class E>
friend E _msmcimult(
const MS &ms,
const M &m2)
1741 #if(CXSC_INDEX_CHECK) 1742 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1746 template <
class MS1,
class MS2,
class E>
friend E _msmscimult(
const MS1 &ms1,
const MS2 &ms2)
1747 #if(CXSC_INDEX_CHECK) 1748 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1754 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
1755 #if(CXSC_INDEX_CHECK) 1756 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1760 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
1761 #if(CXSC_INDEX_CHECK) 1762 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1768 template <
class M1,
class MS2>
friend M1 &_mmssetre(M1 &m1,
const MS2 &ms2)
1769 #if(CXSC_INDEX_CHECK) 1770 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1774 template <
class M1,
class MS2>
friend M1 &_mmssetim(M1 &m1,
const MS2 &ms2)
1775 #if(CXSC_INDEX_CHECK) 1776 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1780 template <
class MS1,
class MS2>
friend MS1 &_msmssetre(MS1 &ms1,
const MS2 &ms2)
1781 #if(CXSC_INDEX_CHECK) 1782 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1786 template <
class MS1,
class MS2>
friend MS1 &_msmssetim(MS1 &ms1,
const MS2 &ms2)
1787 #if(CXSC_INDEX_CHECK) 1788 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1793 template <
class M,
class MS,
class S>
friend M &_mmscimultassign(M &m1,
const MS &ms)
1794 #if(CXSC_INDEX_CHECK) 1795 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1801 template <
class V,
class MS,
class S>
friend V &_vmscimultassign(V &v,
const MS &ms)
1802 #if(CXSC_INDEX_CHECK) 1803 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1829 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1830 #if(CXSC_INDEX_CHECK) 1831 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1835 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1836 #if(CXSC_INDEX_CHECK) 1837 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1841 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1842 #if(CXSC_INDEX_CHECK) 1843 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1849 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
1850 #if(CXSC_INDEX_CHECK) 1851 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1855 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1856 #if(CXSC_INDEX_CHECK) 1857 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1863 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1864 #if(CXSC_INDEX_CHECK) 1865 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1871 template <
class V,
class MS,
class S>
friend V &_vmslimultassign(V &v,
const MS &ms)
1872 #if(CXSC_INDEX_CHECK) 1873 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1901 explicit INLINE
imatrix_slice(
imatrix &a,
const int &l1,
const int &u1,
const int &l2,
const int &u2)
throw():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)
throw():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)
throw():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) 1913 throw(ERROR_IMATRIX_TYPE_CAST_OF_THICK_OBJ);
1920 #if(CXSC_INDEX_CHECK) 1921 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1927 #if(CXSC_INDEX_CHECK) 1928 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1936 #if(CXSC_INDEX_CHECK) 1937 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1943 #if(CXSC_INDEX_CHECK) 1944 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1950 #if(CXSC_INDEX_CHECK) 1951 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1957 #if(CXSC_INDEX_CHECK) 1958 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1966 #if(CXSC_INDEX_CHECK) 1967 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1973 #if(CXSC_INDEX_CHECK) 1974 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
1980 #if(CXSC_INDEX_CHECK) 1981 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
1987 #if(CXSC_INDEX_CHECK) 1988 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
1995 #if(CXSC_INDEX_CHECK) 1996 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
2002 #if(CXSC_INDEX_CHECK) 2003 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
2013 #if(CXSC_INDEX_CHECK) 2014 throw(ERROR_IMATRIX_SUB_ARRAY_TOO_BIG);
2020 #if(CXSC_INDEX_CHECK) 2021 throw(ERROR_IMATRIX_SUB_ARRAY_TOO_BIG);
2027 #if(CXSC_INDEX_CHECK) 2028 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2034 #if(CXSC_INDEX_CHECK) 2035 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2041 #if(CXSC_INDEX_CHECK) 2042 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2048 #if(CXSC_INDEX_CHECK) 2049 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2055 #if(CXSC_INDEX_CHECK) 2056 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2062 #if(CXSC_INDEX_CHECK) 2063 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2069 #if(CXSC_INDEX_CHECK) 2070 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2076 #if(CXSC_INDEX_CHECK) 2077 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2083 #if(CXSC_INDEX_CHECK) 2084 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2090 #if(CXSC_INDEX_CHECK) 2091 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2097 #if(CXSC_INDEX_CHECK) 2098 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2104 #if(CXSC_INDEX_CHECK) 2105 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2111 #if(CXSC_INDEX_CHECK) 2112 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2118 #if(CXSC_INDEX_CHECK) 2119 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2125 #if(CXSC_INDEX_CHECK) 2126 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2132 #if(CXSC_INDEX_CHECK) 2133 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2139 #if(CXSC_INDEX_CHECK) 2140 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2146 #if(CXSC_INDEX_CHECK) 2147 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2153 #if(CXSC_INDEX_CHECK) 2154 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2160 #if(CXSC_INDEX_CHECK) 2161 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2173 INLINE
operator void*()
throw();
2253 #if(CXSC_INDEX_CHECK) 2254 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2260 #if(CXSC_INDEX_CHECK) 2261 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2267 #if(CXSC_INDEX_CHECK) 2268 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2274 #if(CXSC_INDEX_CHECK) 2275 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2291 #if(CXSC_INDEX_CHECK) 2292 throw(OP_WITH_WRONG_DIM);
2298 #if(CXSC_INDEX_CHECK) 2299 throw(OP_WITH_WRONG_DIM);
2305 #if(CXSC_INDEX_CHECK) 2306 throw(OP_WITH_WRONG_DIM);
2312 #if(CXSC_INDEX_CHECK) 2313 throw(OP_WITH_WRONG_DIM);
2319 #if(CXSC_INDEX_CHECK) 2320 throw(OP_WITH_WRONG_DIM);
2327 #if(CXSC_INDEX_CHECK) 2328 throw(OP_WITH_WRONG_DIM);
2334 #if(CXSC_INDEX_CHECK) 2335 throw(OP_WITH_WRONG_DIM);
2341 #if(CXSC_INDEX_CHECK) 2342 throw(OP_WITH_WRONG_DIM);
2348 #if(CXSC_INDEX_CHECK) 2349 throw(OP_WITH_WRONG_DIM);
2355 #if(CXSC_INDEX_CHECK) 2356 throw(OP_WITH_WRONG_DIM);
2363 #if(CXSC_INDEX_CHECK) 2364 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2370 #if(CXSC_INDEX_CHECK) 2371 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2377 #if(CXSC_INDEX_CHECK) 2378 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2384 #if(CXSC_INDEX_CHECK) 2385 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2391 #if(CXSC_INDEX_CHECK) 2392 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2399 #if(CXSC_INDEX_CHECK) 2400 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2406 #if(CXSC_INDEX_CHECK) 2407 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2413 #if(CXSC_INDEX_CHECK) 2414 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2420 #if(CXSC_INDEX_CHECK) 2421 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2427 #if(CXSC_INDEX_CHECK) 2428 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2435 #if(CXSC_INDEX_CHECK) 2436 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2442 #if(CXSC_INDEX_CHECK) 2443 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2449 #if(CXSC_INDEX_CHECK) 2450 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2456 #if(CXSC_INDEX_CHECK) 2457 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2463 #if(CXSC_INDEX_CHECK) 2464 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2473 #if(CXSC_INDEX_CHECK) 2474 throw(OP_WITH_WRONG_DIM);
2480 #if(CXSC_INDEX_CHECK) 2481 throw(OP_WITH_WRONG_DIM);
2487 #if(CXSC_INDEX_CHECK) 2488 throw(OP_WITH_WRONG_DIM);
2495 #if(CXSC_INDEX_CHECK) 2496 throw(OP_WITH_WRONG_DIM);
2502 #if(CXSC_INDEX_CHECK) 2503 throw(OP_WITH_WRONG_DIM);
2509 #if(CXSC_INDEX_CHECK) 2510 throw(OP_WITH_WRONG_DIM);
2517 #if(CXSC_INDEX_CHECK) 2518 throw(OP_WITH_WRONG_DIM);
2524 #if(CXSC_INDEX_CHECK) 2525 throw(OP_WITH_WRONG_DIM);
2531 #if(CXSC_INDEX_CHECK) 2532 throw(OP_WITH_WRONG_DIM);
2539 #if(CXSC_INDEX_CHECK) 2540 throw(OP_WITH_WRONG_DIM);
2546 #if(CXSC_INDEX_CHECK) 2547 throw(OP_WITH_WRONG_DIM);
2553 #if(CXSC_INDEX_CHECK) 2554 throw(OP_WITH_WRONG_DIM);
2563 #if(CXSC_INDEX_CHECK) 2564 throw(OP_WITH_WRONG_DIM);
2570 #if(CXSC_INDEX_CHECK) 2571 throw(OP_WITH_WRONG_DIM);
2577 #if(CXSC_INDEX_CHECK) 2578 throw(OP_WITH_WRONG_DIM);
2585 #if(CXSC_INDEX_CHECK) 2586 throw(OP_WITH_WRONG_DIM);
2592 #if(CXSC_INDEX_CHECK) 2593 throw(OP_WITH_WRONG_DIM);
2599 #if(CXSC_INDEX_CHECK) 2600 throw(OP_WITH_WRONG_DIM);
2609 #if(CXSC_INDEX_CHECK) 2610 throw(OP_WITH_WRONG_DIM);
2616 #if(CXSC_INDEX_CHECK) 2617 throw(OP_WITH_WRONG_DIM);
2623 #if(CXSC_INDEX_CHECK) 2624 throw(OP_WITH_WRONG_DIM);
2631 #if(CXSC_INDEX_CHECK) 2632 throw(OP_WITH_WRONG_DIM);
2638 #if(CXSC_INDEX_CHECK) 2639 throw(OP_WITH_WRONG_DIM);
2645 #if(CXSC_INDEX_CHECK) 2646 throw(OP_WITH_WRONG_DIM);
2665 INLINE
int Lb(
const imatrix &rm,
const int &i)
2666 #if(CXSC_INDEX_CHECK) 2667 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2671 INLINE
int Ub(
const imatrix &rm,
const int &i)
2673 #if(CXSC_INDEX_CHECK) 2674 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2680 #if(CXSC_INDEX_CHECK) 2681 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2687 #if(CXSC_INDEX_CHECK) 2688 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2694 #if(CXSC_INDEX_CHECK) 2695 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2701 #if(CXSC_INDEX_CHECK) 2702 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2710 #if(CXSC_INDEX_CHECK) 2711 throw(ERROR_IMATRIX_WRONG_BOUNDARIES);
2715 INLINE
void Resize(
imatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
2717 #if(CXSC_INDEX_CHECK) 2718 throw(ERROR_IMATRIX_WRONG_BOUNDARIES);
2753 #if(CXSC_INDEX_CHECK) 2754 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2760 #if(CXSC_INDEX_CHECK) 2761 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2767 #if(CXSC_INDEX_CHECK) 2768 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2774 #if(CXSC_INDEX_CHECK) 2775 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2781 #if(CXSC_INDEX_CHECK) 2782 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2788 #if(CXSC_INDEX_CHECK) 2789 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2795 #if(CXSC_INDEX_CHECK) 2796 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2802 #if(CXSC_INDEX_CHECK) 2803 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2809 #if(CXSC_INDEX_CHECK) 2810 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2816 #if(CXSC_INDEX_CHECK) 2817 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2823 #if(CXSC_INDEX_CHECK) 2824 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2830 #if(CXSC_INDEX_CHECK) 2831 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2837 #if(CXSC_INDEX_CHECK) 2838 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2844 #if(CXSC_INDEX_CHECK) 2845 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2851 #if(CXSC_INDEX_CHECK) 2852 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2858 #if(CXSC_INDEX_CHECK) 2859 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2922 #if(CXSC_INDEX_CHECK) 2923 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2929 #if(CXSC_INDEX_CHECK) 2930 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2936 #if(CXSC_INDEX_CHECK) 2937 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2943 #if(CXSC_INDEX_CHECK) 2944 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2950 #if(CXSC_INDEX_CHECK) 2951 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2957 #if(CXSC_INDEX_CHECK) 2958 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2965 #if(CXSC_INDEX_CHECK) 2966 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2972 #if(CXSC_INDEX_CHECK) 2973 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2983 #if(CXSC_INDEX_CHECK) 2984 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2990 #if(CXSC_INDEX_CHECK) 2991 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2997 #if(CXSC_INDEX_CHECK) 2998 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3005 #if(CXSC_INDEX_CHECK) 3006 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3012 #if(CXSC_INDEX_CHECK) 3013 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3027 #if(CXSC_INDEX_CHECK) 3028 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3034 #if(CXSC_INDEX_CHECK) 3035 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3041 #if(CXSC_INDEX_CHECK) 3042 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3048 #if(CXSC_INDEX_CHECK) 3049 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3055 #if(CXSC_INDEX_CHECK) 3056 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3062 #if(CXSC_INDEX_CHECK) 3063 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3074 #if(CXSC_INDEX_CHECK) 3075 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3081 #if(CXSC_INDEX_CHECK) 3082 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3088 #if(CXSC_INDEX_CHECK) 3089 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3095 #if(CXSC_INDEX_CHECK) 3096 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3102 #if(CXSC_INDEX_CHECK) 3103 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3109 #if(CXSC_INDEX_CHECK) 3110 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3117 #if(CXSC_INDEX_CHECK) 3118 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3124 #if(CXSC_INDEX_CHECK) 3125 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3131 #if(CXSC_INDEX_CHECK) 3132 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3138 #if(CXSC_INDEX_CHECK) 3139 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3145 #if(CXSC_INDEX_CHECK) 3146 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3152 #if(CXSC_INDEX_CHECK) 3153 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3161 #if(CXSC_INDEX_CHECK) 3162 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3168 #if(CXSC_INDEX_CHECK) 3169 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3175 #if(CXSC_INDEX_CHECK) 3176 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3182 #if(CXSC_INDEX_CHECK) 3183 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3189 #if(CXSC_INDEX_CHECK) 3190 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3196 #if(CXSC_INDEX_CHECK) 3197 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3204 #if(CXSC_INDEX_CHECK) 3205 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3211 #if(CXSC_INDEX_CHECK) 3212 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3218 #if(CXSC_INDEX_CHECK) 3219 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3225 #if(CXSC_INDEX_CHECK) 3226 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3232 #if(CXSC_INDEX_CHECK) 3233 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3239 #if(CXSC_INDEX_CHECK) 3240 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3248 #if(CXSC_INDEX_CHECK) 3249 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3255 #if(CXSC_INDEX_CHECK) 3256 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3262 #if(CXSC_INDEX_CHECK) 3263 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3269 #if(CXSC_INDEX_CHECK) 3270 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3276 #if(CXSC_INDEX_CHECK) 3277 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3283 #if(CXSC_INDEX_CHECK) 3284 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3290 #if(CXSC_INDEX_CHECK) 3291 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3297 #if(CXSC_INDEX_CHECK) 3298 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3304 #if(CXSC_INDEX_CHECK) 3305 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3311 #if(CXSC_INDEX_CHECK) 3312 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3319 #if(CXSC_INDEX_CHECK) 3320 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3326 #if(CXSC_INDEX_CHECK) 3327 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3333 #if(CXSC_INDEX_CHECK) 3334 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3340 #if(CXSC_INDEX_CHECK) 3341 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3347 #if(CXSC_INDEX_CHECK) 3348 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3354 #if(CXSC_INDEX_CHECK) 3355 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3361 #if(CXSC_INDEX_CHECK) 3362 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3368 #if(CXSC_INDEX_CHECK) 3369 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3375 #if(CXSC_INDEX_CHECK) 3376 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3382 #if(CXSC_INDEX_CHECK) 3383 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3390 #if(CXSC_INDEX_CHECK) 3391 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3397 #if(CXSC_INDEX_CHECK) 3398 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3404 #if(CXSC_INDEX_CHECK) 3405 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3411 #if(CXSC_INDEX_CHECK) 3412 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3418 #if(CXSC_INDEX_CHECK) 3419 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3425 #if(CXSC_INDEX_CHECK) 3426 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3432 #if(CXSC_INDEX_CHECK) 3433 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3439 #if(CXSC_INDEX_CHECK) 3440 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3446 #if(CXSC_INDEX_CHECK) 3447 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3453 #if(CXSC_INDEX_CHECK) 3454 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3461 #if(CXSC_INDEX_CHECK) 3462 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3468 #if(CXSC_INDEX_CHECK) 3469 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3475 #if(CXSC_INDEX_CHECK) 3476 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3482 #if(CXSC_INDEX_CHECK) 3483 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3489 #if(CXSC_INDEX_CHECK) 3490 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3496 #if(CXSC_INDEX_CHECK) 3497 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3503 #if(CXSC_INDEX_CHECK) 3504 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3510 #if(CXSC_INDEX_CHECK) 3511 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3517 #if(CXSC_INDEX_CHECK) 3518 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3524 #if(CXSC_INDEX_CHECK) 3525 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3532 #if(CXSC_INDEX_CHECK) 3533 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3539 #if(CXSC_INDEX_CHECK) 3540 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3546 #if(CXSC_INDEX_CHECK) 3547 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3553 #if(CXSC_INDEX_CHECK) 3554 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3560 #if(CXSC_INDEX_CHECK) 3561 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3567 #if(CXSC_INDEX_CHECK) 3568 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3574 #if(CXSC_INDEX_CHECK) 3575 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3581 #if(CXSC_INDEX_CHECK) 3582 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3588 #if(CXSC_INDEX_CHECK) 3589 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3595 #if(CXSC_INDEX_CHECK) 3596 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3605 #if(CXSC_INDEX_CHECK) 3606 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3612 #if(CXSC_INDEX_CHECK) 3613 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3619 #if(CXSC_INDEX_CHECK) 3620 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3626 #if(CXSC_INDEX_CHECK) 3627 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3637 INLINE
bool operator ==(
const imatrix &m1,
const imatrix &m2)
throw();
3639 INLINE
bool operator !=(
const imatrix &m1,
const imatrix &m2)
throw();
3641 INLINE
bool operator <(
const imatrix &m1,
const imatrix &m2)
throw();
3643 INLINE
bool operator <=(
const imatrix &m1,
const imatrix &m2)
throw();
3645 INLINE
bool operator >(
const imatrix &m1,
const imatrix &m2)
throw();
3647 INLINE
bool operator >=(
const imatrix &m1,
const imatrix &m2)
throw();
3679 INLINE
bool operator !(
const imatrix &ms)
throw();
3686 INLINE std::ostream &operator <<(std::ostream &s,
const imatrix &r)
throw();
3688 INLINE std::ostream &operator <<(std::ostream &s,
const imatrix_slice &r)
throw();
3690 INLINE std::istream &operator >>(std::istream &s,
imatrix &r)
throw();
3692 INLINE std::istream &operator >>(std::istream &s,
imatrix_slice &r)
throw();
3715 #ifdef _CXSC_INCL_INL 3716 #include "matrix.inl" 3717 #include "imatrix.inl" 3720 #ifdef _CXSC_CIVECTOR_HPP_INCLUDED 3721 # ifdef _CXSC_INCL_INL 3722 # include "civecimat.inl" 3724 # include "civecimat.hpp" 3728 #ifdef _CXSC_CVECTOR_HPP_INCLUDED 3729 # ifdef _CXSC_INCL_INL 3730 # include "cvecimat.inl" 3732 # include "cvecimat.hpp" 3736 #ifdef _CXSC_CMATRIX_HPP_INCLUDED 3737 # ifdef _CXSC_INCL_INL 3738 # include "cmatimat.inl" 3740 # include "cmatimat.hpp" 3744 #ifdef _CXSC_LIVECTOR_HPP_INCLUDED 3745 # ifdef _CXSC_INCL_INL 3746 # include "livecimat.inl" 3748 # include "livecimat.hpp" 3752 #ifdef _CXSC_LRVECTOR_HPP_INCLUDED 3753 # ifdef _CXSC_INCL_INL 3754 # include "lrvecimat.inl" 3756 # include "lrvecimat.hpp" 3760 #ifdef _CXSC_LRMATRIX_HPP_INCLUDED 3761 # ifdef _CXSC_INCL_INL 3762 # include "lrmatimat.inl" 3764 # include "lrmatimat.hpp" 3769 #ifdef CXSC_USE_BLAS 3770 #define _CXSC_BLAS_IMATRIX 3771 #include "cxsc_blas.inl" real MaxRelDiam(const imatrix_subv &v)
Computes the relative diameter .
The Data Type rmatrix_slice.
imatrix_slice(imatrix_slice &a, const int &l1, const int &u1, const int &l2, const int &u2)
Constructor of class imatrix_slice.
The Data Type imatrix_subv.
The Data Type idotprecision.
imatrix_subv & operator()()
Operator for accessing the whole vector.
cimatrix_subv & SetUncheckedInf(cimatrix_subv &iv, const complex &r)
Returns the matrix with the new unchecked given infimum value.
The Data Type cimatrix_subv.
friend int VecLen(const imatrix_subv &rv)
Returns the size of the vector.
Represents a row or column vector of a sparse matrix.
imatrix_subv & operator*=(const interval &c)
Implementation of multiplication and allocation operation.
The namespace cxsc, providing all functionality of the class library C-XSC.
imatrix_slice(imatrix &a, const int &l1, const int &u1, const int &l2, const int &u2)
Constructor of class imatrix_slice.
civector operator*(const cimatrix_subv &rv, const cinterval &s)
Implementation of multiplication operation.
cvector mid(const cimatrix_subv &mv)
Returns the middle of the matrix.
The Scalar Type interval.
A sparse interval vector.
cimatrix & SetLb(cimatrix &m, const int &i, const int &j)
Sets the lower bound index.
imatrix_subv & operator&=(const sivector &rv)
Implementation of subtraction and allocation operation.
The Multiple-Precision Data Type l_ivector.
void DoubleSize(cimatrix &A)
Doubles the size of the matrix.
imatrix_subv(interval *d, const int &l, const int &u, const int &s, const int &st, const int &o)
Constructor of class imatrix_subv.
The Data Type ivector_slice.
The Data Type cidotprecision.
The Data Type imatrix_slice.
cimatrix Id(const cimatrix &A)
Returns the Identity matrix.
The Data Type rvector_slice.
The Multiple-Precision Data Type l_imatrix.
A slice of a sparse real interval matrix.
cimatrix & SetUb(cimatrix &m, const int &i, const int &j)
Sets the upper bound index.
imatrix_subv & operator=(const simatrix_subv &rv)
Implementation of standard assigning operator.
The Data Type rmatrix_subv.
A slice of a sparse real matrix.
friend imatrix_subv Col(imatrix &m, const int &i)
Returns one column of the matrix as a vector.
imatrix_subv & operator+=(const interval &c)
Implementation of addition and allocation operation.
void Resize(cimatrix &A)
Resizes the matrix.
Helper class for slices of sparse vectors.
cvector diam(const cimatrix_subv &mv)
Returns the diameter of the matrix.
Represents a row or column vector of a sparse matrix.
The Data Type civector_slice.
int ColLen(const cimatrix &)
Returns the column dimension.
friend int Lb(const imatrix_subv &rv)
Returns the lower bound of the vector.
The Data Type cmatrix_subv.
int RowLen(const cimatrix &)
Returns the row dimension.
interval & operator[](const int &i) const
Operator for accessing the single elements of the vector (read-only)
rmatrix CompMat(const cimatrix &A)
Returns Ostrowski's comparison matrix.
rvector absmax(const imatrix_subv &mv)
Returns the absolute maximum value of the matrix.
cimatrix _imatrix(const cimatrix &rm)
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC...
imatrix_slice(const imatrix_slice &ms)
Constructor of class imatrix_slice.
imatrix_subv & operator/=(const interval &c)
Implementation of division and allocation operation.
Helper class for slices of sparse vectors.
imatrix_subv(const imatrix_subv &v)
Constructor of class imatrix_subv.
civector operator/(const cimatrix_subv &rv, const cinterval &s)
Implementation of division operation.
cimatrix transp(const cimatrix &A)
Returns the transposed matrix.
friend int Ub(const imatrix_subv &rv)
Returns the upper bound of the vector.
The Data Type cvector_slice.
imatrix_subv & operator|=(const sivector &rv)
Implementation of addition and allocation operation.
rvector absmin(const imatrix_subv &mv)
Returns the absolute minimum value of the matrix.
ivector()
Constructor of class ivector.
A sparse interval matrix.
imatrix_subv & operator-=(const interval &c)
Implementation of subtraction and allocation operation.
imatrix()
Constructor of class imatrix.
ivector abs(const cimatrix_subv &mv)
Returns the absolute value of the matrix.
friend imatrix_subv Row(imatrix &m, const int &i)
Returns one row of the matrix as a vector.