26 #ifndef _CXSC_LRVECTOR_HPP_INCLUDED
27 #define _CXSC_LRVECTOR_HPP_INCLUDED
29 #include "xscclass.hpp"
35 #include "rvector.hpp"
45 class l_rvector_slice;
67 template<
typename S,
typename T>
68 friend inline void addDot(
const S &x,
const T &y,
dotprecision &val);
71 #ifdef _CXSC_FRIEND_TPL
74 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
76 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<MS>);
80 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
82 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
86 template <
class V>
friend void _vresize(V &rv)
throw();
87 template <
class V,
class S>
friend void _vresize(V &rv,
const int &len)
89 throw(ERROR__WRONG_BOUNDARIES<V>);
93 template <
class V,
class S>
friend void _vresize(V &rv,
const int &lb,
const int &ub)
95 throw(ERROR__WRONG_BOUNDARIES<V>);
99 template <
class V1,
class V2,
class S>
friend V1 &_vvassign(V1 &rv1,
const V2 &rv2)
throw();
100 template <
class V,
class S>
friend V & _vsassign(V &rv,
const S &r)
throw();
101 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
throw();
102 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
103 #if(CXSC_INDEX_CHECK)
104 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
108 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
109 #if(CXSC_INDEX_CHECK)
110 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
114 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
throw();
115 template <
class V>
friend V _vconj(
const V &rv)
throw();
116 template <
class VS,
class E>
friend E _vsconj(
const VS &sl)
throw();
117 template <
class V,
class E>
friend E _vabs(
const V &rv)
throw();
118 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
throw();
119 template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
throw();
122 template <
class DP,
class V1,
class V2>
friend void _vvaccu(DP &dp,
const V1 & rv1,
const V2 &rv2)
123 #if(CXSC_INDEX_CHECK)
124 throw(OP_WITH_WRONG_DIM);
128 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
129 #if(CXSC_INDEX_CHECK)
130 throw(OP_WITH_WRONG_DIM);
134 template <
class V1,
class V2,
class E>
friend E _vvlmult(
const V1 & rv1,
const V2 &rv2)
135 #if(CXSC_INDEX_CHECK)
136 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
140 template <
class VS,
class V,
class E>
friend E _vsvlmult(
const VS & sl,
const V &rv)
141 #if(CXSC_INDEX_CHECK)
142 throw(ERROR__OP_WITH_WRONG_DIM<V>);
146 template <
class V,
class S>
friend V &_vsmultassign(V &rv,
const S &r)
throw();
147 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
148 #if(CXSC_INDEX_CHECK)
149 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
153 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
154 #if(CXSC_INDEX_CHECK)
155 throw(ERROR__OP_WITH_WRONG_DIM<V>);
159 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
160 #if(CXSC_INDEX_CHECK)
161 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
165 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
166 #if(CXSC_INDEX_CHECK)
167 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
171 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
172 #if(CXSC_INDEX_CHECK)
173 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
177 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
178 #if(CXSC_INDEX_CHECK)
179 throw(ERROR__OP_WITH_WRONG_DIM<V>);
183 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
184 #if(CXSC_INDEX_CHECK)
185 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
189 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
190 #if(CXSC_INDEX_CHECK)
191 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
195 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
196 #if(CXSC_INDEX_CHECK)
197 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
201 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
202 #if(CXSC_INDEX_CHECK)
203 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
207 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
208 #if(CXSC_INDEX_CHECK)
209 throw(ERROR__OP_WITH_WRONG_DIM<V>);
213 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
214 #if(CXSC_INDEX_CHECK)
215 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
219 template <
class V>
friend V _vminus(
const V &rv)
throw();
220 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
throw();
221 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
222 #if(CXSC_INDEX_CHECK)
223 throw(ERROR__OP_WITH_WRONG_DIM<E>);
227 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
228 #if(CXSC_INDEX_CHECK)
229 throw(ERROR__OP_WITH_WRONG_DIM<E>);
233 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
234 #if(CXSC_INDEX_CHECK)
235 throw(ERROR__OP_WITH_WRONG_DIM<E>);
239 template <
class V,
class MV,
class S>
friend S _vmvlmult(
const V &rv1,
const MV &rv2)
240 #if(CXSC_INDEX_CHECK)
241 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
245 template <
class V1,
class V2,
class E>
friend E _vvconv(
const V1 &rv1,
const V2 &rv2)
246 #if(CXSC_INDEX_CHECK)
247 throw(ERROR__OP_WITH_WRONG_DIM<E>);
251 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
252 #if(CXSC_INDEX_CHECK)
253 throw(ERROR__OP_WITH_WRONG_DIM<E>);
257 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
258 #if(CXSC_INDEX_CHECK)
259 throw(ERROR__OP_WITH_WRONG_DIM<E>);
264 template <
class V,
class S,
class E>
friend E _vsdiv(
const V &rv,
const S &s)
throw();
265 template <
class V,
class S>
friend V &_vsdivassign(V &rv,
const S &r)
throw();
266 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
throw();
267 template <
class V,
class S,
class E>
friend E _vsmult(
const V &rv,
const S &s)
throw();
268 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
throw();
269 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
throw();
270 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
271 #if(CXSC_INDEX_CHECK)
272 throw(ERROR__OP_WITH_WRONG_DIM<E>);
276 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
277 #if(CXSC_INDEX_CHECK)
278 throw(ERROR__OP_WITH_WRONG_DIM<E>);
282 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
283 #if(CXSC_INDEX_CHECK)
284 throw(ERROR__OP_WITH_WRONG_DIM<E>);
288 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
289 #if(CXSC_INDEX_CHECK)
290 throw(ERROR__OP_WITH_WRONG_DIM<E>);
294 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
295 #if(CXSC_INDEX_CHECK)
296 throw(ERROR__OP_WITH_WRONG_DIM<E>);
300 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
301 #if(CXSC_INDEX_CHECK)
302 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
306 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
307 #if(CXSC_INDEX_CHECK)
308 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
312 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
throw();
313 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
314 #if(CXSC_INDEX_CHECK)
315 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
319 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
320 #if(CXSC_INDEX_CHECK)
321 throw(OP_WITH_WRONG_DIM);
326 template <
class V1,
class V2>
friend bool _vveq(
const V1 &rv1,
const V2 &rv2)
throw();
327 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
throw();
328 template <
class V1,
class V2>
friend bool _vvneq(
const V1 &rv1,
const V2 &rv2)
throw();
329 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
throw();
330 template <
class V1,
class V2>
friend bool _vvless(
const V1 &rv1,
const V2 &rv2)
throw();
331 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
throw();
332 template <
class V1,
class V2>
friend bool _vvleq(
const V1 &rv1,
const V2 &rv2)
throw();
333 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
throw();
334 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
throw();
335 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
throw();
336 template <
class V>
friend bool _vnot(
const V &rv)
throw();
337 template <
class V>
friend void *_vvoid(
const V &rv)
throw();
338 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
throw();
339 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
throw();
340 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
throw();
341 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
throw();
342 template <
class VS>
friend bool _vsnot(
const VS &sl)
throw();
343 template <
class VS>
friend void *_vsvoid(
const VS &sl)
throw();
344 template <
class V>
friend std::ostream &_vout(std::ostream &s,
const V &rv)
throw();
345 template <
class V>
friend std::istream &_vin(std::istream &s, V &rv)
throw();
348 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
throw();
349 template <
class M,
class V,
class E>
friend E _mvlmult(
const M &m,
const V &v)
350 #if(CXSC_INDEX_CHECK)
351 throw(ERROR__OP_WITH_WRONG_DIM<M>);
355 template <
class V,
class M,
class E>
friend E _vmlmult(
const V &v,
const M &m)
356 #if(CXSC_INDEX_CHECK)
357 throw(ERROR__OP_WITH_WRONG_DIM<M>);
361 template <
class V,
class M,
class S>
friend V &_vmlmultassign(V &v,
const M &m)
362 #if(CXSC_INDEX_CHECK)
363 throw(ERROR__OP_WITH_WRONG_DIM<M>);
367 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
368 #if(CXSC_INDEX_CHECK)
369 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
373 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
374 #if(CXSC_INDEX_CHECK)
375 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
379 template <
class V,
class MS,
class S>
friend V &_vmslmultassign(V &v,
const MS &ms)
380 #if(CXSC_INDEX_CHECK)
381 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
388 template <
class V1,
class V2,
class E>
friend E _vvlimult(
const V1 & rv1,
const V2 &rv2)
389 #if(CXSC_INDEX_CHECK)
390 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
394 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
395 #if(CXSC_INDEX_CHECK)
396 throw(ERROR__OP_WITH_WRONG_DIM<V>);
400 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
401 #if(CXSC_INDEX_CHECK)
402 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
406 template <
class V1,
class V2,
class E>
friend E _vvsect(
const V1 &rv1,
const V2 &rv2)
407 #if(CXSC_INDEX_CHECK)
408 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
412 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
413 #if(CXSC_INDEX_CHECK)
414 throw(ERROR__OP_WITH_WRONG_DIM<E>);
418 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
419 #if(CXSC_INDEX_CHECK)
420 throw(ERROR__OP_WITH_WRONG_DIM<E>);
426 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
427 #if(CXSC_INDEX_CHECK)
428 throw(ERROR__OP_WITH_WRONG_DIM<M>);
432 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
433 #if(CXSC_INDEX_CHECK)
434 throw(ERROR__OP_WITH_WRONG_DIM<M>);
438 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
439 #if(CXSC_INDEX_CHECK)
440 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
444 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
445 #if(CXSC_INDEX_CHECK)
446 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
452 template <
class V1,
class V2>
friend V1 &_vvsetinf(V1 &rv1,
const V2 &rv2)
453 #if(CXSC_INDEX_CHECK)
454 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
458 template <
class V1,
class V2>
friend V1 &_vvsetsup(V1 &rv1,
const V2 &rv2)
459 #if(CXSC_INDEX_CHECK)
460 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
464 template <
class V1,
class V2>
friend V1 &_vvusetinf(V1 &rv1,
const V2 &rv2)
465 #if(CXSC_INDEX_CHECK)
466 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
470 template <
class V1,
class V2>
friend V1 &_vvusetsup(V1 &rv1,
const V2 &rv2)
471 #if(CXSC_INDEX_CHECK)
472 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
476 template <
class VS,
class V>
friend VS &_vsvsetinf(VS &sl,
const V &rv)
477 #if(CXSC_INDEX_CHECK)
478 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
482 template <
class VS,
class V>
friend VS &_vsvsetsup(VS &sl,
const V &rv)
483 #if(CXSC_INDEX_CHECK)
484 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
488 template <
class VS,
class V>
friend VS &_vsvusetinf(VS &sl,
const V &rv)
489 #if(CXSC_INDEX_CHECK)
490 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
494 template <
class VS,
class V>
friend VS &_vsvusetsup(VS &sl,
const V &rv)
495 #if(CXSC_INDEX_CHECK)
496 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
500 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
501 #if(CXSC_INDEX_CHECK)
502 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
506 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
507 #if(CXSC_INDEX_CHECK)
508 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
512 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
513 #if(CXSC_INDEX_CHECK)
514 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
518 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
519 #if(CXSC_INDEX_CHECK)
520 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
524 template <
class V,
class E>
friend E _vmid(
const V &rv)
throw();
525 template <
class V,
class E>
friend E _vinf(
const V &rv)
throw();
526 template <
class V,
class E>
friend E _vsup(
const V &rv)
throw();
527 template <
class V,
class E>
friend E _vdiam(
const V &rv)
throw();
528 template <
class VS,
class E>
friend E _vsmid(
const VS &sl)
throw();
529 template <
class VS,
class E>
friend E _vsinf(
const VS &sl)
throw();
530 template <
class VS,
class E>
friend E _vssup(
const VS &sl)
throw();
531 template <
class VS,
class E>
friend E _vsdiam(
const VS &sl)
throw();
532 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv)
throw();
533 template <
class MV,
class V>
friend V _mvmid(
const MV &mv)
throw();
534 template <
class MV,
class V>
friend V _mvinf(
const MV &mv)
throw();
535 template <
class MV,
class V>
friend V _mvsup(
const MV &mv)
throw();
538 template <
class V1,
class V2>
friend V1 &_vvconvassign(V1 &rv1,
const V2 &rv2)
539 #if(CXSC_INDEX_CHECK)
540 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
544 template <
class V1,
class V2>
friend V1 &_vvsectassign(V1 &rv1,
const V2 &rv2)
545 #if(CXSC_INDEX_CHECK)
546 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
550 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
551 #if(CXSC_INDEX_CHECK)
552 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
556 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
557 #if(CXSC_INDEX_CHECK)
558 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
563 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
564 #if(CXSC_INDEX_CHECK)
565 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
569 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
570 #if(CXSC_INDEX_CHECK)
571 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
583 explicit INLINE
l_rvector(
const int &i)
throw();
585 explicit INLINE
l_rvector(
const class index &i)
throw();
588 explicit INLINE
l_rvector(
const int &i1,
const int &i2)
590 #if(CXSC_INDEX_CHECK)
591 throw(ERROR_LRVECTOR_WRONG_BOUNDARIES,ERROR_LRVECTOR_NO_MORE_MEMORY);
601 #if(CXSC_INDEX_CHECK)
602 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
608 #if(CXSC_INDEX_CHECK)
609 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
626 #if(CXSC_INDEX_CHECK)
627 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
633 #if(CXSC_INDEX_CHECK)
634 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
650 #if(CXSC_INDEX_CHECK)
651 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
657 #if(CXSC_INDEX_CHECK)
658 throw(ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
673 #if(CXSC_INDEX_CHECK)
674 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
680 #if(CXSC_INDEX_CHECK)
681 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
694 #if(CXSC_INDEX_CHECK)
695 throw(ERROR_LRVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_LRVECTOR_USE_OF_UNINITIALIZED_OBJ);
699 friend INLINE
int Lb(
const l_rvector &rv)
throw() {
return rv.l; }
702 friend INLINE
int Ub(
const l_rvector &rv)
throw() {
return rv.u; }
711 #if(CXSC_INDEX_CHECK)
712 throw(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC);
720 #if(CXSC_INDEX_CHECK)
721 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG);
725 INLINE l_rvector_slice
operator ()(
const int &i1,
const int &i2)
727 #if(CXSC_INDEX_CHECK)
728 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG);
732 INLINE
operator void*()
throw();
758 template<
typename S,
typename T>
759 friend inline void addDot(
const S &x,
const T &y,
dotprecision &val);
762 #ifdef _CXSC_FRIEND_TPL
766 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
767 #if(CXSC_INDEX_CHECK)
768 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
772 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
throw();
773 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
774 #if(CXSC_INDEX_CHECK)
775 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
779 template <
class VS,
class S>
friend VS & _vssassign(VS &sl,
const S &r)
throw();
781 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
782 #if(CXSC_INDEX_CHECK)
783 throw(OP_WITH_WRONG_DIM);
787 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
788 #if(CXSC_INDEX_CHECK)
789 throw(OP_WITH_WRONG_DIM);
794 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
throw();
795 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
throw();
797 template <
class VS,
class V,
class E>
friend E _vsvlmult(
const VS & sl,
const V &rv)
798 #if(CXSC_INDEX_CHECK)
799 throw(ERROR__OP_WITH_WRONG_DIM<V>);
803 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
throw();
804 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
throw();
805 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
806 #if(CXSC_INDEX_CHECK)
807 throw(ERROR__OP_WITH_WRONG_DIM<V>);
811 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
812 #if(CXSC_INDEX_CHECK)
813 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
817 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
818 #if(CXSC_INDEX_CHECK)
819 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
823 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
824 #if(CXSC_INDEX_CHECK)
825 throw(ERROR__OP_WITH_WRONG_DIM<V>);
829 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
830 #if(CXSC_INDEX_CHECK)
831 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
835 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
836 #if(CXSC_INDEX_CHECK)
837 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
841 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
842 #if(CXSC_INDEX_CHECK)
843 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
847 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
848 #if(CXSC_INDEX_CHECK)
849 throw(ERROR__OP_WITH_WRONG_DIM<V>);
853 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
854 #if(CXSC_INDEX_CHECK)
855 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
859 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
throw();
860 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
861 #if(CXSC_INDEX_CHECK)
862 throw(ERROR__OP_WITH_WRONG_DIM<E>);
866 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
867 #if(CXSC_INDEX_CHECK)
868 throw(ERROR__OP_WITH_WRONG_DIM<E>);
872 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
873 #if(CXSC_INDEX_CHECK)
874 throw(ERROR__OP_WITH_WRONG_DIM<E>);
878 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
879 #if(CXSC_INDEX_CHECK)
880 throw(ERROR__OP_WITH_WRONG_DIM<E>);
884 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
throw();
885 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
throw();
886 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
throw();
887 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
throw();
888 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
throw();
889 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
throw();
890 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
throw();
891 template <
class VS1,
class VS2,
class E>
friend E _vsvslmult(
const VS1 & sl1,
const VS2 &sl2)
892 #if(CXSC_INDEX_CHECK)
893 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
897 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
throw();
898 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
throw();
899 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
throw();
900 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
throw();
901 template <
class VS>
friend bool _vsnot(
const VS &sl)
throw();
902 template <
class VS>
friend void *_vsvoid(
const VS &sl)
throw();
903 template <
class V>
friend std::ostream &_vsout(std::ostream &s,
const V &rv)
throw();
904 template <
class V>
friend std::istream &_vsin(std::istream &s, V &rv)
throw();
906 template <
class VS,
class M,
class S>
friend VS &_vsmlmultassign(VS &v,
const M &m)
907 #if(CXSC_INDEX_CHECK)
908 throw(ERROR__OP_WITH_WRONG_DIM<M>);
914 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
915 #if(CXSC_INDEX_CHECK)
916 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
921 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
922 #if(CXSC_INDEX_CHECK)
923 throw(ERROR__OP_WITH_WRONG_DIM<E>);
927 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
928 #if(CXSC_INDEX_CHECK)
929 throw(ERROR__OP_WITH_WRONG_DIM<E>);
936 template <
class V1,
class V2,
class E>
friend E _vvlimult(
const V1 & rv1,
const V2 &rv2)
937 #if(CXSC_INDEX_CHECK)
938 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
942 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
943 #if(CXSC_INDEX_CHECK)
944 throw(ERROR__OP_WITH_WRONG_DIM<V>);
948 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
949 #if(CXSC_INDEX_CHECK)
950 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
954 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
955 #if(CXSC_INDEX_CHECK)
956 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
960 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
961 #if(CXSC_INDEX_CHECK)
962 throw(ERROR__OP_WITH_WRONG_DIM<E>);
982 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
983 #if(CXSC_INDEX_CHECK)
984 throw(ERROR__OP_WITH_WRONG_DIM<V>);
988 template <
class V,
class VS>
friend V &_vvssectassign(V &rv,
const VS &sl)
989 #if(CXSC_INDEX_CHECK)
990 throw(ERROR__OP_WITH_WRONG_DIM<V>);
994 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
995 #if(CXSC_INDEX_CHECK)
996 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1000 template <
class VS1,
class VS2>
friend VS1 &_vsvssectassign(VS1 &sl1,
const VS2 &sl2)
1001 #if(CXSC_INDEX_CHECK)
1002 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1010 explicit INLINE
l_rvector_slice(
l_rvector &a,
const int &lb,
const int &ub)
throw():dat(a.dat),l(a.l),u(a.u),size(ub-lb+1),start(lb),end(ub) { }
1020 #if(CXSC_INDEX_CHECK)
1021 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1027 #if(CXSC_INDEX_CHECK)
1028 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1036 #if(CXSC_INDEX_CHECK)
1037 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>,ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
1043 #if(CXSC_INDEX_CHECK)
1044 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>,ERROR_LRMATRIX_TYPE_CAST_OF_THICK_OBJ);
1053 #if(CXSC_INDEX_CHECK)
1054 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1060 #if(CXSC_INDEX_CHECK)
1061 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1069 #if(CXSC_INDEX_CHECK)
1070 throw(ERROR__OP_WITH_WRONG_DIM<rvector>,ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
1076 #if(CXSC_INDEX_CHECK)
1077 throw(ERROR__OP_WITH_WRONG_DIM<rvector>,ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
1085 template <
class V,
class VS>
friend V &_vvssetinf(V &rv,
const VS &sl)
1086 #if(CXSC_INDEX_CHECK)
1087 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1091 template <
class V,
class VS>
friend V &_vvssetsup(V &rv,
const VS &sl)
1092 #if(CXSC_INDEX_CHECK)
1093 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1097 template <
class V,
class VS>
friend V &_vvsusetinf(V &rv,
const VS &sl)
1098 #if(CXSC_INDEX_CHECK)
1099 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1103 template <
class V,
class VS>
friend V &_vvsusetsup(V &rv,
const VS &sl)
1104 #if(CXSC_INDEX_CHECK)
1105 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1109 template <
class VS1,
class VS2>
friend VS1 &_vsvssetinf(VS1 &sl1,
const VS2 &sl2)
1110 #if(CXSC_INDEX_CHECK)
1111 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1115 template <
class VS1,
class VS2>
friend VS1 &_vsvssetsup(VS1 &sl1,
const VS2 &sl2)
1116 #if(CXSC_INDEX_CHECK)
1117 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1121 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetinf(VS1 &sl1,
const VS2 &sl2)
1122 #if(CXSC_INDEX_CHECK)
1123 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1127 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetsup(VS1 &sl1,
const VS2 &sl2)
1128 #if(CXSC_INDEX_CHECK)
1129 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1135 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
1136 #if(CXSC_INDEX_CHECK)
1137 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
1147 #if(CXSC_INDEX_CHECK)
1148 throw(ERROR_LRVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_LRVECTOR_USE_OF_UNINITIALIZED_OBJ);
1160 #if(CXSC_INDEX_CHECK)
1161 throw(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC);
1169 #if(CXSC_INDEX_CHECK)
1170 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG);
1176 #if(CXSC_INDEX_CHECK)
1177 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG);
1190 #if(CXSC_INDEX_CHECK)
1191 throw(ERROR_LRMATRIX_OP_WITH_WRONG_DIM);
1197 #if(CXSC_INDEX_CHECK)
1198 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
1206 #if(CXSC_INDEX_CHECK)
1207 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1213 #if(CXSC_INDEX_CHECK)
1214 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1220 #if(CXSC_INDEX_CHECK)
1221 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1227 #if(CXSC_INDEX_CHECK)
1228 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1234 #if(CXSC_INDEX_CHECK)
1235 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1241 #if(CXSC_INDEX_CHECK)
1242 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1248 #if(CXSC_INDEX_CHECK)
1249 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1255 #if(CXSC_INDEX_CHECK)
1256 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1263 #if(CXSC_INDEX_CHECK)
1264 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1270 #if(CXSC_INDEX_CHECK)
1271 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1277 #if(CXSC_INDEX_CHECK)
1278 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1284 #if(CXSC_INDEX_CHECK)
1285 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1291 #if(CXSC_INDEX_CHECK)
1292 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1298 #if(CXSC_INDEX_CHECK)
1299 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1305 #if(CXSC_INDEX_CHECK)
1306 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1312 #if(CXSC_INDEX_CHECK)
1313 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1317 INLINE
operator void*()
throw();
1326 INLINE l_rvector
_l_rvector(
const l_real &r)
throw();
1330 INLINE l_rvector
_l_rvector(
const real &r)
throw();
1332 INLINE l_rvector
_l_rvector(
const rvector_slice &rs)
throw();
1334 INLINE l_rvector
_l_rvector(
const rvector &rs)
throw();
1338 INLINE l_rvector
_l_rvector(
const rmatrix_subv &rs)
throw();
1341 INLINE
void Resize(l_rvector &rv)
throw();
1343 INLINE
void Resize(l_rvector &rv,
const int &len)
1344 #if(CXSC_INDEX_CHECK)
1345 throw(ERROR__WRONG_BOUNDARIES<l_rvector>);
1349 INLINE
void Resize(l_rvector &rv,
const int &lb,
const int &ub)
1351 #if(CXSC_INDEX_CHECK)
1352 throw(ERROR__WRONG_BOUNDARIES<l_rvector>);
1358 INLINE l_rvector
abs(
const l_rvector &rv)
throw();
1360 INLINE l_rvector
abs(
const l_rvector_slice &sl)
throw();
1362 INLINE
bool operator !(
const l_rvector &rv)
throw();
1364 INLINE
bool operator !(
const l_rvector_slice &sl)
throw();
1371 INLINE l_rvector
operator *(
const l_rvector &rv,
const l_real &s)
throw();
1373 INLINE l_rvector
operator *(
const l_rvector_slice &sl,
const l_real &s)
throw();
1375 INLINE l_rvector
operator *(
const l_real &s,
const l_rvector &rv)
throw();
1377 INLINE l_rvector
operator *(
const l_real &s,
const l_rvector_slice &sl)
throw();
1379 INLINE l_rvector &
operator *=(l_rvector &rv,
const l_real &r)
throw();
1382 INLINE l_rvector
operator /(
const l_rvector &rv,
const l_real &s)
throw();
1384 INLINE l_rvector
operator /(
const l_rvector_slice &sl,
const l_real &s)
throw();
1386 INLINE l_rvector &
operator /=(l_rvector &rv,
const l_real &r)
throw();
1391 INLINE l_rvector
operator *(
const l_rvector &rv,
const real &s)
throw();
1393 INLINE l_rvector
operator *(
const l_rvector_slice &sl,
const real &s)
throw();
1395 INLINE l_rvector
operator *(
const real &s,
const l_rvector &rv)
throw();
1397 INLINE l_rvector
operator *(
const real &s,
const l_rvector_slice &sl)
throw();
1399 INLINE l_rvector &
operator *=(l_rvector &rv,
const real &r)
throw();
1402 INLINE l_rvector
operator /(
const l_rvector &rv,
const real &s)
throw();
1404 INLINE l_rvector
operator /(
const l_rvector_slice &sl,
const real &s)
throw();
1406 INLINE l_rvector &
operator /=(l_rvector &rv,
const real &r)
throw();
1409 INLINE l_rvector
operator *(
const rvector &rv,
const l_real &s)
throw();
1411 INLINE l_rvector
operator *(
const rvector_slice &sl,
const l_real &s)
throw();
1413 INLINE l_rvector
operator *(
const l_real &s,
const rvector &rv)
throw();
1415 INLINE l_rvector
operator *(
const l_real &s,
const rvector_slice &sl)
throw();
1418 INLINE l_rvector
operator /(
const rvector &rv,
const l_real &s)
throw();
1420 INLINE l_rvector
operator /(
const rvector_slice &sl,
const l_real &s)
throw();
1426 INLINE std::ostream &operator <<(std::ostream &s,
const l_rvector &rv)
throw();
1428 INLINE std::ostream &operator <<(std::ostream &o,
const l_rvector_slice &sl)
throw();
1430 INLINE std::istream &operator >>(std::istream &s, l_rvector &rv)
throw();
1432 INLINE std::istream &operator >>(std::istream &s, l_rvector_slice &rv)
throw();
1437 INLINE
void accumulate(dotprecision &dp,
const l_rvector & rv1,
const l_rvector &rv2)
1438 #if(CXSC_INDEX_CHECK)
1439 throw(OP_WITH_WRONG_DIM);
1443 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice & sl,
const l_rvector &rv)
1445 #if(CXSC_INDEX_CHECK)
1446 throw(OP_WITH_WRONG_DIM);
1450 INLINE
void accumulate(dotprecision &dp,
const l_rvector &rv,
const l_rvector_slice &sl)
1452 #if(CXSC_INDEX_CHECK)
1453 throw(OP_WITH_WRONG_DIM);
1457 INLINE
void accumulate(dotprecision &dp,
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1459 #if(CXSC_INDEX_CHECK)
1460 throw(OP_WITH_WRONG_DIM);
1464 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector &rv2)
1466 #if(CXSC_INDEX_CHECK)
1467 throw(OP_WITH_WRONG_DIM);
1471 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1473 #if(CXSC_INDEX_CHECK)
1474 throw(OP_WITH_WRONG_DIM);
1478 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice & sl1,
const l_rvector_slice &sl2)
1480 #if(CXSC_INDEX_CHECK)
1481 throw(OP_WITH_WRONG_DIM);
1485 INLINE
void accumulate(idotprecision &dp,
const l_rvector & rv1,
const l_rvector &rv2)
1487 #if(CXSC_INDEX_CHECK)
1488 throw(OP_WITH_WRONG_DIM);
1492 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice & sl,
const l_rvector &rv)
1494 #if(CXSC_INDEX_CHECK)
1495 throw(OP_WITH_WRONG_DIM);
1499 INLINE
void accumulate(idotprecision &dp,
const l_rvector &rv,
const l_rvector_slice &sl)
1501 #if(CXSC_INDEX_CHECK)
1502 throw(OP_WITH_WRONG_DIM);
1506 INLINE
void accumulate(idotprecision &dp,
const l_rvector & rv1,
const l_rmatrix_subv &rv2)
1508 #if(CXSC_INDEX_CHECK)
1509 throw(OP_WITH_WRONG_DIM);
1513 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rvector &rv2)
1515 #if(CXSC_INDEX_CHECK)
1516 throw(OP_WITH_WRONG_DIM);
1520 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice & sl1,
const l_rvector_slice &sl2)
1522 #if(CXSC_INDEX_CHECK)
1523 throw(OP_WITH_WRONG_DIM);
1527 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1529 #if(CXSC_INDEX_CHECK)
1530 throw(OP_WITH_WRONG_DIM);
1537 INLINE l_real
operator *(
const l_rvector & rv1,
const l_rvector &rv2)
1538 #if(CXSC_INDEX_CHECK)
1539 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1543 INLINE l_real
operator *(
const l_rvector_slice &sl,
const l_rvector &rv)
1545 #if(CXSC_INDEX_CHECK)
1546 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1550 INLINE l_real
operator *(
const l_rvector &rv,
const l_rvector_slice &sl)
1552 #if(CXSC_INDEX_CHECK)
1553 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1557 INLINE l_real
operator *(
const l_rvector_slice & sl1,
const l_rvector_slice &sl2)
1559 #if(CXSC_INDEX_CHECK)
1560 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1566 INLINE
const l_rvector &operator +(
const l_rvector &rv)
throw();
1568 INLINE l_rvector operator +(
const l_rvector_slice &sl)
throw();
1571 INLINE l_rvector operator +(
const l_rvector &rv1,
const l_rvector &rv2)
1572 #if(CXSC_INDEX_CHECK)
1573 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1577 INLINE l_rvector operator +(
const l_rvector &rv,
const l_rvector_slice &sl)
1579 #if(CXSC_INDEX_CHECK)
1580 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1584 INLINE l_rvector operator +(
const l_rvector_slice &sl,
const l_rvector &rv)
1586 #if(CXSC_INDEX_CHECK)
1587 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1591 INLINE l_rvector operator +(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
1593 #if(CXSC_INDEX_CHECK)
1594 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1598 INLINE l_rvector &
operator +=(l_rvector &rv1,
const l_rvector &rv2)
1600 #if(CXSC_INDEX_CHECK)
1601 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1605 INLINE l_rvector &
operator +=(l_rvector &rv,
const l_rvector_slice &sl)
1607 #if(CXSC_INDEX_CHECK)
1608 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1614 INLINE l_rvector operator -(
const l_rvector &rv)
throw();
1616 INLINE l_rvector operator -(
const l_rvector_slice &sl)
throw();
1618 INLINE l_rvector operator -(
const l_rvector &rv1,
const l_rvector &rv2)
1619 #if(CXSC_INDEX_CHECK)
1620 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1624 INLINE l_rvector operator -(
const l_rvector &rv,
const l_rvector_slice &sl)
1626 #if(CXSC_INDEX_CHECK)
1627 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1631 INLINE l_rvector operator -(
const l_rvector_slice &sl,
const l_rvector &rv)
1633 #if(CXSC_INDEX_CHECK)
1634 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1638 INLINE l_rvector operator -(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
1640 #if(CXSC_INDEX_CHECK)
1641 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1645 INLINE l_rvector & operator -=(l_rvector &rv1,
const l_rvector &rv2)
1647 #if(CXSC_INDEX_CHECK)
1648 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1652 INLINE l_rvector &operator -=(l_rvector &rv,
const l_rvector_slice &sl)
1654 #if(CXSC_INDEX_CHECK)
1655 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1661 INLINE
bool operator ==(
const l_rvector &rv1,
const l_rvector &rv2)
throw();
1663 INLINE
bool operator ==(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
throw();
1665 INLINE
bool operator ==(
const l_rvector_slice &sl,
const l_rvector &rv)
throw();
1667 INLINE
bool operator ==(
const l_rvector &rv,
const l_rvector_slice &sl)
throw();
1669 INLINE
bool operator !=(
const l_rvector &rv1,
const l_rvector &rv2)
throw();
1671 INLINE
bool operator !=(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
throw();
1673 INLINE
bool operator !=(
const l_rvector_slice &sl,
const l_rvector &rv)
throw();
1675 INLINE
bool operator !=(
const l_rvector &rv,
const l_rvector_slice &sl)
throw();
1677 INLINE
bool operator <(
const l_rvector &rv1,
const l_rvector &rv2)
throw();
1679 INLINE
bool operator <(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
throw();
1681 INLINE
bool operator < (
const l_rvector_slice &sl,
const l_rvector &rv)
throw();
1683 INLINE
bool operator < (
const l_rvector &rv,
const l_rvector_slice &sl)
throw();
1685 INLINE
bool operator <=(
const l_rvector &rv1,
const l_rvector &rv2)
throw();
1687 INLINE
bool operator <=(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
throw();
1689 INLINE
bool operator <=(
const l_rvector_slice &sl,
const l_rvector &rv)
throw();
1691 INLINE
bool operator <=(
const l_rvector &rv,
const l_rvector_slice &sl)
throw();
1693 INLINE
bool operator >(
const l_rvector &rv1,
const l_rvector &rv2)
throw();
1695 INLINE
bool operator >(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
throw();
1697 INLINE
bool operator >(
const l_rvector_slice &sl,
const l_rvector &rv)
throw();
1699 INLINE
bool operator >(
const l_rvector &rv,
const l_rvector_slice &sl)
throw();
1701 INLINE
bool operator >=(
const l_rvector &rv1,
const l_rvector &rv2)
throw();
1703 INLINE
bool operator >=(
const l_rvector_slice &sl1,
const l_rvector_slice &sl2)
throw();
1705 INLINE
bool operator >=(
const l_rvector_slice &sl,
const l_rvector &rv)
throw();
1707 INLINE
bool operator >=(
const l_rvector &rv,
const l_rvector_slice &sl)
throw();
1713 INLINE
void accumulate(dotprecision &dp,
const l_rvector & rv1,
const rvector &rv2)
1714 #if(CXSC_INDEX_CHECK)
1715 throw(OP_WITH_WRONG_DIM);
1719 INLINE
void accumulate(dotprecision &dp,
const rvector & rv1,
const l_rvector &rv2)
1721 #if(CXSC_INDEX_CHECK)
1722 throw(OP_WITH_WRONG_DIM);
1726 INLINE
void accumulate(dotprecision &dp,
const rvector_slice & sl,
const l_rvector &rv)
1728 #if(CXSC_INDEX_CHECK)
1729 throw(OP_WITH_WRONG_DIM);
1733 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice &sl,
const rvector &rv)
1735 #if(CXSC_INDEX_CHECK)
1736 throw(OP_WITH_WRONG_DIM);
1740 INLINE
void accumulate(dotprecision &dp,
const rvector &rv,
const l_rvector_slice &sl)
1742 #if(CXSC_INDEX_CHECK)
1743 throw(OP_WITH_WRONG_DIM);
1747 INLINE
void accumulate(dotprecision &dp,
const rvector & rv1,
const l_rmatrix_subv &rv2)
1749 #if(CXSC_INDEX_CHECK)
1750 throw(OP_WITH_WRONG_DIM);
1754 INLINE
void accumulate(dotprecision &dp,
const l_rvector & rv1,
const rmatrix_subv &rv2)
1756 #if(CXSC_INDEX_CHECK)
1757 throw(OP_WITH_WRONG_DIM);
1761 INLINE
void accumulate(dotprecision &dp,
const rvector_slice & rv1,
const l_rmatrix_subv &rv2)
1763 #if(CXSC_INDEX_CHECK)
1764 throw(OP_WITH_WRONG_DIM);
1768 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice & rv1,
const rmatrix_subv &rv2)
1770 #if(CXSC_INDEX_CHECK)
1771 throw(OP_WITH_WRONG_DIM);
1775 INLINE
void accumulate(dotprecision &dp,
const l_rvector &rv,
const rvector_slice &sl)
1777 #if(CXSC_INDEX_CHECK)
1778 throw(OP_WITH_WRONG_DIM);
1782 INLINE
void accumulate(dotprecision &dp,
const rmatrix_subv & rv1,
const l_rvector &rv2)
1784 #if(CXSC_INDEX_CHECK)
1785 throw(OP_WITH_WRONG_DIM);
1789 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const rvector &rv2)
1791 #if(CXSC_INDEX_CHECK)
1792 throw(OP_WITH_WRONG_DIM);
1796 INLINE
void accumulate(dotprecision &dp,
const rmatrix_subv & rv1,
const l_rvector_slice &rv2)
1798 #if(CXSC_INDEX_CHECK)
1799 throw(OP_WITH_WRONG_DIM);
1803 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const rvector_slice &rv2)
1805 #if(CXSC_INDEX_CHECK)
1806 throw(OP_WITH_WRONG_DIM);
1810 INLINE
void accumulate(dotprecision &dp,
const l_rvector_slice & sl1,
const rvector_slice &sl2)
1812 #if(CXSC_INDEX_CHECK)
1813 throw(OP_WITH_WRONG_DIM);
1817 INLINE
void accumulate(dotprecision &dp,
const rvector_slice & sl1,
const l_rvector_slice &sl2)
1819 #if(CXSC_INDEX_CHECK)
1820 throw(OP_WITH_WRONG_DIM);
1824 INLINE
void accumulate(dotprecision &dp,
const rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1826 #if(CXSC_INDEX_CHECK)
1827 throw(OP_WITH_WRONG_DIM);
1831 INLINE
void accumulate(dotprecision &dp,
const l_rmatrix_subv & rv1,
const rmatrix_subv &rv2)
1833 #if(CXSC_INDEX_CHECK)
1834 throw(OP_WITH_WRONG_DIM);
1840 INLINE
void accumulate(idotprecision &dp,
const l_rvector & rv1,
const rvector &rv2)
1841 #if(CXSC_INDEX_CHECK)
1842 throw(OP_WITH_WRONG_DIM);
1846 INLINE
void accumulate(idotprecision &dp,
const rvector & rv1,
const l_rvector &rv2)
1848 #if(CXSC_INDEX_CHECK)
1849 throw(OP_WITH_WRONG_DIM);
1853 INLINE
void accumulate(idotprecision &dp,
const rvector_slice & sl,
const l_rvector &rv)
1855 #if(CXSC_INDEX_CHECK)
1856 throw(OP_WITH_WRONG_DIM);
1860 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice &sl,
const rvector &rv)
1862 #if(CXSC_INDEX_CHECK)
1863 throw(OP_WITH_WRONG_DIM);
1867 INLINE
void accumulate(idotprecision &dp,
const rvector &rv,
const l_rvector_slice &sl)
1869 #if(CXSC_INDEX_CHECK)
1870 throw(OP_WITH_WRONG_DIM);
1874 INLINE
void accumulate(idotprecision &dp,
const rvector & rv1,
const l_rmatrix_subv &rv2)
1876 #if(CXSC_INDEX_CHECK)
1877 throw(OP_WITH_WRONG_DIM);
1881 INLINE
void accumulate(idotprecision &dp,
const l_rvector & rv1,
const rmatrix_subv &rv2)
1883 #if(CXSC_INDEX_CHECK)
1884 throw(OP_WITH_WRONG_DIM);
1888 INLINE
void accumulate(idotprecision &dp,
const rvector_slice & rv1,
const l_rmatrix_subv &rv2)
1890 #if(CXSC_INDEX_CHECK)
1891 throw(OP_WITH_WRONG_DIM);
1895 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice & rv1,
const rmatrix_subv &rv2)
1897 #if(CXSC_INDEX_CHECK)
1898 throw(OP_WITH_WRONG_DIM);
1902 INLINE
void accumulate(idotprecision &dp,
const l_rvector &rv,
const rvector_slice &sl)
1904 #if(CXSC_INDEX_CHECK)
1905 throw(OP_WITH_WRONG_DIM);
1909 INLINE
void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const l_rvector &rv2)
1911 #if(CXSC_INDEX_CHECK)
1912 throw(OP_WITH_WRONG_DIM);
1916 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const rvector &rv2)
1918 #if(CXSC_INDEX_CHECK)
1919 throw(OP_WITH_WRONG_DIM);
1923 INLINE
void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const l_rvector_slice &rv2)
1925 #if(CXSC_INDEX_CHECK)
1926 throw(OP_WITH_WRONG_DIM);
1930 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const rvector_slice &rv2)
1932 #if(CXSC_INDEX_CHECK)
1933 throw(OP_WITH_WRONG_DIM);
1937 INLINE
void accumulate(idotprecision &dp,
const l_rvector_slice & sl1,
const rvector_slice &sl2)
1939 #if(CXSC_INDEX_CHECK)
1940 throw(OP_WITH_WRONG_DIM);
1944 INLINE
void accumulate(idotprecision &dp,
const rvector_slice & sl1,
const l_rvector_slice &sl2)
1946 #if(CXSC_INDEX_CHECK)
1947 throw(OP_WITH_WRONG_DIM);
1951 INLINE
void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const l_rmatrix_subv &rv2)
1953 #if(CXSC_INDEX_CHECK)
1954 throw(OP_WITH_WRONG_DIM);
1958 INLINE
void accumulate(idotprecision &dp,
const l_rmatrix_subv & rv1,
const rmatrix_subv &rv2)
1960 #if(CXSC_INDEX_CHECK)
1961 throw(OP_WITH_WRONG_DIM);
1967 INLINE l_real
operator *(
const rvector & rv1,
const l_rvector &rv2)
1968 #if(CXSC_INDEX_CHECK)
1969 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1973 INLINE l_real
operator *(
const rvector_slice &sl,
const l_rvector &rv)
1975 #if(CXSC_INDEX_CHECK)
1976 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1980 INLINE l_real
operator *(
const rvector &rv,
const l_rvector_slice &sl)
1982 #if(CXSC_INDEX_CHECK)
1983 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1987 INLINE l_real
operator *(
const rvector_slice & sl1,
const l_rvector_slice &sl2)
1989 #if(CXSC_INDEX_CHECK)
1990 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
1996 INLINE l_real
operator *(
const l_rvector & rv1,
const rvector &rv2)
1997 #if(CXSC_INDEX_CHECK)
1998 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2002 INLINE l_real
operator *(
const l_rvector_slice &sl,
const rvector &rv)
2004 #if(CXSC_INDEX_CHECK)
2005 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2009 INLINE l_real
operator *(
const l_rvector &rv,
const rvector_slice &sl)
2011 #if(CXSC_INDEX_CHECK)
2012 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2016 INLINE l_real
operator *(
const l_rvector_slice & sl1,
const rvector_slice &sl2)
2018 #if(CXSC_INDEX_CHECK)
2019 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2025 INLINE l_rvector operator +(
const rvector &rv1,
const l_rvector &rv2)
2026 #if(CXSC_INDEX_CHECK)
2027 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2031 INLINE l_rvector operator +(
const rvector &rv,
const l_rvector_slice &sl)
2033 #if(CXSC_INDEX_CHECK)
2034 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2038 INLINE l_rvector operator +(
const rvector_slice &sl,
const l_rvector &rv)
2040 #if(CXSC_INDEX_CHECK)
2041 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2045 INLINE l_rvector operator +(
const rvector_slice &sl1,
const l_rvector_slice &sl2)
2047 #if(CXSC_INDEX_CHECK)
2048 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2054 INLINE l_rvector operator +(
const l_rvector &rv1,
const rvector &rv2)
2055 #if(CXSC_INDEX_CHECK)
2056 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2060 INLINE l_rvector operator +(
const l_rvector &rv,
const rvector_slice &sl)
2062 #if(CXSC_INDEX_CHECK)
2063 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2067 INLINE l_rvector operator +(
const l_rvector_slice &sl,
const rvector &rv)
2069 #if(CXSC_INDEX_CHECK)
2070 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2074 INLINE l_rvector operator +(
const l_rvector_slice &sl1,
const rvector_slice &sl2)
2076 #if(CXSC_INDEX_CHECK)
2077 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2083 INLINE l_rvector &
operator +=(l_rvector &rv1,
const rvector &rv2)
2084 #if(CXSC_INDEX_CHECK)
2085 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2089 INLINE l_rvector &
operator +=(l_rvector &rv,
const rvector_slice &sl)
2091 #if(CXSC_INDEX_CHECK)
2092 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2098 INLINE l_rvector operator -(
const rvector &rv1,
const l_rvector &rv2)
2099 #if(CXSC_INDEX_CHECK)
2100 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2104 INLINE l_rvector operator -(
const rvector &rv,
const l_rvector_slice &sl)
2106 #if(CXSC_INDEX_CHECK)
2107 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2111 INLINE l_rvector operator -(
const rvector_slice &sl,
const l_rvector &rv)
2113 #if(CXSC_INDEX_CHECK)
2114 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2118 INLINE l_rvector operator -(
const rvector_slice &sl1,
const l_rvector_slice &sl2)
2120 #if(CXSC_INDEX_CHECK)
2121 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2127 INLINE l_rvector operator -(
const l_rvector &rv1,
const rvector &rv2)
2128 #if(CXSC_INDEX_CHECK)
2129 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2133 INLINE l_rvector operator -(
const l_rvector &rv,
const rvector_slice &sl)
2135 #if(CXSC_INDEX_CHECK)
2136 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2140 INLINE l_rvector operator -(
const l_rvector_slice &sl,
const rvector &rv)
2142 #if(CXSC_INDEX_CHECK)
2143 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2147 INLINE l_rvector operator -(
const l_rvector_slice &sl1,
const rvector_slice &sl2)
2149 #if(CXSC_INDEX_CHECK)
2150 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2154 INLINE l_rvector & operator -=(l_rvector &rv1,
const rvector &rv2)
2156 #if(CXSC_INDEX_CHECK)
2157 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2161 INLINE l_rvector &operator -=(l_rvector &rv,
const rvector_slice &sl)
2163 #if(CXSC_INDEX_CHECK)
2164 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>);
2171 #ifdef _CXSC_INCL_INL
2172 #include "vector.inl"
2173 #include "l_rvector.inl"
2176 #ifdef _CXSC_RMATRIX_HPP_INCLUDED
2177 # ifdef _CXSC_INCL_INL
2178 # include "lrvecrmat.inl"
2180 # include "lrvecrmat.hpp"
2184 #ifdef _CXSC_IMATRIX_HPP_INCLUDED
2185 # ifdef _CXSC_INCL_INL
2186 # include "cvecimat.inl"
2188 # include "cvecimat.hpp"
2192 #ifdef _CXSC_IVECTOR_HPP_INCLUDED
2193 # ifdef _CXSC_INCL_INL
2194 # include "lrvecivec.inl"
2196 # include "lrvecivec.hpp"