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);
623 INLINE imatrix_subv
Row(imatrix &m,
const int &i)
624 #if(CXSC_INDEX_CHECK)
625 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
629 INLINE imatrix_subv
Col(imatrix &m,
const int &i)
631 #if(CXSC_INDEX_CHECK)
632 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
636 INLINE imatrix_subv
Row(
const imatrix &m,
const int &i)
638 #if(CXSC_INDEX_CHECK)
639 throw(ERROR_IMATRIX_ROW_OR_COL_NOT_IN_MAT);
643 INLINE imatrix_subv
Col(
const imatrix &m,
const int &i)
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>);
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);
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);
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();
2227 INLINE ivector
operator /(
const imatrix_subv &rv,
const interval &s)
throw();
2229 INLINE ivector
operator *(
const imatrix_subv &rv,
const interval &s)
throw();
2231 INLINE ivector
operator *(
const interval &s,
const imatrix_subv &rv)
throw();
2233 INLINE ivector
abs(
const imatrix_subv &mv)
throw();
2235 INLINE rvector
absmin(
const imatrix_subv &mv)
throw();
2237 INLINE rvector
absmax(
const imatrix_subv &mv)
throw();
2239 INLINE rvector
diam(
const imatrix_subv &mv)
throw();
2241 INLINE rvector
mid(
const imatrix_subv &mv)
throw();
2243 INLINE rvector Inf(
const imatrix_subv &mv)
throw();
2245 INLINE rvector Sup(
const imatrix_subv &mv)
throw();
2252 INLINE imatrix_subv &SetInf(imatrix_subv &mv,
const rvector &rv)
2253 #if(CXSC_INDEX_CHECK)
2254 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2258 INLINE imatrix_subv &SetSup(imatrix_subv &mv,
const rvector &rv)
2260 #if(CXSC_INDEX_CHECK)
2261 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2265 INLINE imatrix_subv &UncheckedSetInf(imatrix_subv &mv,
const rvector &rv)
2267 #if(CXSC_INDEX_CHECK)
2268 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2272 INLINE imatrix_subv &UncheckedSetSup(imatrix_subv &mv,
const rvector &rv)
2274 #if(CXSC_INDEX_CHECK)
2275 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2279 INLINE imatrix_subv &SetSup(imatrix_subv &iv,
const real &r)
throw();
2282 INLINE imatrix_subv &SetInf(imatrix_subv &iv,
const real &r)
throw();
2284 INLINE imatrix_subv &UncheckedSetSup(imatrix_subv &iv,
const real &r)
throw();
2286 INLINE imatrix_subv &
SetUncheckedInf(imatrix_subv &iv,
const real &r)
throw();
2290 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2291 #if(CXSC_INDEX_CHECK)
2292 throw(OP_WITH_WRONG_DIM);
2296 void accumulate(idotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
2298 #if(CXSC_INDEX_CHECK)
2299 throw(OP_WITH_WRONG_DIM);
2303 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
2305 #if(CXSC_INDEX_CHECK)
2306 throw(OP_WITH_WRONG_DIM);
2310 void accumulate(idotprecision &dp,
const ivector_slice & sl1,
const imatrix_subv &rv2)
2312 #if(CXSC_INDEX_CHECK)
2313 throw(OP_WITH_WRONG_DIM);
2317 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const ivector_slice &sl2)
2319 #if(CXSC_INDEX_CHECK)
2320 throw(OP_WITH_WRONG_DIM);
2326 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2327 #if(CXSC_INDEX_CHECK)
2328 throw(OP_WITH_WRONG_DIM);
2332 void accumulate(cidotprecision &dp,
const ivector & rv1,
const imatrix_subv &rv2)
2334 #if(CXSC_INDEX_CHECK)
2335 throw(OP_WITH_WRONG_DIM);
2339 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const ivector &rv2)
2341 #if(CXSC_INDEX_CHECK)
2342 throw(OP_WITH_WRONG_DIM);
2346 void accumulate(cidotprecision &dp,
const ivector_slice & sl1,
const imatrix_subv &rv2)
2348 #if(CXSC_INDEX_CHECK)
2349 throw(OP_WITH_WRONG_DIM);
2353 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const ivector_slice &sl2)
2355 #if(CXSC_INDEX_CHECK)
2356 throw(OP_WITH_WRONG_DIM);
2362 INLINE interval
operator *(
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2363 #if(CXSC_INDEX_CHECK)
2364 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2368 INLINE interval
operator *(
const ivector & rv1,
const imatrix_subv &rv2)
2370 #if(CXSC_INDEX_CHECK)
2371 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2375 INLINE interval
operator *(
const imatrix_subv &rv1,
const ivector &rv2)
2377 #if(CXSC_INDEX_CHECK)
2378 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2382 INLINE interval
operator *(
const ivector_slice &sl,
const imatrix_subv &sv)
2384 #if(CXSC_INDEX_CHECK)
2385 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2389 INLINE interval
operator *(
const imatrix_subv &mv,
const ivector_slice &vs)
2391 #if(CXSC_INDEX_CHECK)
2392 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2398 INLINE ivector operator +(
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2399 #if(CXSC_INDEX_CHECK)
2400 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2404 INLINE ivector operator +(
const imatrix_subv &rv1,
const ivector &rv2)
2406 #if(CXSC_INDEX_CHECK)
2407 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2411 INLINE ivector operator +(
const ivector & rv1,
const imatrix_subv &rv2)
2413 #if(CXSC_INDEX_CHECK)
2414 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2418 INLINE ivector operator +(
const ivector_slice &sl,
const imatrix_subv &mv)
2420 #if(CXSC_INDEX_CHECK)
2421 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2425 INLINE ivector operator +(
const imatrix_subv &mv,
const ivector_slice &sl)
2427 #if(CXSC_INDEX_CHECK)
2428 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2434 INLINE ivector operator -(
const imatrix_subv & rv1,
const imatrix_subv &rv2)
2435 #if(CXSC_INDEX_CHECK)
2436 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2440 INLINE ivector operator -(
const ivector & rv1,
const imatrix_subv &rv2)
2442 #if(CXSC_INDEX_CHECK)
2443 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2447 INLINE ivector operator -(
const imatrix_subv &rv1,
const ivector &rv2)
2449 #if(CXSC_INDEX_CHECK)
2450 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2454 INLINE ivector operator -(
const ivector_slice &sl,
const imatrix_subv &mv)
2456 #if(CXSC_INDEX_CHECK)
2457 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2461 INLINE ivector operator -(
const imatrix_subv &mv,
const ivector_slice &sl)
2463 #if(CXSC_INDEX_CHECK)
2464 throw(ERROR_IVECTOR_OP_WITH_WRONG_DIM);
2472 void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const imatrix_subv &rv2)
2473 #if(CXSC_INDEX_CHECK)
2474 throw(OP_WITH_WRONG_DIM);
2478 void accumulate(idotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2480 #if(CXSC_INDEX_CHECK)
2481 throw(OP_WITH_WRONG_DIM);
2485 void accumulate(idotprecision &dp,
const rvector_slice & sl1,
const imatrix_subv &rv2)
2487 #if(CXSC_INDEX_CHECK)
2488 throw(OP_WITH_WRONG_DIM);
2494 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rmatrix_subv &rv2)
2495 #if(CXSC_INDEX_CHECK)
2496 throw(OP_WITH_WRONG_DIM);
2500 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2502 #if(CXSC_INDEX_CHECK)
2503 throw(OP_WITH_WRONG_DIM);
2507 void accumulate(idotprecision &dp,
const imatrix_subv & rv1,
const rvector_slice &sl2)
2509 #if(CXSC_INDEX_CHECK)
2510 throw(OP_WITH_WRONG_DIM);
2516 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const imatrix_subv &rv2)
2517 #if(CXSC_INDEX_CHECK)
2518 throw(OP_WITH_WRONG_DIM);
2522 void accumulate(cidotprecision &dp,
const rvector & rv1,
const imatrix_subv &rv2)
2524 #if(CXSC_INDEX_CHECK)
2525 throw(OP_WITH_WRONG_DIM);
2529 void accumulate(cidotprecision &dp,
const rvector_slice & sl1,
const imatrix_subv &rv2)
2531 #if(CXSC_INDEX_CHECK)
2532 throw(OP_WITH_WRONG_DIM);
2538 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rmatrix_subv &rv2)
2539 #if(CXSC_INDEX_CHECK)
2540 throw(OP_WITH_WRONG_DIM);
2544 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector &rv2)
2546 #if(CXSC_INDEX_CHECK)
2547 throw(OP_WITH_WRONG_DIM);
2551 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const rvector_slice &sl2)
2553 #if(CXSC_INDEX_CHECK)
2554 throw(OP_WITH_WRONG_DIM);
2562 void accumulate(cidotprecision &dp,
const cmatrix_subv & rv1,
const imatrix_subv &rv2)
2563 #if(CXSC_INDEX_CHECK)
2564 throw(OP_WITH_WRONG_DIM);
2568 void accumulate(cidotprecision &dp,
const cvector & rv1,
const imatrix_subv &rv2)
2570 #if(CXSC_INDEX_CHECK)
2571 throw(OP_WITH_WRONG_DIM);
2575 void accumulate(cidotprecision &dp,
const cvector_slice & sl1,
const imatrix_subv &rv2)
2577 #if(CXSC_INDEX_CHECK)
2578 throw(OP_WITH_WRONG_DIM);
2584 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cmatrix_subv &rv2)
2585 #if(CXSC_INDEX_CHECK)
2586 throw(OP_WITH_WRONG_DIM);
2590 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cvector &rv2)
2592 #if(CXSC_INDEX_CHECK)
2593 throw(OP_WITH_WRONG_DIM);
2597 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cvector_slice &sl2)
2599 #if(CXSC_INDEX_CHECK)
2600 throw(OP_WITH_WRONG_DIM);
2608 void accumulate(cidotprecision &dp,
const cimatrix_subv & rv1,
const imatrix_subv &rv2)
2609 #if(CXSC_INDEX_CHECK)
2610 throw(OP_WITH_WRONG_DIM);
2614 void accumulate(cidotprecision &dp,
const civector & rv1,
const imatrix_subv &rv2)
2616 #if(CXSC_INDEX_CHECK)
2617 throw(OP_WITH_WRONG_DIM);
2621 void accumulate(cidotprecision &dp,
const civector_slice & sl1,
const imatrix_subv &rv2)
2623 #if(CXSC_INDEX_CHECK)
2624 throw(OP_WITH_WRONG_DIM);
2630 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const cimatrix_subv &rv2)
2631 #if(CXSC_INDEX_CHECK)
2632 throw(OP_WITH_WRONG_DIM);
2636 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const civector &rv2)
2638 #if(CXSC_INDEX_CHECK)
2639 throw(OP_WITH_WRONG_DIM);
2643 void accumulate(cidotprecision &dp,
const imatrix_subv & rv1,
const civector_slice &sl2)
2645 #if(CXSC_INDEX_CHECK)
2646 throw(OP_WITH_WRONG_DIM);
2656 INLINE imatrix
_imatrix(
const imatrix &rm)
throw();
2658 INLINE imatrix
_imatrix(
const ivector &v)
throw();
2660 INLINE imatrix
_imatrix(
const ivector_slice &v)
throw();
2662 INLINE imatrix
_imatrix(
const interval &r)
throw();
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);
2678 INLINE
int Lb(
const imatrix_slice &rm,
const int &i)
2680 #if(CXSC_INDEX_CHECK)
2681 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2685 INLINE
int Ub(
const imatrix_slice &rm,
const int &i)
2687 #if(CXSC_INDEX_CHECK)
2688 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2692 INLINE imatrix &
SetLb(imatrix &m,
const int &i,
const int &j)
2694 #if(CXSC_INDEX_CHECK)
2695 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2699 INLINE imatrix &
SetUb(imatrix &m,
const int &i,
const int &j)
2701 #if(CXSC_INDEX_CHECK)
2702 throw(ERROR_IMATRIX_WRONG_ROW_OR_COL);
2706 INLINE
void Resize(imatrix &A)
throw();
2709 INLINE
void Resize(imatrix &A,
const int &m,
const int &n)
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);
2724 INLINE imatrix
abs(
const imatrix &m)
throw();
2726 INLINE rmatrix
absmin(
const imatrix &m)
throw();
2728 INLINE rmatrix
absmax(
const imatrix &m)
throw();
2730 INLINE imatrix
abs(
const imatrix_slice &ms)
throw();
2732 INLINE rmatrix
absmin(
const imatrix_slice &ms)
throw();
2734 INLINE rmatrix
absmax(
const imatrix_slice &ms)
throw();
2736 INLINE rmatrix
diam(
const imatrix &m)
throw();
2738 INLINE rmatrix
diam(
const imatrix_slice &ms)
throw();
2740 INLINE rmatrix
mid(
const imatrix &m)
throw();
2742 INLINE rmatrix
mid(
const imatrix_slice &ms)
throw();
2744 INLINE rmatrix Inf(
const imatrix &m)
throw();
2746 INLINE rmatrix Sup(
const imatrix &m)
throw();
2748 INLINE rmatrix Inf(
const imatrix_slice &m)
throw();
2750 INLINE rmatrix Sup(
const imatrix_slice &m)
throw();
2752 INLINE imatrix &SetInf(imatrix &cm,
const rmatrix &rm)
2753 #if(CXSC_INDEX_CHECK)
2754 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2758 INLINE imatrix_slice &SetInf(imatrix_slice &cm,
const rmatrix &rm)
2760 #if(CXSC_INDEX_CHECK)
2761 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2765 INLINE imatrix &SetInf(imatrix &cm,
const rmatrix_slice &rm)
2767 #if(CXSC_INDEX_CHECK)
2768 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2772 INLINE imatrix_slice &SetInf(imatrix_slice &cm,
const rmatrix_slice &rm)
2774 #if(CXSC_INDEX_CHECK)
2775 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2779 INLINE imatrix &SetSup(imatrix &cm,
const rmatrix &rm)
2781 #if(CXSC_INDEX_CHECK)
2782 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2786 INLINE imatrix_slice &SetSup(imatrix_slice &cm,
const rmatrix &rm)
2788 #if(CXSC_INDEX_CHECK)
2789 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2793 INLINE imatrix &SetSup(imatrix &cm,
const rmatrix_slice &rm)
2795 #if(CXSC_INDEX_CHECK)
2796 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2800 INLINE imatrix_slice &SetSup(imatrix_slice &cm,
const rmatrix_slice &rm)
2802 #if(CXSC_INDEX_CHECK)
2803 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2807 INLINE imatrix &UncheckedSetInf(imatrix &cm,
const rmatrix &rm)
2809 #if(CXSC_INDEX_CHECK)
2810 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2814 INLINE imatrix_slice &UncheckedSetInf(imatrix_slice &cm,
const rmatrix &rm)
2816 #if(CXSC_INDEX_CHECK)
2817 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2821 INLINE imatrix &UncheckedSetInf(imatrix &cm,
const rmatrix_slice &rm)
2823 #if(CXSC_INDEX_CHECK)
2824 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2828 INLINE imatrix_slice &UncheckedSetInf(imatrix_slice &cm,
const rmatrix_slice &rm)
2830 #if(CXSC_INDEX_CHECK)
2831 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2835 INLINE imatrix &UncheckedSetSup(imatrix &cm,
const rmatrix &rm)
2837 #if(CXSC_INDEX_CHECK)
2838 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2842 INLINE imatrix_slice &UncheckedSetSup(imatrix_slice &cm,
const rmatrix &rm)
2844 #if(CXSC_INDEX_CHECK)
2845 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2849 INLINE imatrix &UncheckedSetSup(imatrix &cm,
const rmatrix_slice &rm)
2851 #if(CXSC_INDEX_CHECK)
2852 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2856 INLINE imatrix_slice &UncheckedSetSup(imatrix_slice &cm,
const rmatrix_slice &rm)
2858 #if(CXSC_INDEX_CHECK)
2859 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2867 INLINE imatrix
operator *(
const interval &c,
const imatrix &m)
throw();
2869 INLINE imatrix
operator *(
const interval &c,
const imatrix_slice &ms)
throw();
2871 INLINE imatrix
operator *(
const imatrix &m,
const interval &c)
throw();
2873 INLINE imatrix
operator *(
const imatrix_slice &ms,
const interval &c)
throw();
2875 INLINE imatrix &
operator *=(imatrix &m,
const interval &c)
throw();
2877 INLINE imatrix
operator /(
const imatrix &m,
const interval &c)
throw();
2879 INLINE imatrix
operator /(
const imatrix_slice &ms,
const interval &c)
throw();
2881 INLINE imatrix &
operator /=(imatrix &m,
const interval &c)
throw();
2886 INLINE imatrix
operator *(
const real &c,
const imatrix &m)
throw();
2888 INLINE imatrix
operator *(
const real &c,
const imatrix_slice &ms)
throw();
2890 INLINE imatrix
operator *(
const imatrix &m,
const real &c)
throw();
2892 INLINE imatrix
operator *(
const imatrix_slice &ms,
const real &c)
throw();
2894 INLINE imatrix &
operator *=(imatrix &m,
const real &c)
throw();
2896 INLINE imatrix
operator /(
const imatrix &m,
const real &c)
throw();
2898 INLINE imatrix
operator /(
const imatrix_slice &ms,
const real &c)
throw();
2900 INLINE imatrix &
operator /=(imatrix &m,
const real &c)
throw();
2904 INLINE imatrix
operator *(
const interval &c,
const rmatrix &m)
throw();
2906 INLINE imatrix
operator *(
const interval &c,
const rmatrix_slice &ms)
throw();
2908 INLINE imatrix
operator *(
const rmatrix &m,
const interval &c)
throw();
2910 INLINE imatrix
operator *(
const rmatrix_slice &ms,
const interval &c)
throw();
2912 INLINE imatrix
operator /(
const rmatrix &m,
const interval &c)
throw();
2914 INLINE imatrix
operator /(
const rmatrix_slice &ms,
const interval &c)
throw();
2921 INLINE ivector
operator *(
const imatrix &m,
const ivector &v)
2922 #if(CXSC_INDEX_CHECK)
2923 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2927 INLINE ivector
operator *(
const imatrix_slice &ms,
const ivector &v)
2929 #if(CXSC_INDEX_CHECK)
2930 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2934 INLINE ivector
operator *(
const ivector &v,
const imatrix &m)
2936 #if(CXSC_INDEX_CHECK)
2937 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2941 INLINE ivector
operator *(
const ivector &v,
const imatrix_slice &ms)
2943 #if(CXSC_INDEX_CHECK)
2944 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2948 INLINE ivector &
operator *=(ivector &v,
const imatrix &m)
2950 #if(CXSC_INDEX_CHECK)
2951 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2955 INLINE ivector &
operator *=(ivector &v,
const imatrix_slice &ms)
2957 #if(CXSC_INDEX_CHECK)
2958 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2964 INLINE ivector
operator *(
const ivector_slice &v,
const imatrix &m)
2965 #if(CXSC_INDEX_CHECK)
2966 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2970 INLINE ivector
operator *(
const ivector_slice &v,
const imatrix_slice &m)
2972 #if(CXSC_INDEX_CHECK)
2973 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2982 INLINE ivector
operator *(
const rvector &v,
const imatrix &m)
2983 #if(CXSC_INDEX_CHECK)
2984 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2988 INLINE ivector
operator *(
const rvector &v,
const imatrix_slice &ms)
2990 #if(CXSC_INDEX_CHECK)
2991 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
2995 INLINE ivector
operator *(
const rvector_slice &v,
const imatrix &m)
2997 #if(CXSC_INDEX_CHECK)
2998 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3004 INLINE ivector
operator *(
const imatrix &m,
const rvector &v)
3005 #if(CXSC_INDEX_CHECK)
3006 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3010 INLINE ivector
operator *(
const imatrix_slice &ms,
const rvector &v)
3012 #if(CXSC_INDEX_CHECK)
3013 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3022 INLINE
const imatrix &operator +(
const imatrix &m1)
throw();
3024 INLINE imatrix operator +(
const imatrix_slice &ms)
throw();
3026 INLINE imatrix operator +(
const imatrix &m1,
const imatrix &m2)
3027 #if(CXSC_INDEX_CHECK)
3028 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3032 INLINE imatrix operator +(
const imatrix &m,
const imatrix_slice &ms)
3034 #if(CXSC_INDEX_CHECK)
3035 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3039 INLINE imatrix operator +(
const imatrix_slice &ms,
const imatrix &m)
3041 #if(CXSC_INDEX_CHECK)
3042 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3046 INLINE imatrix operator +(
const imatrix_slice &m1,
const imatrix_slice &m2)
3048 #if(CXSC_INDEX_CHECK)
3049 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3053 INLINE imatrix &
operator +=(imatrix &m1,
const imatrix &m2)
3055 #if(CXSC_INDEX_CHECK)
3056 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3060 INLINE imatrix &
operator +=(imatrix &m1,
const imatrix_slice &ms)
3062 #if(CXSC_INDEX_CHECK)
3063 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3069 INLINE imatrix operator -(
const imatrix &m)
throw();
3071 INLINE imatrix operator -(
const imatrix_slice &ms)
throw();
3073 INLINE imatrix operator -(
const imatrix &m1,
const imatrix &m2)
3074 #if(CXSC_INDEX_CHECK)
3075 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3079 INLINE imatrix operator -(
const imatrix &m,
const imatrix_slice &ms)
3081 #if(CXSC_INDEX_CHECK)
3082 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3086 INLINE imatrix operator -(
const imatrix_slice &ms,
const imatrix &m)
3088 #if(CXSC_INDEX_CHECK)
3089 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3093 INLINE imatrix operator -(
const imatrix_slice &ms1,
const imatrix_slice &ms2)
3095 #if(CXSC_INDEX_CHECK)
3096 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3100 INLINE imatrix &operator -=(imatrix &m1,
const imatrix &m2)
3102 #if(CXSC_INDEX_CHECK)
3103 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3107 INLINE imatrix &operator -=(imatrix &m1,
const imatrix_slice &ms)
3109 #if(CXSC_INDEX_CHECK)
3110 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3116 INLINE imatrix
operator *(
const imatrix &m1,
const imatrix &m2)
3117 #if(CXSC_INDEX_CHECK)
3118 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3122 INLINE imatrix
operator *(
const imatrix &m1,
const imatrix_slice &ms)
3124 #if(CXSC_INDEX_CHECK)
3125 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3129 INLINE imatrix
operator *(
const imatrix_slice &ms,
const imatrix &m1)
3131 #if(CXSC_INDEX_CHECK)
3132 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3136 INLINE imatrix
operator *(
const imatrix_slice &ms1,
const imatrix_slice &ms2)
3138 #if(CXSC_INDEX_CHECK)
3139 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3143 INLINE imatrix &
operator *=(imatrix &m1,
const imatrix &m2)
3145 #if(CXSC_INDEX_CHECK)
3146 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3150 INLINE imatrix &
operator *=(imatrix &m1,
const imatrix_slice &ms)
3152 #if(CXSC_INDEX_CHECK)
3153 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3160 INLINE imatrix operator |(
const imatrix &m1,
const imatrix &m2)
3161 #if(CXSC_INDEX_CHECK)
3162 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3166 INLINE imatrix operator |(
const imatrix &m,
const imatrix_slice &ms)
3168 #if(CXSC_INDEX_CHECK)
3169 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3173 INLINE imatrix operator |(
const imatrix_slice &ms,
const imatrix &m)
3175 #if(CXSC_INDEX_CHECK)
3176 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3180 INLINE imatrix operator |(
const imatrix_slice &m1,
const imatrix_slice &m2)
3182 #if(CXSC_INDEX_CHECK)
3183 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3187 INLINE imatrix &operator |=(imatrix &m1,
const imatrix &m2)
3189 #if(CXSC_INDEX_CHECK)
3190 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3194 INLINE imatrix &operator |=(imatrix &m1,
const imatrix_slice &ms)
3196 #if(CXSC_INDEX_CHECK)
3197 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3203 INLINE imatrix operator &(
const imatrix &m1,
const imatrix &m2)
3204 #if(CXSC_INDEX_CHECK)
3205 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3209 INLINE imatrix operator &(
const imatrix &m,
const imatrix_slice &ms)
3211 #if(CXSC_INDEX_CHECK)
3212 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3216 INLINE imatrix operator &(
const imatrix_slice &ms,
const imatrix &m)
3218 #if(CXSC_INDEX_CHECK)
3219 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3223 INLINE imatrix operator &(
const imatrix_slice &m1,
const imatrix_slice &m2)
3225 #if(CXSC_INDEX_CHECK)
3226 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3230 INLINE imatrix &operator &=(imatrix &m1,
const imatrix &m2)
3232 #if(CXSC_INDEX_CHECK)
3233 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3237 INLINE imatrix &operator &=(imatrix &m1,
const imatrix_slice &ms)
3239 #if(CXSC_INDEX_CHECK)
3240 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3247 INLINE imatrix operator +(
const rmatrix &m1,
const imatrix &m2)
3248 #if(CXSC_INDEX_CHECK)
3249 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3253 INLINE imatrix operator +(
const imatrix &m1,
const rmatrix &m2)
3255 #if(CXSC_INDEX_CHECK)
3256 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3260 INLINE imatrix operator +(
const rmatrix &m,
const imatrix_slice &ms)
3262 #if(CXSC_INDEX_CHECK)
3263 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3267 INLINE imatrix operator +(
const imatrix &m,
const rmatrix_slice &ms)
3269 #if(CXSC_INDEX_CHECK)
3270 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3274 INLINE imatrix operator +(
const rmatrix_slice &ms,
const imatrix &m)
3276 #if(CXSC_INDEX_CHECK)
3277 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3281 INLINE imatrix operator +(
const imatrix_slice &ms,
const rmatrix &m)
3283 #if(CXSC_INDEX_CHECK)
3284 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3288 INLINE imatrix operator +(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3290 #if(CXSC_INDEX_CHECK)
3291 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3295 INLINE imatrix operator +(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3297 #if(CXSC_INDEX_CHECK)
3298 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3302 INLINE imatrix &
operator +=(imatrix &m1,
const rmatrix &m2)
3304 #if(CXSC_INDEX_CHECK)
3305 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3309 INLINE imatrix &
operator +=(imatrix &m1,
const rmatrix_slice &ms)
3311 #if(CXSC_INDEX_CHECK)
3312 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3318 INLINE imatrix operator -(
const rmatrix &m1,
const imatrix &m2)
3319 #if(CXSC_INDEX_CHECK)
3320 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3324 INLINE imatrix operator -(
const imatrix &m1,
const rmatrix &m2)
3326 #if(CXSC_INDEX_CHECK)
3327 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3331 INLINE imatrix operator -(
const rmatrix &m,
const imatrix_slice &ms)
3333 #if(CXSC_INDEX_CHECK)
3334 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3338 INLINE imatrix operator -(
const imatrix &m,
const rmatrix_slice &ms)
3340 #if(CXSC_INDEX_CHECK)
3341 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3345 INLINE imatrix operator -(
const rmatrix_slice &ms,
const imatrix &m)
3347 #if(CXSC_INDEX_CHECK)
3348 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3352 INLINE imatrix operator -(
const imatrix_slice &ms,
const rmatrix &m)
3354 #if(CXSC_INDEX_CHECK)
3355 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3359 INLINE imatrix operator -(
const rmatrix_slice &ms1,
const imatrix_slice &ms2)
3361 #if(CXSC_INDEX_CHECK)
3362 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3366 INLINE imatrix operator -(
const imatrix_slice &ms1,
const rmatrix_slice &ms2)
3368 #if(CXSC_INDEX_CHECK)
3369 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3373 INLINE imatrix &operator -=(imatrix &m1,
const rmatrix &m2)
3375 #if(CXSC_INDEX_CHECK)
3376 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3380 INLINE imatrix &operator -=(imatrix &m1,
const rmatrix_slice &ms)
3382 #if(CXSC_INDEX_CHECK)
3383 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3389 INLINE imatrix
operator *(
const rmatrix &m1,
const imatrix &m2)
3390 #if(CXSC_INDEX_CHECK)
3391 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3395 INLINE imatrix
operator *(
const imatrix &m1,
const rmatrix &m2)
3397 #if(CXSC_INDEX_CHECK)
3398 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3402 INLINE imatrix
operator *(
const rmatrix &m1,
const imatrix_slice &ms)
3404 #if(CXSC_INDEX_CHECK)
3405 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3409 INLINE imatrix
operator *(
const imatrix &m1,
const rmatrix_slice &ms)
3411 #if(CXSC_INDEX_CHECK)
3412 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3416 INLINE imatrix
operator *(
const rmatrix_slice &ms,
const imatrix &m1)
3418 #if(CXSC_INDEX_CHECK)
3419 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3423 INLINE imatrix
operator *(
const imatrix_slice &ms,
const rmatrix &m1)
3425 #if(CXSC_INDEX_CHECK)
3426 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3430 INLINE imatrix
operator *(
const rmatrix_slice &ms1,
const imatrix_slice &ms2)
3432 #if(CXSC_INDEX_CHECK)
3433 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3437 INLINE imatrix
operator *(
const imatrix_slice &ms1,
const rmatrix_slice &ms2)
3439 #if(CXSC_INDEX_CHECK)
3440 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3444 INLINE imatrix &
operator *=(imatrix &m1,
const rmatrix &m2)
3446 #if(CXSC_INDEX_CHECK)
3447 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3451 INLINE imatrix &
operator *=(imatrix &m1,
const rmatrix_slice &ms)
3453 #if(CXSC_INDEX_CHECK)
3454 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3460 INLINE imatrix operator |(
const rmatrix &m1,
const imatrix &m2)
3461 #if(CXSC_INDEX_CHECK)
3462 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3466 INLINE imatrix operator |(
const imatrix &m1,
const rmatrix &m2)
3468 #if(CXSC_INDEX_CHECK)
3469 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3473 INLINE imatrix operator |(
const rmatrix &m,
const imatrix_slice &ms)
3475 #if(CXSC_INDEX_CHECK)
3476 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3480 INLINE imatrix operator |(
const imatrix &m,
const rmatrix_slice &ms)
3482 #if(CXSC_INDEX_CHECK)
3483 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3487 INLINE imatrix operator |(
const rmatrix_slice &ms,
const imatrix &m)
3489 #if(CXSC_INDEX_CHECK)
3490 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3494 INLINE imatrix operator |(
const imatrix_slice &ms,
const rmatrix &m)
3496 #if(CXSC_INDEX_CHECK)
3497 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3501 INLINE imatrix operator |(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3503 #if(CXSC_INDEX_CHECK)
3504 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3508 INLINE imatrix operator |(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3510 #if(CXSC_INDEX_CHECK)
3511 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3515 INLINE imatrix &operator |=(imatrix &m1,
const rmatrix &m2)
3517 #if(CXSC_INDEX_CHECK)
3518 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3522 INLINE imatrix &operator |=(imatrix &m1,
const rmatrix_slice &ms)
3524 #if(CXSC_INDEX_CHECK)
3525 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3531 INLINE imatrix operator &(
const rmatrix &m1,
const imatrix &m2)
3532 #if(CXSC_INDEX_CHECK)
3533 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3537 INLINE imatrix operator &(
const imatrix &m1,
const rmatrix &m2)
3539 #if(CXSC_INDEX_CHECK)
3540 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3544 INLINE imatrix operator &(
const rmatrix &m,
const imatrix_slice &ms)
3546 #if(CXSC_INDEX_CHECK)
3547 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3551 INLINE imatrix operator &(
const imatrix &m,
const rmatrix_slice &ms)
3553 #if(CXSC_INDEX_CHECK)
3554 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3558 INLINE imatrix operator &(
const rmatrix_slice &ms,
const imatrix &m)
3560 #if(CXSC_INDEX_CHECK)
3561 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3565 INLINE imatrix operator &(
const imatrix_slice &ms,
const rmatrix &m)
3567 #if(CXSC_INDEX_CHECK)
3568 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3572 INLINE imatrix operator &(
const rmatrix_slice &m1,
const imatrix_slice &m2)
3574 #if(CXSC_INDEX_CHECK)
3575 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3579 INLINE imatrix operator &(
const imatrix_slice &m1,
const rmatrix_slice &m2)
3581 #if(CXSC_INDEX_CHECK)
3582 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3586 INLINE imatrix &operator &=(imatrix &m1,
const rmatrix &m2)
3588 #if(CXSC_INDEX_CHECK)
3589 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3593 INLINE imatrix &operator &=(imatrix &m1,
const rmatrix_slice &ms)
3595 #if(CXSC_INDEX_CHECK)
3596 throw(ERROR_IMATRIX_OP_WITH_WRONG_DIM);
3604 INLINE imatrix operator |(
const rmatrix &m1,
const rmatrix &m2)
3605 #if(CXSC_INDEX_CHECK)
3606 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3610 INLINE imatrix operator |(
const rmatrix &m,
const rmatrix_slice &ms)
3612 #if(CXSC_INDEX_CHECK)
3613 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3617 INLINE imatrix operator |(
const rmatrix_slice &ms,
const rmatrix &m)
3619 #if(CXSC_INDEX_CHECK)
3620 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
3624 INLINE imatrix operator |(
const rmatrix_slice &m1,
const rmatrix_slice &m2)
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();
3649 INLINE
bool operator ==(
const imatrix &m1,
const imatrix_slice &ms)
throw();
3651 INLINE
bool operator !=(
const imatrix &m1,
const imatrix_slice &ms)
throw();
3653 INLINE
bool operator <(
const imatrix &m1,
const imatrix_slice &ms)
throw();
3655 INLINE
bool operator <=(
const imatrix &m1,
const imatrix_slice &ms)
throw();
3657 INLINE
bool operator >(
const imatrix &m1,
const imatrix_slice &ms)
throw();
3659 INLINE
bool operator >=(
const imatrix &m1,
const imatrix_slice &ms)
throw();
3664 INLINE
bool operator ==(
const imatrix_slice &m1,
const imatrix_slice &m2)
throw();
3666 INLINE
bool operator !=(
const imatrix_slice &m1,
const imatrix_slice &m2)
throw();
3668 INLINE
bool operator <(
const imatrix_slice &m1,
const imatrix_slice &m2)
throw();
3670 INLINE
bool operator <=(
const imatrix_slice &m1,
const imatrix_slice &m2)
throw();
3672 INLINE
bool operator >(
const imatrix_slice &m1,
const imatrix_slice &m2)
throw();
3674 INLINE
bool operator >=(
const imatrix_slice &m1,
const imatrix_slice &m2)
throw();
3679 INLINE
bool operator !(
const imatrix &ms)
throw();
3681 INLINE
bool operator !(
const imatrix_slice &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();
3695 rmatrix
CompMat (
const imatrix& );
3697 imatrix
Id (
const imatrix& );
3699 imatrix
transp (
const imatrix& );
3703 INLINE
int RowLen (
const imatrix& );
3705 INLINE
int ColLen (
const imatrix& );
3707 INLINE
int RowLen (
const imatrix_slice& );
3709 INLINE
int ColLen (
const imatrix_slice& );
3715 #ifdef _CXSC_INCL_INL
3716 #include "matrix.inl"
3717 #include "imatrix.inl"
3720 #ifdef _CXSC_CIVECTOR_HPP_INCLUDED
3721 # ifdef _CXSC_INCL_INL
3722 # include "civecimat.inl"
3724 # include "civecimat.hpp"
3728 #ifdef _CXSC_CVECTOR_HPP_INCLUDED
3729 # ifdef _CXSC_INCL_INL
3730 # include "cvecimat.inl"
3732 # include "cvecimat.hpp"
3736 #ifdef _CXSC_CMATRIX_HPP_INCLUDED
3737 # ifdef _CXSC_INCL_INL
3738 # include "cmatimat.inl"
3740 # include "cmatimat.hpp"
3744 #ifdef _CXSC_LIVECTOR_HPP_INCLUDED
3745 # ifdef _CXSC_INCL_INL
3746 # include "livecimat.inl"
3748 # include "livecimat.hpp"
3752 #ifdef _CXSC_LRVECTOR_HPP_INCLUDED
3753 # ifdef _CXSC_INCL_INL
3754 # include "lrvecimat.inl"
3756 # include "lrvecimat.hpp"
3760 #ifdef _CXSC_LRMATRIX_HPP_INCLUDED
3761 # ifdef _CXSC_INCL_INL
3762 # include "lrmatimat.inl"
3764 # include "lrmatimat.hpp"
3769 #ifdef CXSC_USE_BLAS
3770 #define _CXSC_BLAS_IMATRIX
3771 #include "cxsc_blas.inl"