26 #ifndef _CXSC_LRMATRIX_HPP_INCLUDED 27 #define _CXSC_LRMATRIX_HPP_INCLUDED 29 #include "xscclass.hpp" 32 #include "l_rvector.hpp" 35 #include "rmatrix.hpp" 40 class l_rmatrix_slice;
55 int size,start,offset;
61 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
68 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
75 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
82 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
88 template<
typename S,
typename T>
89 friend inline void addDot(
const S &x,
const T &y,
dotprecision &val);
92 #ifdef _CXSC_FRIEND_TPL 94 template <
class MV1,
class MV2>
friend MV1 &_mvmvassign(MV1 &v,
const MV2 &rv)
96 throw(ERROR__OP_WITH_WRONG_DIM<MV1>);
100 template <
class MV,
class S>
friend MV &_mvsassign(MV &v,
const S &r)
throw();
101 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
102 #if(CXSC_INDEX_CHECK) 103 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
107 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
throw();
108 template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
throw();
109 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
110 #if(CXSC_INDEX_CHECK) 111 throw(OP_WITH_WRONG_DIM);
115 template <
class DP,
class MV1,
class MV2>
friend void _mvmvaccu(DP &dp,
const MV1 & rv1,
const MV2 &rv2)
116 #if(CXSC_INDEX_CHECK) 117 throw(OP_WITH_WRONG_DIM);
123 template <
class MV1,
class MV2,
class S>
friend S _mvmvlmult(
const MV1 & rv1,
const MV2 &rv2)
124 #if(CXSC_INDEX_CHECK) 125 throw(ERROR__OP_WITH_WRONG_DIM<MV1>);
129 template <
class V,
class MV,
class S>
friend S _vmvlmult(
const V &rv1,
const MV &rv2)
130 #if(CXSC_INDEX_CHECK) 131 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
135 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
throw();
136 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
137 #if(CXSC_INDEX_CHECK) 138 throw(ERROR__OP_WITH_WRONG_DIM<E>);
142 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
143 #if(CXSC_INDEX_CHECK) 144 throw(ERROR__OP_WITH_WRONG_DIM<E>);
148 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
149 #if(CXSC_INDEX_CHECK) 150 throw(ERROR__OP_WITH_WRONG_DIM<E>);
154 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
155 #if(CXSC_INDEX_CHECK) 156 throw(ERROR__OP_WITH_WRONG_DIM<E>);
160 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
161 #if(CXSC_INDEX_CHECK) 162 throw(ERROR__OP_WITH_WRONG_DIM<E>);
166 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
throw();
167 template <
class MV,
class S>
friend MV &_mvsmultassign(MV &v,
const S &r)
throw();
168 template <
class MV,
class S>
friend MV &_mvsplusassign(MV &v,
const S &r)
throw();
169 template <
class MV,
class S>
friend MV &_mvsminusassign(MV &v,
const S &r)
throw();
170 template <
class MV,
class S>
friend MV &_mvsdivassign(MV &v,
const S &r)
throw();
171 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
172 #if(CXSC_INDEX_CHECK) 173 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
177 template <
class V,
class MV>
friend V &_vmvplusassign(V &rv,
const MV &v)
178 #if(CXSC_INDEX_CHECK) 179 throw(ERROR__OP_WITH_WRONG_DIM<V>);
183 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
184 #if(CXSC_INDEX_CHECK) 185 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
189 template <
class V,
class MV>
friend V &_vmvminusassign(V &rv,
const MV &v)
190 #if(CXSC_INDEX_CHECK) 191 throw(ERROR__OP_WITH_WRONG_DIM<V>);
196 template <
class V,
class MV>
friend V &_vmvsetinf(V &rv,
const MV &v)
197 #if(CXSC_INDEX_CHECK) 198 throw(ERROR__OP_WITH_WRONG_DIM<V>);
202 template <
class V,
class MV>
friend V &_vmvsetsup(V &rv,
const MV &v)
203 #if(CXSC_INDEX_CHECK) 204 throw(ERROR__OP_WITH_WRONG_DIM<V>);
208 template <
class V,
class MV>
friend V &_vmvusetinf(V &rv,
const MV &v)
209 #if(CXSC_INDEX_CHECK) 210 throw(ERROR__OP_WITH_WRONG_DIM<V>);
214 template <
class V,
class MV>
friend V &_vmvusetsup(V &rv,
const MV &v)
215 #if(CXSC_INDEX_CHECK) 216 throw(ERROR__OP_WITH_WRONG_DIM<V>);
226 explicit INLINE
l_rmatrix_subv (
l_real *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) { }
239 #if(CXSC_INDEX_CHECK) 240 throw(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC);
248 #if(CXSC_INDEX_CHECK) 249 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG);
255 #if(CXSC_INDEX_CHECK) 256 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG);
268 #if(CXSC_INDEX_CHECK) 269 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
275 #if(CXSC_INDEX_CHECK) 276 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
282 #if(CXSC_INDEX_CHECK) 283 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
289 #if(CXSC_INDEX_CHECK) 290 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
305 #if(CXSC_INDEX_CHECK) 306 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
312 #if(CXSC_INDEX_CHECK) 313 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
319 #if(CXSC_INDEX_CHECK) 320 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
326 #if(CXSC_INDEX_CHECK) 327 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
338 #if(CXSC_INDEX_CHECK) 339 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
345 #if(CXSC_INDEX_CHECK) 346 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
352 #if(CXSC_INDEX_CHECK) 353 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
359 #if(CXSC_INDEX_CHECK) 360 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
375 #if(CXSC_INDEX_CHECK) 376 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
382 #if(CXSC_INDEX_CHECK) 383 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
389 #if(CXSC_INDEX_CHECK) 390 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
396 #if(CXSC_INDEX_CHECK) 397 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
409 class l_rmatrix_slice;
422 int lb1,ub1,lb2,ub2,xsize,ysize;
426 #ifdef _CXSC_FRIEND_TPL 428 template <
class S,
class M>
friend void _smconstr(S &s,
const M &m)
429 #if(CXSC_INDEX_CHECK) 430 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>,ERROR__USE_OF_UNINITIALIZED_OBJ<M>);
434 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
435 #if(CXSC_INDEX_CHECK) 436 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
440 template <
class M1,
class M2,
class S>
friend M1 &_mmassign(M1 &m1,
const M2 &m,S ms)
throw();
441 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
throw();
442 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
443 #if(CXSC_INDEX_CHECK) 444 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
448 template <
class M,
class S>
friend M &_msassign(M &m,
const S &r)
throw();
449 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
450 #if(CXSC_INDEX_CHECK) 451 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
455 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
throw();
456 template <
class M>
friend int _mlb(
const M &m,
const int &i)
457 #if(CXSC_INDEX_CHECK) 458 throw(ERROR__WRONG_ROW_OR_COL<M>);
462 template <
class M>
friend int _mub(
const M &m,
const int &i)
463 #if(CXSC_INDEX_CHECK) 464 throw(ERROR__WRONG_ROW_OR_COL<M>);
468 template <
class M>
friend M &_msetlb(M &m,
const int &i,
const int &j)
469 #if(CXSC_INDEX_CHECK) 470 throw(ERROR__WRONG_ROW_OR_COL<M>);
474 template <
class M>
friend M &_msetub(M &m,
const int &i,
const int &j)
475 #if(CXSC_INDEX_CHECK) 476 throw(ERROR__WRONG_ROW_OR_COL<M>);
480 template <
class M>
friend void _mresize(M &A)
throw();
481 template <
class M,
class S>
friend void _mresize(M &A,
const int &m,
const int &n)
482 #if(CXSC_INDEX_CHECK) 483 throw(ERROR__WRONG_BOUNDARIES<M>);
487 template <
class M,
class S>
friend void _mresize(M &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
488 #if(CXSC_INDEX_CHECK) 489 throw(ERROR__WRONG_BOUNDARIES<M>);
493 template <
class M,
class E>
friend E _mabs(
const M &m)
throw();
494 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
throw();
496 template <
class M1,
class M2,
class E>
friend E _mmplus(
const M1 &m1,
const M2 &m2)
497 #if(CXSC_INDEX_CHECK) 498 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
502 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
503 #if(CXSC_INDEX_CHECK) 504 throw(ERROR__OP_WITH_WRONG_DIM<M>);
508 template <
class M>
friend M _mminus(
const M &m)
throw();
509 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
throw();
510 template <
class M1,
class M2,
class E>
friend E _mmminus(
const M1 &m1,
const M2 &m2)
511 #if(CXSC_INDEX_CHECK) 512 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
516 template <
class M1,
class M2>
friend M1 &_mmplusassign(M1 &m1,
const M2 &m2)
517 #if(CXSC_INDEX_CHECK) 518 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
522 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
523 #if(CXSC_INDEX_CHECK) 524 throw(ERROR__OP_WITH_WRONG_DIM<M>);
528 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
529 #if(CXSC_INDEX_CHECK) 530 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
534 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
535 #if(CXSC_INDEX_CHECK) 536 throw(ERROR__OP_WITH_WRONG_DIM<E>);
540 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
541 #if(CXSC_INDEX_CHECK) 542 throw(ERROR__OP_WITH_WRONG_DIM<E>);
546 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
547 #if(CXSC_INDEX_CHECK) 548 throw(ERROR__OP_WITH_WRONG_DIM<E>);
552 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
553 #if(CXSC_INDEX_CHECK) 554 throw(ERROR__OP_WITH_WRONG_DIM<E>);
558 template <
class M1,
class M2>
friend M1 &_mmminusassign(M1 &m1,
const M2 &m2)
559 #if(CXSC_INDEX_CHECK) 560 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
564 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
565 #if(CXSC_INDEX_CHECK) 566 throw(ERROR__OP_WITH_WRONG_DIM<M>);
570 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
571 #if(CXSC_INDEX_CHECK) 572 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
576 template <
class M1,
class M2,
class E>
friend E _mmlmult(
const M1 &m1,
const M2 &m2)
577 #if(CXSC_INDEX_CHECK) 578 throw(ERROR__OP_WITH_WRONG_DIM<E>);
582 template <
class M1,
class M2,
class S>
friend M1 &_mmlmultassign(M1 &m1,
const M2 &m2)
583 #if(CXSC_INDEX_CHECK) 584 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
588 template <
class M,
class MS,
class E>
friend E _mmslmult(
const M &m1,
const MS &ms)
589 #if(CXSC_INDEX_CHECK) 590 throw(ERROR__OP_WITH_WRONG_DIM<E>);
594 template <
class MS,
class M,
class E>
friend E _msmlmult(
const MS &ms,
const M &m2)
595 #if(CXSC_INDEX_CHECK) 596 throw(ERROR__OP_WITH_WRONG_DIM<E>);
600 template <
class M,
class MS,
class S>
friend M &_mmslmultassign(M &m1,
const MS &ms)
601 #if(CXSC_INDEX_CHECK) 602 throw(ERROR__OP_WITH_WRONG_DIM<M>);
606 template <
class MS1,
class MS2,
class E>
friend E _msmslmult(
const MS1 &ms1,
const MS2 &ms2)
607 #if(CXSC_INDEX_CHECK) 608 throw(ERROR__OP_WITH_WRONG_DIM<E>);
612 template <
class M1,
class M2,
class E>
friend E _mmconv(
const M1 &m1,
const M2 &m2)
613 #if(CXSC_INDEX_CHECK) 614 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
618 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
619 #if(CXSC_INDEX_CHECK) 620 throw(ERROR__OP_WITH_WRONG_DIM<M>);
625 template <
class S,
class M,
class E>
friend E _smmult(
const S &c,
const M &m)
throw();
626 template <
class M,
class S>
friend M &_msmultassign(M &m,
const S &c)
throw();
627 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
throw();
628 template <
class M,
class S,
class E>
friend E _msdiv(
const M &m,
const S &c)
throw();
629 template <
class M,
class S>
friend M &_msdivassign(M &m,
const S &c)
throw();
630 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
throw();
632 template <
class M,
class V,
class E>
friend E _mvlmult(
const M &m,
const V &v)
633 #if(CXSC_INDEX_CHECK) 634 throw(ERROR__OP_WITH_WRONG_DIM<M>);
638 template <
class V,
class M,
class E>
friend E _vmlmult(
const V &v,
const M &m)
639 #if(CXSC_INDEX_CHECK) 640 throw(ERROR__OP_WITH_WRONG_DIM<M>);
644 template <
class V,
class M,
class S>
friend V &_vmlmultassign(V &v,
const M &m)
645 #if(CXSC_INDEX_CHECK) 646 throw(ERROR__OP_WITH_WRONG_DIM<M>);
650 template <
class VS,
class M,
class S>
friend VS &_vsmlmultassign(VS &v,
const M &m)
651 #if(CXSC_INDEX_CHECK) 652 throw(ERROR__OP_WITH_WRONG_DIM<M>);
657 template <
class M>
friend void *_mvoid(
const M &m)
throw();
658 template <
class M>
friend bool _mnot(
const M &m)
throw();
659 template <
class MS>
friend void *_msvoid(
const MS &ms)
throw();
660 template <
class MS>
friend bool _msnot(
const MS &ms)
throw();
661 template <
class M1,
class M2>
friend bool _mmeq(
const M1 &m1,
const M2 &m2)
throw();
662 template <
class M1,
class M2>
friend bool _mmneq(
const M1 &m1,
const M2 &m2)
throw();
663 template <
class M1,
class M2>
friend bool _mmless(
const M1 &m1,
const M2 &m2)
throw();
664 template <
class M1,
class M2>
friend bool _mmleq(
const M1 &m1,
const M2 &m2)
throw();
665 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
throw();
666 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
throw();
667 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
throw();
668 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
throw();
669 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
throw();
670 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
throw();
671 template <
class M>
friend std::ostream &_mout(std::ostream &s,
const M &r)
throw();
672 template <
class M>
friend std::istream &_min(std::istream &s,M &r)
throw();
675 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
676 #if(CXSC_INDEX_CHECK) 677 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
681 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
682 #if(CXSC_INDEX_CHECK) 683 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
688 template <
class M1,
class M2,
class E>
friend E _mmlimult(
const M1 &m1,
const M2 &m2)
689 #if(CXSC_INDEX_CHECK) 690 throw(ERROR__OP_WITH_WRONG_DIM<E>);
695 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
696 #if(CXSC_INDEX_CHECK) 697 throw(ERROR__OP_WITH_WRONG_DIM<E>);
702 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
703 #if(CXSC_INDEX_CHECK) 704 throw(ERROR__OP_WITH_WRONG_DIM<E>);
709 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
710 #if(CXSC_INDEX_CHECK) 711 throw(ERROR__OP_WITH_WRONG_DIM<E>);
716 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
717 #if(CXSC_INDEX_CHECK) 718 throw(ERROR__OP_WITH_WRONG_DIM<E>);
722 template <
class M1,
class M2,
class E>
friend E _mmsect(
const M1 &m1,
const M2 &m2)
723 #if(CXSC_INDEX_CHECK) 724 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
728 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
729 #if(CXSC_INDEX_CHECK) 730 throw(ERROR__OP_WITH_WRONG_DIM<M>);
735 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
736 #if(CXSC_INDEX_CHECK) 737 throw(ERROR__OP_WITH_WRONG_DIM<E>);
745 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
746 #if(CXSC_INDEX_CHECK) 747 throw(ERROR__OP_WITH_WRONG_DIM<M>);
751 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
752 #if(CXSC_INDEX_CHECK) 753 throw(ERROR__OP_WITH_WRONG_DIM<M>);
757 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
758 #if(CXSC_INDEX_CHECK) 759 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
766 template <
class M,
class E>
friend E _mdiam(
const M &m)
throw();
767 template <
class M,
class E>
friend E _mmid(
const M &m)
throw();
768 template <
class MS,
class E>
friend E _msdiam(
const MS &ms)
throw();
769 template <
class MS,
class E>
friend E _msmid(
const MS &ms)
throw();
770 template <
class M,
class E>
friend E _minf(
const M &m)
throw();
771 template <
class MS,
class E>
friend E _msinf(
const MS &ms)
throw();
772 template <
class M,
class E>
friend E _msup(
const M &m)
throw();
773 template <
class MS,
class E>
friend E _mssup(
const MS &ms)
throw();
774 template <
class M1,
class M2>
friend M1 &_mmsetinf(M1 &m1,
const M2 &m2)
775 #if(CXSC_INDEX_CHECK) 776 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
780 template <
class M1,
class M2>
friend M1 &_mmsetsup(M1 &m1,
const M2 &m2)
781 #if(CXSC_INDEX_CHECK) 782 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
786 template <
class M1,
class M2>
friend M1 &_mmusetinf(M1 &m1,
const M2 &m2)
787 #if(CXSC_INDEX_CHECK) 788 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
792 template <
class M1,
class M2>
friend M1 &_mmusetsup(M1 &m1,
const M2 &m2)
793 #if(CXSC_INDEX_CHECK) 794 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
798 template <
class MS1,
class M2>
friend MS1 &_msmsetinf(MS1 &ms1,
const M2 &m2)
799 #if(CXSC_INDEX_CHECK) 800 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
804 template <
class MS1,
class M2>
friend MS1 &_msmsetsup(MS1 &ms1,
const M2 &m2)
805 #if(CXSC_INDEX_CHECK) 806 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
810 template <
class MS1,
class M2>
friend MS1 &_msmusetinf(MS1 &ms1,
const M2 &m2)
811 #if(CXSC_INDEX_CHECK) 812 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
816 template <
class MS1,
class M2>
friend MS1 &_msmusetsup(MS1 &ms1,
const M2 &m2)
817 #if(CXSC_INDEX_CHECK) 818 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
823 template <
class M1,
class M2,
class S>
friend M1 &_mmlimultassign(M1 &m1,
const M2 &m2)
824 #if(CXSC_INDEX_CHECK) 825 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
830 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
831 #if(CXSC_INDEX_CHECK) 832 throw(ERROR__OP_WITH_WRONG_DIM<M>);
837 template <
class M1,
class M2>
friend M1 &_mmconvassign(M1 &m1,
const M2 &m2)
838 #if(CXSC_INDEX_CHECK) 839 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
843 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
844 #if(CXSC_INDEX_CHECK) 845 throw(ERROR__OP_WITH_WRONG_DIM<M>);
849 template <
class MS,
class M>
friend MS &_msmconvassign(MS &ms,
const M &m1)
850 #if(CXSC_INDEX_CHECK) 851 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
856 template <
class M1,
class M2>
friend M1 &_mmsectassign(M1 &m1,
const M2 &m2)
857 #if(CXSC_INDEX_CHECK) 858 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
862 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
863 #if(CXSC_INDEX_CHECK) 864 throw(ERROR__OP_WITH_WRONG_DIM<M>);
868 template <
class MS,
class M>
friend MS &_msmsectassign(MS &ms,
const M &m1)
869 #if(CXSC_INDEX_CHECK) 870 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
875 template <
class V,
class M,
class S>
friend V &_vmlimultassign(V &v,
const M &m)
876 #if(CXSC_INDEX_CHECK) 877 throw(ERROR__OP_WITH_WRONG_DIM<M>);
881 template <
class VS,
class M,
class S>
friend VS &_vsmlimultassign(VS &v,
const M &m)
882 #if(CXSC_INDEX_CHECK) 883 throw(ERROR__OP_WITH_WRONG_DIM<M>);
900 explicit INLINE
l_rmatrix(
const int &m,
const int &n)
901 #if(CXSC_INDEX_CHECK) 902 throw(ERROR_LRMATRIX_WRONG_BOUNDARIES);
906 explicit INLINE
l_rmatrix(
const int &m1,
const int &n1,
const int &m2,
const int &n2)
908 #if(CXSC_INDEX_CHECK) 909 throw(ERROR_LRMATRIX_WRONG_BOUNDARIES);
953 INLINE ~
l_rmatrix()
throw() {
delete [] dat; }
959 #if(CXSC_INDEX_CHECK) 960 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
966 #if(CXSC_INDEX_CHECK) 967 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
975 #if(CXSC_INDEX_CHECK) 976 throw(ERROR_LRMATRIX_SUB_ARRAY_TOO_BIG);
982 #if(CXSC_INDEX_CHECK) 983 throw(ERROR_LRMATRIX_SUB_ARRAY_TOO_BIG);
987 INLINE
operator void*()
throw();
1005 int offset1,offset2,mxsize,mysize;
1006 int start1,end1,start2,end2,sxsize,sysize;
1010 #ifdef _CXSC_FRIEND_TPL 1012 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
1013 #if(CXSC_INDEX_CHECK) 1014 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<MS>);
1018 template <
class MS,
class M>
friend MS &_msmassign(MS &ms,
const M &m)
1019 #if(CXSC_INDEX_CHECK) 1020 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1024 template <
class MS1,
class MS2>
friend MS1 &_msmsassign(MS1 &ms1,
const MS2 &ms)
1025 #if(CXSC_INDEX_CHECK) 1026 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1030 template <
class M,
class MS2,
class S>
friend M &_mmsassign(M &m,
const MS2 &ms)
throw();
1031 template <
class MS,
class S>
friend MS &_mssassign(MS &ms,
const S &r)
throw();
1033 template <
class MS>
friend int _mslb(
const MS &ms,
const int &i)
1034 #if(CXSC_INDEX_CHECK) 1035 throw(ERROR__WRONG_ROW_OR_COL<MS>);
1039 template <
class MS>
friend int _msub(
const MS &ms,
const int &i)
1040 #if(CXSC_INDEX_CHECK) 1041 throw(ERROR__WRONG_ROW_OR_COL<MS>);
1045 template <
class MS,
class E>
friend E _msabs(
const MS &ms)
throw();
1047 template <
class MS,
class E>
friend E _msminus(
const MS &ms)
throw();
1048 template <
class M,
class MS,
class E>
friend E _mmsplus(
const M &m,
const MS &ms)
1049 #if(CXSC_INDEX_CHECK) 1050 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1054 template <
class MS1,
class MS2,
class E>
friend E _msmsplus(
const MS1 &m1,
const MS2 &m2)
1055 #if(CXSC_INDEX_CHECK) 1056 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1060 template <
class M,
class MS>
friend M &_mmsplusassign(M &m1,
const MS &ms)
1061 #if(CXSC_INDEX_CHECK) 1062 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1066 template <
class MS,
class M>
friend MS &_msmplusassign(MS &ms,
const M &m1)
1067 #if(CXSC_INDEX_CHECK) 1068 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1072 template <
class MS1,
class MS2>
friend MS1 &_msmsplusassign(MS1 &ms1,
const MS2 &ms2)
1073 #if(CXSC_INDEX_CHECK) 1074 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1078 template <
class M,
class MS,
class E>
friend E _mmsminus(
const M &m,
const MS &ms)
1079 #if(CXSC_INDEX_CHECK) 1080 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1084 template <
class MS,
class M,
class E>
friend E _msmminus(
const MS &ms,
const M &m)
1085 #if(CXSC_INDEX_CHECK) 1086 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1090 template <
class MS1,
class MS2,
class E>
friend E _msmsminus(
const MS1 &ms1,
const MS2 &ms2)
1091 #if(CXSC_INDEX_CHECK) 1092 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1096 template <
class M,
class MS>
friend M &_mmsminusassign(M &m1,
const MS &ms)
1097 #if(CXSC_INDEX_CHECK) 1098 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1102 template <
class MS,
class M>
friend MS &_msmminusassign(MS &ms,
const M &m1)
1103 #if(CXSC_INDEX_CHECK) 1104 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1108 template <
class MS1,
class MS2>
friend MS1 &_msmsminusassign(MS1 &ms1,
const MS2 &ms2)
1109 #if(CXSC_INDEX_CHECK) 1110 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1114 template <
class M,
class MS,
class E>
friend E _mmslmult(
const M &m1,
const MS &ms)
1115 #if(CXSC_INDEX_CHECK) 1116 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1120 template <
class MS,
class M,
class E>
friend E _msmlmult(
const MS &ms,
const M &m2)
1121 #if(CXSC_INDEX_CHECK) 1122 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1126 template <
class M,
class MS,
class S>
friend M &_mmslmultassign(M &m1,
const MS &ms)
1127 #if(CXSC_INDEX_CHECK) 1128 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1132 template <
class MS1,
class MS2,
class E>
friend E _msmslmult(
const MS1 &ms1,
const MS2 &ms2)
1133 #if(CXSC_INDEX_CHECK) 1134 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1138 template <
class M,
class MS,
class E>
friend E _mmsconv(
const M &m,
const MS &ms)
1139 #if(CXSC_INDEX_CHECK) 1140 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1144 template <
class MS1,
class MS2,
class E>
friend E _msmsconv(
const MS1 &m1,
const MS2 &m2)
1145 #if(CXSC_INDEX_CHECK) 1146 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1151 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
1152 #if(CXSC_INDEX_CHECK) 1153 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1157 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
1158 #if(CXSC_INDEX_CHECK) 1159 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1163 template <
class V,
class MS,
class S>
friend V &_vmslmultassign(V &v,
const MS &ms)
1164 #if(CXSC_INDEX_CHECK) 1165 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1170 template <
class S,
class MS,
class E>
friend E _smsmult(
const S &c,
const MS &ms)
throw();
1171 template <
class MS,
class S>
friend MS &_mssmultassign(MS &ms,
const S &c)
throw();
1172 template <
class MS,
class S,
class E>
friend E _mssdiv(
const MS &ms,
const S &c)
throw();
1173 template <
class MS,
class S>
friend MS &_mssdivassign(MS &ms,
const S &c)
throw();
1175 template <
class MS>
friend void *_msvoid(
const MS &ms)
throw();
1176 template <
class MS>
friend bool _msnot(
const MS &ms)
throw();
1177 template <
class M,
class MS>
friend bool _mmseq(
const M &m1,
const MS &ms)
throw();
1178 template <
class M,
class MS>
friend bool _mmsneq(
const M &m1,
const MS &ms)
throw();
1179 template <
class M,
class MS>
friend bool _mmsless(
const M &m1,
const MS &ms)
throw();
1180 template <
class M,
class MS>
friend bool _mmsleq(
const M &m1,
const MS &ms)
throw();
1181 template <
class MS,
class M>
friend bool _msmless(
const MS &ms,
const M &m1)
throw();
1182 template <
class MS,
class M>
friend bool _msmleq(
const MS &ms,
const M &m1)
throw();
1183 template <
class MS1,
class MS2>
friend bool _msmseq(
const MS1 &ms1,
const MS2 &ms2)
throw();
1184 template <
class MS1,
class MS2>
friend bool _msmsneq(
const MS1 &ms1,
const MS2 &ms2)
throw();
1185 template <
class MS1,
class MS2>
friend bool _msmsless(
const MS1 &ms1,
const MS2 &ms2)
throw();
1186 template <
class MS1,
class MS2>
friend bool _msmsleq(
const MS1 &ms1,
const MS2 &ms2)
throw();
1187 template <
class MS>
friend std::ostream &_msout(std::ostream &s,
const MS &r)
throw();
1188 template <
class MS>
friend std::istream &_msin(std::istream &s,MS &r)
throw();
1192 template <
class M,
class MS,
class E>
friend E _mmslimult(
const M &m1,
const MS &ms)
1193 #if(CXSC_INDEX_CHECK) 1194 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1198 template <
class MS,
class M,
class E>
friend E _msmlimult(
const MS &ms,
const M &m2)
1199 #if(CXSC_INDEX_CHECK) 1200 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1205 template <
class MS1,
class MS2,
class E>
friend E _msmslimult(
const MS1 &ms1,
const MS2 &ms2)
1206 #if(CXSC_INDEX_CHECK) 1207 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1212 template <
class M,
class MS,
class E>
friend E _mmssect(
const M &m,
const MS &ms)
1213 #if(CXSC_INDEX_CHECK) 1214 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1218 template <
class MS1,
class MS2,
class E>
friend E _msmssect(
const MS1 &m1,
const MS2 &m2)
1219 #if(CXSC_INDEX_CHECK) 1220 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1227 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
1228 #if(CXSC_INDEX_CHECK) 1229 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1233 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1234 #if(CXSC_INDEX_CHECK) 1235 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1242 template <
class M1,
class MS2>
friend M1 &_mmssetinf(M1 &m1,
const MS2 &ms2)
1243 #if(CXSC_INDEX_CHECK) 1244 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1248 template <
class M1,
class MS2>
friend M1 &_mmssetsup(M1 &m1,
const MS2 &ms2)
1249 #if(CXSC_INDEX_CHECK) 1250 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1254 template <
class M1,
class MS2>
friend M1 &_mmsusetinf(M1 &m1,
const MS2 &ms2)
1255 #if(CXSC_INDEX_CHECK) 1256 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1260 template <
class M1,
class MS2>
friend M1 &_mmsusetsup(M1 &m1,
const MS2 &ms2)
1261 #if(CXSC_INDEX_CHECK) 1262 throw(ERROR__OP_WITH_WRONG_DIM<M1>);
1266 template <
class MS1,
class MS2>
friend MS1 &_msmssetinf(MS1 &ms1,
const MS2 &ms2)
1267 #if(CXSC_INDEX_CHECK) 1268 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1272 template <
class MS1,
class MS2>
friend MS1 &_msmssetsup(MS1 &ms1,
const MS2 &ms2)
1273 #if(CXSC_INDEX_CHECK) 1274 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1278 template <
class MS1,
class MS2>
friend MS1 &_msmsusetinf(MS1 &ms1,
const MS2 &ms2)
1279 #if(CXSC_INDEX_CHECK) 1280 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1284 template <
class MS1,
class MS2>
friend MS1 &_msmsusetsup(MS1 &ms1,
const MS2 &ms2)
1285 #if(CXSC_INDEX_CHECK) 1286 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1292 template <
class M,
class MS,
class S>
friend M &_mmslimultassign(M &m1,
const MS &ms)
1293 #if(CXSC_INDEX_CHECK) 1294 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1300 template <
class M,
class MS>
friend M &_mmsconvassign(M &m1,
const MS &ms)
1301 #if(CXSC_INDEX_CHECK) 1302 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1306 template <
class MS1,
class MS2>
friend MS1 &_msmsconvassign(MS1 &ms1,
const MS2 &ms2)
1307 #if(CXSC_INDEX_CHECK) 1308 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1313 template <
class M,
class MS>
friend M &_mmssectassign(M &m1,
const MS &ms)
1314 #if(CXSC_INDEX_CHECK) 1315 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1319 template <
class MS1,
class MS2>
friend MS1 &_msmssectassign(MS1 &ms1,
const MS2 &ms2)
1320 #if(CXSC_INDEX_CHECK) 1321 throw(ERROR__OP_WITH_WRONG_DIM<MS1>);
1332 template <
class V,
class MS,
class S>
friend V &_vmslimultassign(V &v,
const MS &ms)
1333 #if(CXSC_INDEX_CHECK) 1334 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1344 explicit INLINE
l_rmatrix_slice(
l_rmatrix &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) { }
1346 explicit INLINE
l_rmatrix_slice(
l_rmatrix_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) { }
1349 INLINE
l_rmatrix_slice(
const l_rmatrix_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) { }
1355 #if(CXSC_INDEX_CHECK) 1356 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
1363 #if(CXSC_INDEX_CHECK) 1364 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1370 #if(CXSC_INDEX_CHECK) 1371 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1379 #if(CXSC_INDEX_CHECK) 1380 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1386 #if(CXSC_INDEX_CHECK) 1387 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1393 #if(CXSC_INDEX_CHECK) 1394 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1400 #if(CXSC_INDEX_CHECK) 1401 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1409 #if(CXSC_INDEX_CHECK) 1410 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1416 #if(CXSC_INDEX_CHECK) 1417 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1423 #if(CXSC_INDEX_CHECK) 1424 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
1430 #if(CXSC_INDEX_CHECK) 1431 throw(ERROR_LRMATRIX_ROW_OR_COL_NOT_IN_MAT);
1439 #if(CXSC_INDEX_CHECK) 1440 throw(ERROR_LRMATRIX_SUB_ARRAY_TOO_BIG);
1446 #if(CXSC_INDEX_CHECK) 1447 throw(ERROR_LRMATRIX_SUB_ARRAY_TOO_BIG);
1453 #if(CXSC_INDEX_CHECK) 1454 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1460 #if(CXSC_INDEX_CHECK) 1461 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1467 #if(CXSC_INDEX_CHECK) 1468 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1474 #if(CXSC_INDEX_CHECK) 1475 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1481 #if(CXSC_INDEX_CHECK) 1482 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1488 #if(CXSC_INDEX_CHECK) 1489 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1495 #if(CXSC_INDEX_CHECK) 1496 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1502 #if(CXSC_INDEX_CHECK) 1503 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1509 #if(CXSC_INDEX_CHECK) 1510 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1516 #if(CXSC_INDEX_CHECK) 1517 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1523 #if(CXSC_INDEX_CHECK) 1524 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1530 #if(CXSC_INDEX_CHECK) 1531 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1537 #if(CXSC_INDEX_CHECK) 1538 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1544 #if(CXSC_INDEX_CHECK) 1545 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1551 #if(CXSC_INDEX_CHECK) 1552 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1558 #if(CXSC_INDEX_CHECK) 1559 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1571 INLINE
operator void*()
throw();
1582 INLINE l_rvector
operator /(
const l_rmatrix_subv &rv,
const l_real &s)
throw();
1584 INLINE l_rvector
operator *(
const l_rmatrix_subv &rv,
const l_real &s)
throw();
1586 INLINE l_rvector
operator *(
const l_real &s,
const l_rmatrix_subv &rv)
throw();
1591 INLINE l_rvector
abs(
const l_rmatrix_subv &mv)
throw();
1594 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1595 #if(CXSC_INDEX_CHECK) 1596 throw(OP_WITH_WRONG_DIM);
1600 INLINE
void accumulate(dotprecision &dp,
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1602 #if(CXSC_INDEX_CHECK) 1603 throw(OP_WITH_WRONG_DIM);
1607 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector &rv2)
1609 #if(CXSC_INDEX_CHECK) 1610 throw(OP_WITH_WRONG_DIM);
1614 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice & sl1,
const l_rmatrix_subv &rv2)
1616 #if(CXSC_INDEX_CHECK) 1617 throw(OP_WITH_WRONG_DIM);
1621 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector_slice &sl2)
1623 #if(CXSC_INDEX_CHECK) 1624 throw(OP_WITH_WRONG_DIM);
1630 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1631 #if(CXSC_INDEX_CHECK) 1632 throw(OP_WITH_WRONG_DIM);
1636 INLINE
void accumulate(idotprecision &dp,
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1638 #if(CXSC_INDEX_CHECK) 1639 throw(OP_WITH_WRONG_DIM);
1643 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector &rv2)
1645 #if(CXSC_INDEX_CHECK) 1646 throw(OP_WITH_WRONG_DIM);
1650 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice & sl1,
const l_rmatrix_subv &rv2)
1652 #if(CXSC_INDEX_CHECK) 1653 throw(OP_WITH_WRONG_DIM);
1657 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector_slice &sl2)
1659 #if(CXSC_INDEX_CHECK) 1660 throw(OP_WITH_WRONG_DIM);
1666 INLINE l_real
operator *(
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1667 #if(CXSC_INDEX_CHECK) 1668 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1672 INLINE l_real
operator *(
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1674 #if(CXSC_INDEX_CHECK) 1675 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1679 INLINE l_real
operator *(
const l_rmatrix_subv &rv1,
const l_rvector &rv2)
1681 #if(CXSC_INDEX_CHECK) 1682 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1686 INLINE l_real
operator *(
const l_rvector_slice &sl,
const l_rmatrix_subv &sv)
1688 #if(CXSC_INDEX_CHECK) 1689 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1693 INLINE l_real
operator *(
const l_rmatrix_subv &mv,
const l_rvector_slice &vs)
1695 #if(CXSC_INDEX_CHECK) 1696 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1702 INLINE l_rvector operator +(
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1703 #if(CXSC_INDEX_CHECK) 1704 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1708 INLINE l_rvector operator +(
const l_rmatrix_subv &rv1,
const l_rvector &rv2)
1710 #if(CXSC_INDEX_CHECK) 1711 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1715 INLINE l_rvector operator +(
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1717 #if(CXSC_INDEX_CHECK) 1718 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1722 INLINE l_rvector operator +(
const l_rvector_slice &sl,
const l_rmatrix_subv &mv)
1724 #if(CXSC_INDEX_CHECK) 1725 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1729 INLINE l_rvector operator +(
const l_rmatrix_subv &mv,
const l_rvector_slice &sl)
1731 #if(CXSC_INDEX_CHECK) 1732 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1738 INLINE l_rvector operator -(
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1739 #if(CXSC_INDEX_CHECK) 1740 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1744 INLINE l_rvector operator -(
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1746 #if(CXSC_INDEX_CHECK) 1747 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1751 INLINE l_rvector operator -(
const l_rmatrix_subv &rv1,
const l_rvector &rv2)
1753 #if(CXSC_INDEX_CHECK) 1754 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1758 INLINE l_rvector operator -(
const l_rvector_slice &sl,
const l_rmatrix_subv &mv)
1760 #if(CXSC_INDEX_CHECK) 1761 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1765 INLINE l_rvector operator -(
const l_rmatrix_subv &mv,
const l_rvector_slice &sl)
1767 #if(CXSC_INDEX_CHECK) 1768 throw(ERROR_LRVECTOR_OP_WITH_WRONG_DIM);
1777 INLINE l_rmatrix
_l_rmatrix(
const l_rmatrix &rm)
throw();
1779 INLINE l_rmatrix
_l_rmatrix(
const l_rvector &v)
throw();
1781 INLINE l_rmatrix
_l_rmatrix(
const l_rvector_slice &v)
throw();
1783 INLINE l_rmatrix
_l_rmatrix(
const l_real &r)
throw();
1786 INLINE
int Lb(
const l_rmatrix &rm,
const int &i)
1787 #if(CXSC_INDEX_CHECK) 1788 throw(ERROR_LRMATRIX_WRONG_ROW_OR_COL);
1792 INLINE
int Ub(
const l_rmatrix &rm,
const int &i)
1794 #if(CXSC_INDEX_CHECK) 1795 throw(ERROR_LRMATRIX_WRONG_ROW_OR_COL);
1799 INLINE
int Lb(
const l_rmatrix_slice &rm,
const int &i)
1801 #if(CXSC_INDEX_CHECK) 1802 throw(ERROR_LRMATRIX_WRONG_ROW_OR_COL);
1806 INLINE
int Ub(
const l_rmatrix_slice &rm,
const int &i)
1808 #if(CXSC_INDEX_CHECK) 1809 throw(ERROR_LRMATRIX_WRONG_ROW_OR_COL);
1813 INLINE l_rmatrix &
SetLb(l_rmatrix &m,
const int &i,
const int &j)
1815 #if(CXSC_INDEX_CHECK) 1816 throw(ERROR_LRMATRIX_WRONG_ROW_OR_COL);
1820 INLINE l_rmatrix &
SetUb(l_rmatrix &m,
const int &i,
const int &j)
1822 #if(CXSC_INDEX_CHECK) 1823 throw(ERROR_LRMATRIX_WRONG_ROW_OR_COL);
1827 INLINE
void Resize(l_rmatrix &A)
throw();
1830 INLINE
void Resize(l_rmatrix &A,
const int &m,
const int &n)
1831 #if(CXSC_INDEX_CHECK) 1832 throw(ERROR_LRMATRIX_WRONG_BOUNDARIES);
1836 INLINE
void Resize(l_rmatrix &A,
const int &m1,
const int &m2,
const int &n1,
const int &n2)
1838 #if(CXSC_INDEX_CHECK) 1839 throw(ERROR_LRMATRIX_WRONG_BOUNDARIES);
1845 INLINE l_rmatrix
abs(
const l_rmatrix &m)
throw();
1847 INLINE l_rmatrix
abs(
const l_rmatrix_slice &ms)
throw();
1852 INLINE l_rmatrix
operator *(
const l_real &c,
const l_rmatrix &m)
throw();
1854 INLINE l_rmatrix
operator *(
const l_real &c,
const l_rmatrix_slice &ms)
throw();
1856 INLINE l_rmatrix
operator *(
const l_rmatrix &m,
const l_real &c)
throw();
1858 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const l_real &c)
throw();
1860 INLINE l_rmatrix &
operator *=(l_rmatrix &m,
const l_real &c)
throw();
1862 INLINE l_rmatrix
operator /(
const l_rmatrix &m,
const l_real &c)
throw();
1864 INLINE l_rmatrix
operator /(
const l_rmatrix_slice &ms,
const l_real &c)
throw();
1866 INLINE l_rmatrix &
operator /=(l_rmatrix &m,
const l_real &c)
throw();
1871 INLINE l_rmatrix
operator *(
const real &c,
const l_rmatrix &m)
throw();
1873 INLINE l_rmatrix
operator *(
const real &c,
const l_rmatrix_slice &ms)
throw();
1875 INLINE l_rmatrix
operator *(
const l_rmatrix &m,
const real &c)
throw();
1877 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const real &c)
throw();
1879 INLINE l_rmatrix &
operator *=(l_rmatrix &m,
const real &c)
throw();
1881 INLINE l_rmatrix
operator /(
const l_rmatrix &m,
const real &c)
throw();
1883 INLINE l_rmatrix
operator /(
const l_rmatrix_slice &ms,
const real &c)
throw();
1885 INLINE l_rmatrix &
operator /=(l_rmatrix &m,
const real &c)
throw();
1889 INLINE l_rmatrix
operator *(
const l_real &c,
const rmatrix &m)
throw();
1891 INLINE l_rmatrix
operator *(
const l_real &c,
const rmatrix_slice &ms)
throw();
1893 INLINE l_rmatrix
operator *(
const rmatrix &m,
const l_real &c)
throw();
1895 INLINE l_rmatrix
operator *(
const rmatrix_slice &ms,
const l_real &c)
throw();
1897 INLINE l_rmatrix
operator /(
const rmatrix &m,
const l_real &c)
throw();
1899 INLINE l_rmatrix
operator /(
const rmatrix_slice &ms,
const l_real &c)
throw();
1906 INLINE l_rvector
operator *(
const l_rmatrix &m,
const l_rvector &v)
1907 #if(CXSC_INDEX_CHECK) 1908 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1912 INLINE l_rvector
operator *(
const l_rmatrix_slice &ms,
const l_rvector &v)
1914 #if(CXSC_INDEX_CHECK) 1915 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1919 INLINE l_rvector
operator *(
const l_rvector &v,
const l_rmatrix &m)
1921 #if(CXSC_INDEX_CHECK) 1922 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1926 INLINE l_rvector
operator *(
const l_rvector &v,
const l_rmatrix_slice &ms)
1928 #if(CXSC_INDEX_CHECK) 1929 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1933 INLINE l_rvector &
operator *=(l_rvector &v,
const l_rmatrix &m)
1935 #if(CXSC_INDEX_CHECK) 1936 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1940 INLINE l_rvector &
operator *=(l_rvector &v,
const l_rmatrix_slice &ms)
1942 #if(CXSC_INDEX_CHECK) 1943 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1949 INLINE l_rvector
operator *(
const l_rvector_slice &v,
const l_rmatrix &m)
1950 #if(CXSC_INDEX_CHECK) 1951 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1955 INLINE l_rvector
operator *(
const l_rvector_slice &v,
const l_rmatrix_slice &m)
1957 #if(CXSC_INDEX_CHECK) 1958 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1966 INLINE l_rvector
operator *(
const rvector &v,
const l_rmatrix &m)
1967 #if(CXSC_INDEX_CHECK) 1968 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1972 INLINE l_rvector
operator *(
const rvector &v,
const l_rmatrix_slice &ms)
1974 #if(CXSC_INDEX_CHECK) 1975 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1979 INLINE l_rvector
operator *(
const rvector_slice &v,
const l_rmatrix &m)
1981 #if(CXSC_INDEX_CHECK) 1982 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1988 INLINE l_rvector
operator *(
const l_rmatrix &m,
const rvector &v)
1989 #if(CXSC_INDEX_CHECK) 1990 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1994 INLINE l_rvector
operator *(
const l_rmatrix_slice &ms,
const rvector &v)
1996 #if(CXSC_INDEX_CHECK) 1997 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2006 INLINE
const l_rmatrix &operator +(
const l_rmatrix &m1)
throw();
2008 INLINE l_rmatrix operator +(
const l_rmatrix_slice &ms)
throw();
2010 INLINE l_rmatrix operator +(
const l_rmatrix &m1,
const l_rmatrix &m2)
2011 #if(CXSC_INDEX_CHECK) 2012 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2016 INLINE l_rmatrix operator +(
const l_rmatrix &m,
const l_rmatrix_slice &ms)
2018 #if(CXSC_INDEX_CHECK) 2019 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2023 INLINE l_rmatrix operator +(
const l_rmatrix_slice &ms,
const l_rmatrix &m)
2025 #if(CXSC_INDEX_CHECK) 2026 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2030 INLINE l_rmatrix operator +(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
2032 #if(CXSC_INDEX_CHECK) 2033 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2037 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const l_rmatrix &m2)
2039 #if(CXSC_INDEX_CHECK) 2040 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2044 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const l_rmatrix_slice &ms)
2046 #if(CXSC_INDEX_CHECK) 2047 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2053 INLINE l_rmatrix operator -(
const l_rmatrix &m)
throw();
2055 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms)
throw();
2057 INLINE l_rmatrix operator -(
const l_rmatrix &m1,
const l_rmatrix &m2)
2058 #if(CXSC_INDEX_CHECK) 2059 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2063 INLINE l_rmatrix operator -(
const l_rmatrix &m,
const l_rmatrix_slice &ms)
2065 #if(CXSC_INDEX_CHECK) 2066 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2070 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms,
const l_rmatrix &m)
2072 #if(CXSC_INDEX_CHECK) 2073 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2077 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2079 #if(CXSC_INDEX_CHECK) 2080 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2084 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const l_rmatrix &m2)
2086 #if(CXSC_INDEX_CHECK) 2087 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2091 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const l_rmatrix_slice &ms)
2093 #if(CXSC_INDEX_CHECK) 2094 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2100 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const l_rmatrix &m2)
2101 #if(CXSC_INDEX_CHECK) 2102 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2106 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
2108 #if(CXSC_INDEX_CHECK) 2109 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2113 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const l_rmatrix &m1)
2115 #if(CXSC_INDEX_CHECK) 2116 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2120 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2122 #if(CXSC_INDEX_CHECK) 2123 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2127 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const l_rmatrix &m2)
2129 #if(CXSC_INDEX_CHECK) 2130 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2134 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const l_rmatrix_slice &ms)
2136 #if(CXSC_INDEX_CHECK) 2137 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2145 INLINE l_rmatrix operator +(
const rmatrix &m1,
const l_rmatrix &m2)
2146 #if(CXSC_INDEX_CHECK) 2147 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2151 INLINE l_rmatrix operator +(
const l_rmatrix &m1,
const rmatrix &m2)
2153 #if(CXSC_INDEX_CHECK) 2154 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2158 INLINE l_rmatrix operator +(
const rmatrix &m,
const l_rmatrix_slice &ms)
2160 #if(CXSC_INDEX_CHECK) 2161 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2165 INLINE l_rmatrix operator +(
const l_rmatrix &m,
const rmatrix_slice &ms)
2167 #if(CXSC_INDEX_CHECK) 2168 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2172 INLINE l_rmatrix operator +(
const rmatrix_slice &ms,
const l_rmatrix &m)
2174 #if(CXSC_INDEX_CHECK) 2175 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2179 INLINE l_rmatrix operator +(
const l_rmatrix_slice &ms,
const rmatrix &m)
2181 #if(CXSC_INDEX_CHECK) 2182 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2186 INLINE l_rmatrix operator +(
const rmatrix_slice &m1,
const l_rmatrix_slice &m2)
2188 #if(CXSC_INDEX_CHECK) 2189 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2193 INLINE l_rmatrix operator +(
const l_rmatrix_slice &m1,
const rmatrix_slice &m2)
2195 #if(CXSC_INDEX_CHECK) 2196 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2200 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const rmatrix &m2)
2202 #if(CXSC_INDEX_CHECK) 2203 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2207 INLINE l_rmatrix &
operator +=(l_rmatrix &m1,
const rmatrix_slice &ms)
2209 #if(CXSC_INDEX_CHECK) 2210 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2216 INLINE l_rmatrix operator -(
const rmatrix &m1,
const l_rmatrix &m2)
2217 #if(CXSC_INDEX_CHECK) 2218 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2222 INLINE l_rmatrix operator -(
const l_rmatrix &m1,
const rmatrix &m2)
2224 #if(CXSC_INDEX_CHECK) 2225 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2229 INLINE l_rmatrix operator -(
const rmatrix &m,
const l_rmatrix_slice &ms)
2231 #if(CXSC_INDEX_CHECK) 2232 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2236 INLINE l_rmatrix operator -(
const l_rmatrix &m,
const rmatrix_slice &ms)
2238 #if(CXSC_INDEX_CHECK) 2239 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2243 INLINE l_rmatrix operator -(
const rmatrix_slice &ms,
const l_rmatrix &m)
2245 #if(CXSC_INDEX_CHECK) 2246 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2250 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms,
const rmatrix &m)
2252 #if(CXSC_INDEX_CHECK) 2253 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2257 INLINE l_rmatrix operator -(
const rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2259 #if(CXSC_INDEX_CHECK) 2260 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2264 INLINE l_rmatrix operator -(
const l_rmatrix_slice &ms1,
const rmatrix_slice &ms2)
2266 #if(CXSC_INDEX_CHECK) 2267 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2271 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const rmatrix &m2)
2273 #if(CXSC_INDEX_CHECK) 2274 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2278 INLINE l_rmatrix &operator -=(l_rmatrix &m1,
const rmatrix_slice &ms)
2280 #if(CXSC_INDEX_CHECK) 2281 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2287 INLINE l_rmatrix
operator *(
const rmatrix &m1,
const l_rmatrix &m2)
2288 #if(CXSC_INDEX_CHECK) 2289 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2293 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const rmatrix &m2)
2295 #if(CXSC_INDEX_CHECK) 2296 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2300 INLINE l_rmatrix
operator *(
const rmatrix &m1,
const l_rmatrix_slice &ms)
2302 #if(CXSC_INDEX_CHECK) 2303 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2307 INLINE l_rmatrix
operator *(
const l_rmatrix &m1,
const rmatrix_slice &ms)
2309 #if(CXSC_INDEX_CHECK) 2310 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2314 INLINE l_rmatrix
operator *(
const rmatrix_slice &ms,
const l_rmatrix &m1)
2316 #if(CXSC_INDEX_CHECK) 2317 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2321 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms,
const rmatrix &m1)
2323 #if(CXSC_INDEX_CHECK) 2324 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2328 INLINE l_rmatrix
operator *(
const rmatrix_slice &ms1,
const l_rmatrix_slice &ms2)
2330 #if(CXSC_INDEX_CHECK) 2331 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2335 INLINE l_rmatrix
operator *(
const l_rmatrix_slice &ms1,
const rmatrix_slice &ms2)
2337 #if(CXSC_INDEX_CHECK) 2338 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2342 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const rmatrix &m2)
2344 #if(CXSC_INDEX_CHECK) 2345 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2349 INLINE l_rmatrix &
operator *=(l_rmatrix &m1,
const rmatrix_slice &ms)
2351 #if(CXSC_INDEX_CHECK) 2352 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
2363 INLINE
bool operator ==(
const l_rmatrix &m1,
const l_rmatrix &m2)
throw();
2365 INLINE
bool operator !=(
const l_rmatrix &m1,
const l_rmatrix &m2)
throw();
2367 INLINE
bool operator <(
const l_rmatrix &m1,
const l_rmatrix &m2)
throw();
2369 INLINE
bool operator <=(
const l_rmatrix &m1,
const l_rmatrix &m2)
throw();
2371 INLINE
bool operator >(
const l_rmatrix &m1,
const l_rmatrix &m2)
throw();
2373 INLINE
bool operator >=(
const l_rmatrix &m1,
const l_rmatrix &m2)
throw();
2375 INLINE
bool operator ==(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
throw();
2377 INLINE
bool operator !=(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
throw();
2379 INLINE
bool operator <(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
throw();
2381 INLINE
bool operator <=(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
throw();
2383 INLINE
bool operator >(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
throw();
2385 INLINE
bool operator >=(
const l_rmatrix &m1,
const l_rmatrix_slice &ms)
throw();
2390 INLINE
bool operator ==(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
throw();
2392 INLINE
bool operator !=(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
throw();
2394 INLINE
bool operator <(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
throw();
2396 INLINE
bool operator <=(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
throw();
2398 INLINE
bool operator >(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
throw();
2400 INLINE
bool operator >=(
const l_rmatrix_slice &m1,
const l_rmatrix_slice &m2)
throw();
2405 INLINE
bool operator !(
const l_rmatrix &ms)
throw();
2407 INLINE
bool operator !(
const l_rmatrix_slice &ms)
throw();
2412 INLINE std::ostream &operator <<(std::ostream &s,
const l_rmatrix &r)
throw();
2414 INLINE std::ostream &operator <<(std::ostream &s,
const l_rmatrix_slice &r)
throw();
2416 INLINE std::istream &operator >>(std::istream &s,l_rmatrix &r)
throw();
2418 INLINE std::istream &operator >>(std::istream &s,l_rmatrix_slice &r)
throw();
2421 INLINE
int RowLen (
const l_rmatrix& );
2423 INLINE
int ColLen (
const l_rmatrix& );
2425 INLINE
int RowLen (
const l_rmatrix_slice& );
2427 INLINE
int ColLen (
const l_rmatrix_slice& );
2429 l_rmatrix
Id (
const l_rmatrix& );
2431 l_rmatrix
transp (
const l_rmatrix& );
2437 #ifdef _CXSC_INCL_INL 2438 #include "matrix.inl" 2439 #include "l_rmatrix.inl" 2442 #ifdef _CXSC_LIVECTOR_HPP_INCLUDED 2443 # ifdef _CXSC_INCL_INL 2444 # include "liveclrmat.inl" 2446 # include "liveclrmat.hpp" 2450 #ifdef _CXSC_IVECTOR_HPP_INCLUDED 2451 # ifdef _CXSC_INCL_INL 2452 # include "iveclrmat.inl" 2454 # include "iveclrmat.hpp" 2458 #ifdef _CXSC_IMATRIX_HPP_INCLUDED 2459 # ifdef _CXSC_INCL_INL 2460 # include "lrmatimat.inl" 2462 # include "lrmatimat.hpp" The Multiple-Precision Data Type l_rmatrix_slice.
The Data Type rmatrix_slice.
l_rmatrix_subv(l_real *d, const int &l, const int &u, const int &s, const int &st, const int &o)
Constructor of class l_rmatrix_subv.
l_rmatrix_subv & operator *=(const l_real &c)
Implementation of multiplication and allocation operation.
cimatrix & operator/=(cimatrix &m, const cinterval &c)
Implementation of division and allocation operation.
The Multiple-Precision Data Type l_real.
The Data Type dotprecision.
The Multiple-Precision Data Type l_rmatrix_subv.
l_rmatrix_subv & operator()()
Operator for accessing the whole vector.
int Lb(const cimatrix &rm, const int &i)
Returns the lower bound index.
The namespace cxsc, providing all functionality of the class library C-XSC.
friend int Lb(const l_rmatrix_subv &rv)
Returns the lower bound of the vector.
l_rmatrix_slice & operator/=(const l_real &c)
Implementation of division and allocation operation.
friend int Ub(const l_rmatrix_subv &rv)
Returns the upper bound of the vector.
l_rmatrix_subv operator [](const int &i) const
Operator for accessing a single row of the matrix.
cimatrix & SetLb(cimatrix &m, const int &i, const int &j)
Sets the lower bound index.
The Multiple-Precision Data Type l_ivector.
void DoubleSize(cimatrix &A)
Doubles the size of the matrix.
cimatrix & operator *=(cimatrix &m, const cinterval &c)
Implementation of multiplication and allocation operation.
cimatrix Id(const cimatrix &A)
Returns the Identity matrix.
The Data Type rvector_slice.
The Multiple-Precision Data Type l_imatrix.
cimatrix & SetUb(cimatrix &m, const int &i, const int &j)
Sets the upper bound index.
The Multiple-Precision Data Type l_rmatrix.
l_rmatrix_subv & operator -=(const l_real &c)
Implementation of subtraction and allocation operation.
civector operator *(const cimatrix_subv &rv, const cinterval &s)
Implementation of multiplication operation.
l_rmatrix_subv & operator+=(const l_real &c)
Implementation of addition and allocation operation.
l_rmatrix & operator=(const l_real &r)
Implementation of standard assigning operator.
void Resize(cimatrix &A)
Resizes the matrix.
l_rmatrix _l_rmatrix(const l_rmatrix &rm)
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
l_rmatrix_subv operator [](const int &i) const
Operator for accessing a single row of the matrix.
l_rmatrix_slice(l_rmatrix_slice &a, const int &l1, const int &u1, const int &l2, const int &u2)
Constructor of class l_rmatrix_slice.
int ColLen(const cimatrix &)
Returns the column dimension.
l_rmatrix_slice & operator|=(const l_rmatrix &m1)
Allocates the convex hull of the arguments to the first argument.
l_rmatrix()
Constructor of class l_rmatrix.
int RowLen(const cimatrix &)
Returns the row dimension.
l_rmatrix_subv & operator/=(const l_real &c)
Implementation of division and allocation operation.
l_rmatrix_slice & operator+=(const l_rmatrix &m1)
Implementation of addition and allocation operation.
l_rmatrix_slice(const l_rmatrix_slice &ms)
Constructor of class l_rmatrix_slice.
l_rvector()
Constructor of class l_rvector.
l_rmatrix & operator()()
Operator for accessing the whole matrix.
The Multiple-Precision Data Type l_rvector.
l_rmatrix_slice(l_rmatrix &a, const int &l1, const int &u1, const int &l2, const int &u2)
Constructor of class l_rmatrix_slice.
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc)
Implementation of standard algebraic addition and allocation operation.
friend l_rmatrix_subv Row(l_rmatrix &m, const int &i)
Returns one row of the matrix as a vector.
l_rmatrix_slice & operator()()
Operator for accessing the whole matrix.
l_real & operator [](const int &i) const
Operator for accessing the single elements of the vector.
l_rmatrix_slice & operator -=(const l_rmatrix &m1)
Implementation of subtraction and allocation operation.
l_rmatrix_slice & operator *=(const l_rmatrix &m)
Implementation of multiplication and allocation operation.
l_rmatrix_subv & operator=(const l_rmatrix_subv &rv)
Implementation of standard assigning operator.
int Ub(const cimatrix &rm, const int &i)
Returns the upper bound index.
friend l_rmatrix_subv Col(l_rmatrix &m, const int &i)
Returns one column of the matrix as a vector.
civector operator/(const cimatrix_subv &rv, const cinterval &s)
Implementation of division operation.
cimatrix transp(const cimatrix &A)
Returns the transposed matrix.
l_rmatrix_subv(const l_rmatrix_subv &v)
Constructor of class l_rmatrix_subv.
l_rmatrix_slice & operator=(const l_rmatrix &m)
Implementation of standard assigning operator.
The Multiple-Precision Data Type l_rvector_slice.
ivector abs(const cimatrix_subv &mv)
Returns the absolute value of the matrix.