26 #ifndef _CXSC_RVECTOR_HPP_INCLUDED
27 #define _CXSC_RVECTOR_HPP_INCLUDED
29 #include "xscclass.hpp"
76 #ifdef _CXSC_FRIEND_TPL
77 template <
class V,
class MS,
class S>
friend void _vmsconstr(V &v,
const MS &m)
79 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<MS>);
83 template <
class V,
class M,
class S>
friend void _vmconstr(V &v,
const M &m)
85 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
89 template <
class V>
friend void _vresize(V &rv)
throw();
90 template <
class V,
class S>
friend void _vresize(V &rv,
const int &len)
92 throw(ERROR__WRONG_BOUNDARIES<V>);
96 template <
class V,
class S>
friend void _vresize(V &rv,
const int &lb,
const int &ub)
98 throw(ERROR__WRONG_BOUNDARIES<V>);
102 template <
class V1,
class V2,
class S>
friend V1 &_vvassign(V1 &rv1,
const V2 &rv2)
throw();
103 template <
class V,
class S>
friend V & _vsassign(V &rv,
const S &r)
throw();
104 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
throw();
105 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
106 #if(CXSC_INDEX_CHECK)
107 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
111 template <
class V,
class M,
class S>
friend V &_vmassign(V &v,
const M &m)
112 #if(CXSC_INDEX_CHECK)
113 throw(ERROR__TYPE_CAST_OF_THICK_OBJ<M>);
117 template <
class M,
class V,
class S>
friend M &_mvassign(M &m,
const V &v)
throw();
118 template <
class MV,
class V>
friend MV &_mvvassign(MV &v,
const V &rv)
119 #if(CXSC_INDEX_CHECK)
120 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
124 template <
class MV,
class V>
friend V _mvabs(
const MV &mv)
throw();
127 template <
class DP,
class V1,
class V2>
friend void _vvaccu(DP &dp,
const V1 & rv1,
const V2 &rv2)
128 #if(CXSC_INDEX_CHECK)
129 throw(OP_WITH_WRONG_DIM);
133 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
134 #if(CXSC_INDEX_CHECK)
135 throw(OP_WITH_WRONG_DIM);
141 template <
class V1,
class V2,
class E>
friend E _vvmult(
const V1 & rv1,
const V2 &rv2)
142 #if(CXSC_INDEX_CHECK)
143 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
147 template <
class VS,
class V,
class E>
friend E _vsvmult(
const VS & sl,
const V &rv)
148 #if(CXSC_INDEX_CHECK)
149 throw(ERROR__OP_WITH_WRONG_DIM<V>);
153 template <
class V,
class S>
friend V &_vsmultassign(V &rv,
const S &r)
throw();
154 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
throw();
155 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
throw();
156 template <
class V1,
class V2,
class E>
friend E _vvplus(
const V1 &rv1,
const V2 &rv2)
157 #if(CXSC_INDEX_CHECK)
158 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
162 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
163 #if(CXSC_INDEX_CHECK)
164 throw(ERROR__OP_WITH_WRONG_DIM<V>);
168 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
169 #if(CXSC_INDEX_CHECK)
170 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
174 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
175 #if(CXSC_INDEX_CHECK)
176 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
180 template <
class V1,
class V2>
friend V1 &_vvplusassign(V1 &rv1,
const V2 &rv2)
181 #if(CXSC_INDEX_CHECK)
182 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
186 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
187 #if(CXSC_INDEX_CHECK)
188 throw(ERROR__OP_WITH_WRONG_DIM<V>);
192 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
193 #if(CXSC_INDEX_CHECK)
194 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
198 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
199 #if(CXSC_INDEX_CHECK)
200 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
204 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
205 #if(CXSC_INDEX_CHECK)
206 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
210 template <
class V1,
class V2>
friend V1 &_vvminusassign(V1 &rv1,
const V2 &rv2)
211 #if(CXSC_INDEX_CHECK)
212 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
216 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
217 #if(CXSC_INDEX_CHECK)
218 throw(ERROR__OP_WITH_WRONG_DIM<V>);
222 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
223 #if(CXSC_INDEX_CHECK)
224 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
228 template <
class V>
friend V _vminus(
const V &rv)
throw();
229 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
throw();
230 template <
class V1,
class V2,
class E>
friend E _vvminus(
const V1 &rv1,
const V2 &rv2)
231 #if(CXSC_INDEX_CHECK)
232 throw(ERROR__OP_WITH_WRONG_DIM<E>);
236 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
237 #if(CXSC_INDEX_CHECK)
238 throw(ERROR__OP_WITH_WRONG_DIM<E>);
242 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
243 #if(CXSC_INDEX_CHECK)
244 throw(ERROR__OP_WITH_WRONG_DIM<E>);
248 template <
class MV1,
class MV2,
class E>
friend E _mvmvconv(
const MV1 &rv1,
const MV2 &rv2)
249 #if(CXSC_INDEX_CHECK)
250 throw(ERROR__OP_WITH_WRONG_DIM<E>);
254 template <
class MV,
class V,
class E>
friend E _mvvconv(
const MV &rv1,
const V &rv2)
255 #if(CXSC_INDEX_CHECK)
256 throw(ERROR__OP_WITH_WRONG_DIM<E>);
260 template <
class V,
class MV>
friend V &_vmvconvassign(V &rv,
const MV &v)
261 #if(CXSC_INDEX_CHECK)
262 throw(ERROR__OP_WITH_WRONG_DIM<V>);
267 template <
class M,
class V,
class E>
friend E _mvmult(
const M &m,
const V &v)
268 #if(CXSC_INDEX_CHECK)
269 throw(ERROR__OP_WITH_WRONG_DIM<M>);
273 template <
class M,
class V,
class E>
friend E _mvimult(
const M &m,
const V &v)
274 #if(CXSC_INDEX_CHECK)
275 throw(ERROR__OP_WITH_WRONG_DIM<M>);
279 template <
class M,
class V,
class E>
friend E _mvcmult(
const M &m,
const V &v)
280 #if(CXSC_INDEX_CHECK)
281 throw(ERROR__OP_WITH_WRONG_DIM<M>);
285 template <
class M,
class V,
class E>
friend E _mvcimult(
const M &m,
const V &v)
286 #if(CXSC_INDEX_CHECK)
287 throw(ERROR__OP_WITH_WRONG_DIM<M>);
291 template <
class V,
class M,
class E>
friend E _vmmult(
const V &v,
const M &m)
292 #if(CXSC_INDEX_CHECK)
293 throw(ERROR__OP_WITH_WRONG_DIM<M>);
297 template <
class V,
class M,
class E>
friend E _vmimult(
const V &v,
const M &m)
298 #if(CXSC_INDEX_CHECK)
299 throw(ERROR__OP_WITH_WRONG_DIM<M>);
303 template <
class V,
class M,
class E>
friend E _vmcmult(
const V &v,
const M &m)
304 #if(CXSC_INDEX_CHECK)
305 throw(ERROR__OP_WITH_WRONG_DIM<M>);
309 template <
class V,
class M,
class E>
friend E _vmcimult(
const V &v,
const M &m)
310 #if(CXSC_INDEX_CHECK)
311 throw(ERROR__OP_WITH_WRONG_DIM<M>);
315 template <
class V,
class M,
class S>
friend V &_vmmultassign(V &v,
const M &m)
316 #if(CXSC_INDEX_CHECK)
317 throw(ERROR__OP_WITH_WRONG_DIM<M>);
321 template <
class V,
class M,
class S>
friend V &_vmimultassign(V &v,
const M &m)
322 #if(CXSC_INDEX_CHECK)
323 throw(ERROR__OP_WITH_WRONG_DIM<M>);
327 template <
class V,
class M,
class S>
friend V &_vmcmultassign(V &v,
const M &m)
328 #if(CXSC_INDEX_CHECK)
329 throw(ERROR__OP_WITH_WRONG_DIM<M>);
333 template <
class V,
class M,
class S>
friend V &_vmcimultassign(V &v,
const M &m)
334 #if(CXSC_INDEX_CHECK)
335 throw(ERROR__OP_WITH_WRONG_DIM<M>);
339 template <
class MS,
class V,
class E>
friend E _msvmult(
const MS &ms,
const V &v)
340 #if(CXSC_INDEX_CHECK)
341 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
345 template <
class MS,
class V,
class E>
friend E _msvimult(
const MS &ms,
const V &v)
346 #if(CXSC_INDEX_CHECK)
347 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
351 template <
class MS,
class V,
class E>
friend E _msvcmult(
const MS &ms,
const V &v)
352 #if(CXSC_INDEX_CHECK)
353 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
357 template <
class MS,
class V,
class E>
friend E _msvcimult(
const MS &ms,
const V &v)
358 #if(CXSC_INDEX_CHECK)
359 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
363 template <
class V,
class MS,
class E>
friend E _vmsmult(
const V &v,
const MS &ms)
364 #if(CXSC_INDEX_CHECK)
365 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
369 template <
class V,
class MS,
class E>
friend E _vmsimult(
const V &v,
const MS &ms)
370 #if(CXSC_INDEX_CHECK)
371 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
375 template <
class V,
class MS,
class E>
friend E _vmscmult(
const V &v,
const MS &ms)
376 #if(CXSC_INDEX_CHECK)
377 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
381 template <
class V,
class MS,
class E>
friend E _vmscimult(
const V &v,
const MS &ms)
382 #if(CXSC_INDEX_CHECK)
383 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
387 template <
class V,
class MS,
class S>
friend V &_vmsmultassign(V &v,
const MS &ms)
388 #if(CXSC_INDEX_CHECK)
389 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
393 template <
class V,
class MS,
class S>
friend V &_vmsimultassign(V &v,
const MS &ms)
394 #if(CXSC_INDEX_CHECK)
395 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
399 template <
class V,
class MS,
class S>
friend V &_vmscmultassign(V &v,
const MS &ms)
400 #if(CXSC_INDEX_CHECK)
401 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
405 template <
class V,
class MS,
class S>
friend V &_vmscimultassign(V &v,
const MS &ms)
406 #if(CXSC_INDEX_CHECK)
407 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
411 template <
class V,
class MV,
class S>
friend S _vmvmult(
const V &rv1,
const MV &rv2)
412 #if(CXSC_INDEX_CHECK)
413 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
417 template <
class V,
class MV,
class S>
friend S _vmvimult(
const V &rv1,
const MV &rv2)
418 #if(CXSC_INDEX_CHECK)
419 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
423 template <
class V,
class MV,
class S>
friend S _vmvcmult(
const V &rv1,
const MV &rv2)
424 #if(CXSC_INDEX_CHECK)
425 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
429 template <
class V,
class MV,
class S>
friend S _vmvcimult(
const V &rv1,
const MV &rv2)
430 #if(CXSC_INDEX_CHECK)
431 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
435 template <
class MV,
class S,
class E>
friend E _mvsmult(
const MV &rv,
const S &s)
throw();
436 template <
class MV1,
class MV2,
class E>
friend E _mvmvplus(
const MV1 &rv1,
const MV2 &rv2)
437 #if(CXSC_INDEX_CHECK)
438 throw(ERROR__OP_WITH_WRONG_DIM<E>);
442 template <
class MV,
class V,
class E>
friend E _mvvplus(
const MV &rv1,
const V &rv2)
443 #if(CXSC_INDEX_CHECK)
444 throw(ERROR__OP_WITH_WRONG_DIM<E>);
448 template <
class MV,
class V,
class E>
friend E _mvvminus(
const MV &rv1,
const V &rv2)
449 #if(CXSC_INDEX_CHECK)
450 throw(ERROR__OP_WITH_WRONG_DIM<E>);
454 template <
class V,
class MV,
class E>
friend E _vmvminus(
const V &rv1,
const MV &rv2)
455 #if(CXSC_INDEX_CHECK)
456 throw(ERROR__OP_WITH_WRONG_DIM<E>);
460 template <
class MV1,
class MV2,
class E>
friend E _mvmvminus(
const MV1 &rv1,
const MV2 &rv2)
461 #if(CXSC_INDEX_CHECK)
462 throw(ERROR__OP_WITH_WRONG_DIM<E>);
466 template <
class MV,
class V>
friend MV &_mvvplusassign(MV &v,
const V &rv)
467 #if(CXSC_INDEX_CHECK)
468 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
472 template <
class MV,
class V>
friend MV &_mvvminusassign(MV &v,
const V &rv)
473 #if(CXSC_INDEX_CHECK)
474 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
479 template <
class V1,
class V2,
class E>
friend E _vvconv(
const V1 &rv1,
const V2 &rv2)
480 #if(CXSC_INDEX_CHECK)
481 throw(ERROR__OP_WITH_WRONG_DIM<E>);
485 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
486 #if(CXSC_INDEX_CHECK)
487 throw(ERROR__OP_WITH_WRONG_DIM<E>);
492 template <
class DP,
class V,
class SV>
friend void _vmvaccu(DP &dp,
const V & rv1,
const SV &rv2)
493 #if(CXSC_INDEX_CHECK)
494 throw(OP_WITH_WRONG_DIM);
500 template <
class V,
class S>
friend V &_vsdivassign(V &rv,
const S &r)
throw();
501 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
throw();
502 template <
class V,
class S,
class E>
friend E _vsmult(
const V &rv,
const S &s)
throw();
503 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
throw();
504 template <
class V1,
class V2>
friend bool _vveq(
const V1 &rv1,
const V2 &rv2)
throw();
505 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
throw();
506 template <
class V1,
class V2>
friend bool _vvneq(
const V1 &rv1,
const V2 &rv2)
throw();
507 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
throw();
508 template <
class V1,
class V2>
friend bool _vvless(
const V1 &rv1,
const V2 &rv2)
throw();
509 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
throw();
510 template <
class V1,
class V2>
friend bool _vvleq(
const V1 &rv1,
const V2 &rv2)
throw();
511 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
throw();
512 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
throw();
513 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
throw();
514 template <
class V>
friend bool _vnot(
const V &rv)
throw();
515 template <
class V>
friend void *_vvoid(
const V &rv)
throw();
516 template <
class V,
class E>
friend E _vabs(
const V &rv)
throw();
517 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
throw();
518 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
throw();
519 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
throw();
520 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
throw();
521 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
throw();
522 template <
class VS>
friend bool _vsnot(
const VS &sl)
throw();
523 template <
class VS>
friend void *_vsvoid(
const VS &sl)
throw();
524 template <
class V>
friend std::ostream &_vout(std::ostream &s,
const V &rv)
throw();
525 template <
class V>
friend std::istream &_vin(std::istream &s, V &rv)
throw();
527 template <
class V,
class MV2,
class S>
friend V &_vmvassign(V &v,
const MV2 &rv)
throw();
528 template <
class MV,
class S,
class E>
friend E _mvsdiv(
const MV &rv,
const S &s)
throw();
532 template <
class MV,
class V>
friend MV &_mvvconvassign(MV &v,
const V &rv)
533 #if(CXSC_INDEX_CHECK)
534 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
538 template <
class MV,
class V>
friend MV &_mvvsectassign(MV &v,
const V &rv)
539 #if(CXSC_INDEX_CHECK)
540 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
546 template <
class V1,
class V2>
friend V1 &_vvsetinf(V1 &rv1,
const V2 &rv2)
547 #if(CXSC_INDEX_CHECK)
548 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
552 template <
class V1,
class V2>
friend V1 &_vvusetinf(V1 &rv1,
const V2 &rv2)
553 #if(CXSC_INDEX_CHECK)
554 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
558 template <
class V1,
class V2>
friend V1 &_vvsetsup(V1 &rv1,
const V2 &rv2)
559 #if(CXSC_INDEX_CHECK)
560 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
564 template <
class V1,
class V2>
friend V1 &_vvusetsup(V1 &rv1,
const V2 &rv2)
565 #if(CXSC_INDEX_CHECK)
566 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
570 template <
class VS,
class V>
friend VS &_vsvsetinf(VS &sl,
const V &rv)
571 #if(CXSC_INDEX_CHECK)
572 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
576 template <
class VS,
class V>
friend VS &_vsvusetinf(VS &sl,
const V &rv)
577 #if(CXSC_INDEX_CHECK)
578 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
582 template <
class VS,
class V>
friend VS &_vsvsetsup(VS &sl,
const V &rv)
583 #if(CXSC_INDEX_CHECK)
584 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
588 template <
class VS,
class V>
friend VS &_vsvusetsup(VS &sl,
const V &rv)
589 #if(CXSC_INDEX_CHECK)
590 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
594 template <
class MV,
class V>
friend MV &_mvvsetinf(MV &v,
const V &rv)
595 #if(CXSC_INDEX_CHECK)
596 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
600 template <
class MV,
class V>
friend MV &_mvvusetinf(MV &v,
const V &rv)
601 #if(CXSC_INDEX_CHECK)
602 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
606 template <
class MV,
class V>
friend MV &_mvvsetsup(MV &v,
const V &rv)
607 #if(CXSC_INDEX_CHECK)
608 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
612 template <
class MV,
class V>
friend MV &_mvvusetsup(MV &v,
const V &rv)
613 #if(CXSC_INDEX_CHECK)
614 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
618 template <
class V,
class E>
friend E _vdiam(
const V &rv)
throw();
619 template <
class V,
class E>
friend E _vmid(
const V &rv)
throw();
620 template <
class V,
class E>
friend E _vinf(
const V &rv)
throw();
621 template <
class V,
class E>
friend E _vsup(
const V &rv)
throw();
622 template <
class VS,
class E>
friend E _vsdiam(
const VS &sl)
throw();
623 template <
class VS,
class E>
friend E _vsmid(
const VS &sl)
throw();
624 template <
class VS,
class E>
friend E _vsinf(
const VS &sl)
throw();
625 template <
class VS,
class E>
friend E _vssup(
const VS &sl)
throw();
626 template <
class MV,
class V>
friend V _mvdiam(
const MV &mv)
throw();
627 template <
class MV,
class V>
friend V _mvmid(
const MV &mv)
throw();
628 template <
class MV,
class V>
friend V _mvinf(
const MV &mv)
throw();
629 template <
class MV,
class V>
friend V _mvsup(
const MV &mv)
throw();
632 template <
class V1,
class V2,
class E>
friend E _vvimult(
const V1 & rv1,
const V2 &rv2)
633 #if(CXSC_INDEX_CHECK)
634 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
638 template <
class VS,
class V,
class E>
friend E _vsvimult(
const VS & sl,
const V &rv)
639 #if(CXSC_INDEX_CHECK)
640 throw(ERROR__OP_WITH_WRONG_DIM<V>);
645 template <
class V1,
class V2>
friend V1 &_vvconvassign(V1 &rv1,
const V2 &rv2)
646 #if(CXSC_INDEX_CHECK)
647 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
651 template <
class V1,
class V2,
class E>
friend E _vvsect(
const V1 &rv1,
const V2 &rv2)
652 #if(CXSC_INDEX_CHECK)
653 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
657 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
658 #if(CXSC_INDEX_CHECK)
659 throw(ERROR__OP_WITH_WRONG_DIM<E>);
663 template <
class V1,
class V2>
friend V1 &_vvsectassign(V1 &rv1,
const V2 &rv2)
664 #if(CXSC_INDEX_CHECK)
665 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
670 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
671 #if(CXSC_INDEX_CHECK)
672 throw(ERROR__OP_WITH_WRONG_DIM<E>);
677 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
678 #if(CXSC_INDEX_CHECK)
679 throw(ERROR__OP_WITH_WRONG_DIM<V>);
683 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
684 #if(CXSC_INDEX_CHECK)
685 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
689 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
690 #if(CXSC_INDEX_CHECK)
691 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
696 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
697 #if(CXSC_INDEX_CHECK)
698 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
704 template <
class V,
class S,
class E>
friend E _vsdiv(
const V &rv,
const S &s)
throw();
709 template <
class V,
class E>
friend E _vim(
const V &rv)
throw();
710 template <
class V,
class E>
friend E _vre(
const V &rv)
throw();
711 template <
class MV,
class V>
friend V _mvim(
const MV &mv)
throw();
712 template <
class MV,
class V>
friend V _mvre(
const MV &mv)
throw();
713 template <
class MV,
class V>
friend MV &_mvvsetim(MV &v,
const V &rv)
714 #if(CXSC_INDEX_CHECK)
715 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
719 template <
class MV,
class V>
friend MV &_mvvsetre(MV &v,
const V &rv)
720 #if(CXSC_INDEX_CHECK)
721 throw(ERROR__OP_WITH_WRONG_DIM<MV>);
725 template <
class V1,
class V2>
friend V1 &_vvsetim(V1 &rv1,
const V2 &rv2)
726 #if(CXSC_INDEX_CHECK)
727 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
731 template <
class V1,
class V2>
friend V1 &_vvsetre(V1 &rv1,
const V2 &rv2)
732 #if(CXSC_INDEX_CHECK)
733 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
737 template <
class VS,
class E>
friend E _vsim(
const VS &sl)
throw();
738 template <
class VS,
class E>
friend E _vsre(
const VS &sl)
throw();
739 template <
class VS,
class V>
friend VS &_vsvsetim(VS &sl,
const V &rv)
740 #if(CXSC_INDEX_CHECK)
741 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
745 template <
class VS,
class V>
friend VS &_vsvsetre(VS &sl,
const V &rv)
746 #if(CXSC_INDEX_CHECK)
747 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
753 template <
class V1,
class V2,
class E>
friend E _vvcmult(
const V1 & rv1,
const V2 &rv2)
754 #if(CXSC_INDEX_CHECK)
755 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
759 template <
class VS,
class V,
class E>
friend E _vsvcmult(
const VS & sl,
const V &rv)
760 #if(CXSC_INDEX_CHECK)
761 throw(ERROR__OP_WITH_WRONG_DIM<V>);
791 template <
class V1,
class V2,
class E>
friend E _vvcimult(
const V1 & rv1,
const V2 &rv2)
792 #if(CXSC_INDEX_CHECK)
793 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
797 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
798 #if(CXSC_INDEX_CHECK)
799 throw(ERROR__OP_WITH_WRONG_DIM<V>);
804 template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
805 #if(CXSC_INDEX_CHECK)
806 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
815 template <
class V,
class MS,
class E>
friend E _vmslmult(
const V &v,
const MS &ms)
816 #if(CXSC_INDEX_CHECK)
817 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
821 template <
class M,
class V,
class E>
friend E _mvlmult(
const M &m,
const V &v)
822 #if(CXSC_INDEX_CHECK)
823 throw(ERROR__OP_WITH_WRONG_DIM<M>);
827 template <
class MS,
class V,
class E>
friend E _msvlmult(
const MS &ms,
const V &v)
828 #if(CXSC_INDEX_CHECK)
829 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
834 template <
class V,
class M,
class E>
friend E _vmlmult(
const V &v,
const M &m)
835 #if(CXSC_INDEX_CHECK)
836 throw(ERROR__OP_WITH_WRONG_DIM<M>);
842 template <
class V1,
class V2,
class E>
friend E _vvlmult(
const V1 & rv1,
const V2 &rv2)
843 #if(CXSC_INDEX_CHECK)
844 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
848 template <
class VS,
class V,
class E>
friend E _vsvlmult(
const VS & sl,
const V &rv)
849 #if(CXSC_INDEX_CHECK)
850 throw(ERROR__OP_WITH_WRONG_DIM<V>);
857 template <
class V1,
class V2,
class E>
friend E _vvlimult(
const V1 & rv1,
const V2 &rv2)
858 #if(CXSC_INDEX_CHECK)
859 throw(ERROR__OP_WITH_WRONG_DIM<V1>);
863 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
864 #if(CXSC_INDEX_CHECK)
865 throw(ERROR__OP_WITH_WRONG_DIM<V>);
870 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
871 #if(CXSC_INDEX_CHECK)
872 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
878 template <
class M,
class V,
class E>
friend E _mvlimult(
const M &m,
const V &v)
879 #if(CXSC_INDEX_CHECK)
880 throw(ERROR__OP_WITH_WRONG_DIM<M>);
884 template <
class MS,
class V,
class E>
friend E _msvlimult(
const MS &ms,
const V &v)
885 #if(CXSC_INDEX_CHECK)
886 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
890 template <
class V,
class M,
class E>
friend E _vmlimult(
const V &v,
const M &m)
891 #if(CXSC_INDEX_CHECK)
892 throw(ERROR__OP_WITH_WRONG_DIM<M>);
896 template <
class V,
class MS,
class E>
friend E _vmslimult(
const V &v,
const MS &ms)
897 #if(CXSC_INDEX_CHECK)
898 throw(ERROR__OP_WITH_WRONG_DIM<MS>);
909 double* to_blas_array()
const {
return (
double*)dat; }
914 explicit INLINE
rvector(
const int &i)
throw();
916 explicit INLINE
rvector(
const class index &i)
throw();
919 explicit INLINE
rvector(
const int &i1,
const int &i2)
921 #if(CXSC_INDEX_CHECK)
922 throw(ERROR_RVECTOR_WRONG_BOUNDARIES,ERROR_RVECTOR_NO_MORE_MEMORY);
932 #if(CXSC_INDEX_CHECK)
933 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
939 #if(CXSC_INDEX_CHECK)
940 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
968 #if(CXSC_INDEX_CHECK)
969 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
975 #if(CXSC_INDEX_CHECK)
976 throw(ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
990 INLINE ~
rvector() {
delete [] dat; }
995 #if(CXSC_INDEX_CHECK)
996 throw(ERROR_RVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_RVECTOR_USE_OF_UNINITIALIZED_OBJ);
1000 friend INLINE
int Lb(
const rvector &rv)
throw() {
return rv.l; }
1003 friend INLINE
int Ub(
const rvector &rv)
throw() {
return rv.u; }
1012 #if(CXSC_INDEX_CHECK)
1013 throw(ERROR_RVECTOR_ELEMENT_NOT_IN_VEC);
1020 #if(CXSC_INDEX_CHECK)
1021 throw(ERROR_RVECTOR_ELEMENT_NOT_IN_VEC);
1030 #if(CXSC_INDEX_CHECK)
1031 throw(ERROR_RVECTOR_SUB_ARRAY_TOO_BIG);
1037 #if(CXSC_INDEX_CHECK)
1038 throw(ERROR_RVECTOR_SUB_ARRAY_TOO_BIG);
1052 INLINE
operator void*()
throw();
1085 #ifdef _CXSC_FRIEND_TPL
1087 template <
class VS1,
class VS2>
friend VS1 & _vsvsassign(VS1 &sl1,
const VS2 &sl2)
1088 #if(CXSC_INDEX_CHECK)
1089 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1093 template <
class V,
class VS,
class S>
friend V & _vvsassign(V &rv,
const VS &sl)
throw();
1094 template <
class VS,
class V>
friend VS & _vsvassign(VS &sl,
const V &rv)
1095 #if(CXSC_INDEX_CHECK)
1096 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
1100 template <
class VS,
class S>
friend VS & _vssassign(VS &sl,
const S &r)
throw();
1101 template <
class VS,
class M,
class S>
friend VS &_vsmmultassign(VS &v,
const M &m)
1102 #if(CXSC_INDEX_CHECK)
1103 throw(ERROR__OP_WITH_WRONG_DIM<M>);
1108 template <
class VS,
class S>
friend VS &_vssmultassign(VS &rv,
const S &r)
throw();
1109 template <
class VS,
class S>
friend VS &_vssdivassign(VS &rv,
const S &r)
throw();
1111 template <
class VS,
class V>
friend bool _vsveq(
const VS &sl,
const V &rv)
throw();
1112 template <
class VS,
class V>
friend bool _vsvneq(
const VS &sl,
const V &rv)
throw();
1113 template <
class VS,
class V>
friend bool _vsvless(
const VS &sl,
const V &rv)
throw();
1114 template <
class VS,
class V>
friend bool _vsvleq(
const VS &sl,
const V &rv)
throw();
1115 template <
class V,
class VS>
friend bool _vvsless(
const V &rv,
const VS &sl)
throw();
1116 template <
class V,
class VS>
friend bool _vvsleq(
const V &rv,
const VS &sl)
throw();
1117 template <
class VS,
class E>
friend E _vsabs(
const VS &sl)
throw();
1118 template <
class VS1,
class VS2>
friend bool _vsvseq(
const VS1 &sl1,
const VS2 &sl2)
throw();
1119 template <
class VS1,
class VS2>
friend bool _vsvsneq(
const VS1 &sl1,
const VS2 &sl2)
throw();
1120 template <
class VS1,
class VS2>
friend bool _vsvsless(
const VS1 &sl1,
const VS2 &sl2)
throw();
1121 template <
class VS1,
class VS2>
friend bool _vsvsleq(
const VS1 &sl1,
const VS2 &sl2)
throw();
1122 template <
class VS>
friend bool _vsnot(
const VS &sl)
throw();
1123 template <
class VS>
friend void *_vsvoid(
const VS &sl)
throw();
1124 template <
class V>
friend std::ostream &_vsout(std::ostream &s,
const V &rv)
throw();
1125 template <
class V>
friend std::istream &_vsin(std::istream &s, V &rv)
throw();
1127 template <
class DP,
class VS,
class V>
friend void _vsvaccu(DP &dp,
const VS & sl,
const V &rv)
1128 #if(CXSC_INDEX_CHECK)
1129 throw(OP_WITH_WRONG_DIM);
1133 template <
class DP,
class VS1,
class VS2>
friend void _vsvsaccu(DP &dp,
const VS1 & sl1,
const VS2 &sl2)
1134 #if(CXSC_INDEX_CHECK)
1135 throw(OP_WITH_WRONG_DIM);
1140 template <
class VS,
class S,
class E>
friend E _vssdiv(
const VS &sl,
const S &s)
throw();
1141 template <
class VS,
class S,
class E>
friend E _vssmult(
const VS &sl,
const S &s)
throw();
1142 template <
class VS,
class V,
class E>
friend E _vsvmult(
const VS & sl,
const V &rv)
1143 #if(CXSC_INDEX_CHECK)
1144 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1148 template <
class V,
class VS,
class E>
friend E _vvsplus(
const V &rv,
const VS &sl)
1149 #if(CXSC_INDEX_CHECK)
1150 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1154 template <
class VS1,
class VS2,
class E>
friend E _vsvsplus(
const VS1 &s1,
const VS2 &s2)
1155 #if(CXSC_INDEX_CHECK)
1156 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1160 template <
class VS1,
class VS2,
class E>
friend E _vsvsminus(
const VS1 &s1,
const VS2 &s2)
1161 #if(CXSC_INDEX_CHECK)
1162 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1166 template <
class V,
class VS>
friend V &_vvsplusassign(V &rv,
const VS &sl)
1167 #if(CXSC_INDEX_CHECK)
1168 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1172 template <
class VS,
class V>
friend VS &_vsvplusassign(VS &sl,
const V &rv)
1173 #if(CXSC_INDEX_CHECK)
1174 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
1178 template <
class VS1,
class VS2>
friend VS1 &_vsvsplusassign(VS1 &sl1,
const VS2 &sl2)
1179 #if(CXSC_INDEX_CHECK)
1180 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1184 template <
class VS1,
class VS2>
friend VS1 &_vsvsminusassign(VS1 &sl1,
const VS2 &sl2)
1185 #if(CXSC_INDEX_CHECK)
1186 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1190 template <
class V,
class VS>
friend V &_vvsminusassign(V &rv,
const VS &sl)
1191 #if(CXSC_INDEX_CHECK)
1192 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1196 template <
class VS,
class V>
friend VS &_vsvminusassign(VS &sl,
const V &rv)
1197 #if(CXSC_INDEX_CHECK)
1198 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
1202 template <
class VS,
class V>
friend V _vsminus(
const VS &sl)
throw();
1203 template <
class V,
class VS,
class E>
friend E _vvsminus(
const V &rv,
const VS &sl)
1204 #if(CXSC_INDEX_CHECK)
1205 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1209 template <
class VS,
class V,
class E>
friend E _vsvminus(
const VS &sl,
const V &rv)
1210 #if(CXSC_INDEX_CHECK)
1211 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1215 template <
class VS1,
class VS2,
class E>
friend E _vsvsmult(
const VS1 & sl1,
const VS2 &sl2)
1216 #if(CXSC_INDEX_CHECK)
1217 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1222 template <
class V,
class VS,
class E>
friend E _vvsconv(
const V &rv,
const VS &sl)
1223 #if(CXSC_INDEX_CHECK)
1224 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1228 template <
class VS1,
class VS2,
class E>
friend E _vsvsconv(
const VS1 &s1,
const VS2 &s2)
1229 #if(CXSC_INDEX_CHECK)
1230 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1234 template <
class V,
class VS,
class E>
friend E _vvssect(
const V &rv,
const VS &sl)
1235 #if(CXSC_INDEX_CHECK)
1236 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1240 template <
class VS1,
class VS2,
class E>
friend E _vsvssect(
const VS1 &s1,
const VS2 &s2)
1241 #if(CXSC_INDEX_CHECK)
1242 throw(ERROR__OP_WITH_WRONG_DIM<E>);
1247 template <
class V,
class VS>
friend V &_vvssetinf(V &rv,
const VS &sl)
1248 #if(CXSC_INDEX_CHECK)
1249 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1253 template <
class V,
class VS>
friend V &_vvsusetinf(V &rv,
const VS &sl)
1254 #if(CXSC_INDEX_CHECK)
1255 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1259 template <
class V,
class VS>
friend V &_vvssetsup(V &rv,
const VS &sl)
1260 #if(CXSC_INDEX_CHECK)
1261 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1265 template <
class V,
class VS>
friend V &_vvsusetsup(V &rv,
const VS &sl)
1266 #if(CXSC_INDEX_CHECK)
1267 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1271 template <
class VS1,
class VS2>
friend VS1 &_vsvssetinf(VS1 &sl1,
const VS2 &sl2)
1272 #if(CXSC_INDEX_CHECK)
1273 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1277 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetinf(VS1 &sl1,
const VS2 &sl2)
1278 #if(CXSC_INDEX_CHECK)
1279 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1283 template <
class VS1,
class VS2>
friend VS1 &_vsvssetsup(VS1 &sl1,
const VS2 &sl2)
1284 #if(CXSC_INDEX_CHECK)
1285 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1289 template <
class VS1,
class VS2>
friend VS1 &_vsvsusetsup(VS1 &sl1,
const VS2 &sl2)
1290 #if(CXSC_INDEX_CHECK)
1291 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1298 template <
class V,
class VS>
friend V &_vvsconvassign(V &rv,
const VS &sl)
1299 #if(CXSC_INDEX_CHECK)
1300 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1304 template <
class VS,
class V>
friend VS &_vsvconvassign(VS &sl,
const V &rv)
1305 #if(CXSC_INDEX_CHECK)
1306 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
1310 template <
class VS1,
class VS2>
friend VS1 &_vsvsconvassign(VS1 &sl1,
const VS2 &sl2)
1311 #if(CXSC_INDEX_CHECK)
1312 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1317 template <
class V,
class VS>
friend V &_vvssectassign(V &rv,
const VS &sl)
1318 #if(CXSC_INDEX_CHECK)
1319 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1323 template <
class VS,
class V>
friend VS &_vsvsectassign(VS &sl,
const V &rv)
1324 #if(CXSC_INDEX_CHECK)
1325 throw(ERROR__OP_WITH_WRONG_DIM<VS>);
1329 template <
class VS1,
class VS2>
friend VS1 &_vsvssectassign(VS1 &sl1,
const VS2 &sl2)
1330 #if(CXSC_INDEX_CHECK)
1331 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1339 template <
class VS,
class V,
class E>
friend E _vsvimult(
const VS & sl,
const V &rv)
1340 #if(CXSC_INDEX_CHECK)
1341 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1345 template <
class VS1,
class VS2,
class E>
friend E _vsvsimult(
const VS1 & sl1,
const VS2 &sl2)
1346 #if(CXSC_INDEX_CHECK)
1347 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1352 template <
class VS1,
class VS2>
friend VS1 &_vsvssetim(VS1 &sl1,
const VS2 &sl2)
1353 #if(CXSC_INDEX_CHECK)
1354 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1358 template <
class VS1,
class VS2>
friend VS1 &_vsvssetre(VS1 &sl1,
const VS2 &sl2)
1359 #if(CXSC_INDEX_CHECK)
1360 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1364 template <
class V,
class VS>
friend V &_vvssetim(V &rv,
const VS &sl)
1365 #if(CXSC_INDEX_CHECK)
1366 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1370 template <
class V,
class VS>
friend V &_vvssetre(V &rv,
const VS &sl)
1371 #if(CXSC_INDEX_CHECK)
1372 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1379 template <
class VS,
class V,
class E>
friend E _vsvcmult(
const VS & sl,
const V &rv)
1380 #if(CXSC_INDEX_CHECK)
1381 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1385 template <
class VS1,
class VS2,
class E>
friend E _vsvscmult(
const VS1 & sl1,
const VS2 &sl2)
1386 #if(CXSC_INDEX_CHECK)
1387 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1392 template <
class VS,
class V,
class E>
friend E _vsvcimult(
const VS & sl,
const V &rv)
1393 #if(CXSC_INDEX_CHECK)
1394 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1398 template <
class VS1,
class VS2,
class E>
friend E _vsvscimult(
const VS1 & sl1,
const VS2 &sl2)
1399 #if(CXSC_INDEX_CHECK)
1400 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1405 template <
class VS,
class V,
class E>
friend E _vsvlmult(
const VS & sl,
const V &rv)
1406 #if(CXSC_INDEX_CHECK)
1407 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1411 template <
class VS1,
class VS2,
class E>
friend E _vsvslmult(
const VS1 & sl1,
const VS2 &sl2)
1412 #if(CXSC_INDEX_CHECK)
1413 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1418 template <
class VS,
class V,
class E>
friend E _vsvlimult(
const VS & sl,
const V &rv)
1419 #if(CXSC_INDEX_CHECK)
1420 throw(ERROR__OP_WITH_WRONG_DIM<V>);
1424 template <
class VS1,
class VS2,
class E>
friend E _vsvslimult(
const VS1 & sl1,
const VS2 &sl2)
1425 #if(CXSC_INDEX_CHECK)
1426 throw(ERROR__OP_WITH_WRONG_DIM<VS1>);
1439 explicit INLINE
rvector_slice(
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) { }
1441 explicit INLINE
rvector_slice(
rvector_slice &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) { }
1448 #if(CXSC_INDEX_CHECK)
1449 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1455 #if(CXSC_INDEX_CHECK)
1456 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1468 #if(CXSC_INDEX_CHECK)
1469 throw(ERROR__OP_WITH_WRONG_DIM<rvector>,ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
1475 #if(CXSC_INDEX_CHECK)
1476 throw(ERROR__OP_WITH_WRONG_DIM<rvector>,ERROR_RMATRIX_TYPE_CAST_OF_THICK_OBJ);
1486 #if(CXSC_INDEX_CHECK)
1487 throw(ERROR_RVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_RVECTOR_USE_OF_UNINITIALIZED_OBJ);
1491 friend INLINE
int Lb(
const rvector_slice &sl)
throw() {
return sl.start; }
1499 #if(CXSC_INDEX_CHECK)
1500 throw(ERROR_RVECTOR_ELEMENT_NOT_IN_VEC);
1507 #if(CXSC_INDEX_CHECK)
1508 throw(ERROR_RVECTOR_ELEMENT_NOT_IN_VEC);
1517 #if(CXSC_INDEX_CHECK)
1518 throw(ERROR_RVECTOR_SUB_ARRAY_TOO_BIG);
1524 #if(CXSC_INDEX_CHECK)
1525 throw(ERROR_RVECTOR_SUB_ARRAY_TOO_BIG);
1535 #if(CXSC_INDEX_CHECK)
1536 throw(ERROR_RMATRIX_OP_WITH_WRONG_DIM);
1542 #if(CXSC_INDEX_CHECK)
1543 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1549 #if(CXSC_INDEX_CHECK)
1550 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1556 #if(CXSC_INDEX_CHECK)
1557 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1563 #if(CXSC_INDEX_CHECK)
1564 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1579 INLINE
operator void*()
throw();
1587 INLINE rvector
_rvector(
const real &r)
throw();
1592 INLINE
void Resize(rvector &rv)
throw();
1594 INLINE
void Resize(rvector &rv,
const int &len)
1595 #if(CXSC_INDEX_CHECK)
1596 throw(ERROR__WRONG_BOUNDARIES<rvector>);
1600 INLINE
void Resize(rvector &rv,
const int &lb,
const int &ub)
1602 #if(CXSC_INDEX_CHECK)
1603 throw(ERROR__WRONG_BOUNDARIES<rvector>);
1609 INLINE rvector
abs(
const rvector &rv)
throw();
1611 INLINE rvector
abs(
const rvector_slice &sl)
throw();
1613 INLINE
bool operator !(
const rvector &rv)
throw();
1615 INLINE
bool operator !(
const rvector_slice &sl)
throw();
1620 INLINE rvector
operator *(
const rvector &rv,
const real &s)
throw();
1622 INLINE rvector
operator *(
const rvector_slice &sl,
const real &s)
throw();
1624 INLINE rvector
operator *(
const real &s,
const rvector &rv)
throw();
1626 INLINE rvector
operator *(
const real &s,
const rvector_slice &sl)
throw();
1628 INLINE rvector &
operator *=(rvector &rv,
const real &r)
throw();
1631 INLINE rvector
operator /(
const rvector &rv,
const real &s)
throw();
1633 INLINE rvector
operator /(
const rvector_slice &sl,
const real &s)
throw();
1635 INLINE rvector &
operator /=(rvector &rv,
const real &r)
throw();
1640 void accumulate(dotprecision &dp,
const rvector &);
1643 void accumulate(dotprecision &dp,
const rvector & rv1,
const rvector &rv2)
1644 #if(CXSC_INDEX_CHECK)
1645 throw(OP_WITH_WRONG_DIM);
1651 void accumulate_approx(dotprecision &dp,
const rvector & rv1,
const rvector &rv2);
1655 void accumulate(dotprecision &dp,
const rvector & rv1,
const rmatrix_subv &rv2)
1656 #if(CXSC_INDEX_CHECK)
1657 throw(OP_WITH_WRONG_DIM);
1663 void accumulate_approx(dotprecision &dp,
const rvector & rv1,
const rmatrix_subv &rv2);
1667 void accumulate(dotprecision &dp,
const rmatrix_subv & rv1,
const rvector &rv2)
1668 #if(CXSC_INDEX_CHECK)
1669 throw(OP_WITH_WRONG_DIM);
1675 void accumulate_approx(dotprecision &dp,
const rmatrix_subv & rv1,
const rvector &rv2);
1678 void accumulate(dotprecision &dp,
const rvector_slice &sl,
const rvector &rv)
1679 #if(CXSC_INDEX_CHECK)
1680 throw(OP_WITH_WRONG_DIM);
1686 void accumulate_approx(dotprecision &dp,
const rvector_slice &sl,
const rvector &rv);
1690 void accumulate(dotprecision &dp,
const rvector &rv,
const rvector_slice &sl)
1691 #if(CXSC_INDEX_CHECK)
1692 throw(OP_WITH_WRONG_DIM);
1698 void accumulate_approx(dotprecision &dp,
const rvector &rv,
const rvector_slice &sl);
1702 void accumulate(dotprecision &dp,
const rvector_slice & sl1,
const rvector_slice &sl2)
1703 #if(CXSC_INDEX_CHECK)
1704 throw(OP_WITH_WRONG_DIM);
1710 void accumulate_approx(dotprecision &dp,
const rvector_slice & sl1,
const rvector_slice &sl2);
1714 void accumulate(idotprecision &dp,
const rvector & rv1,
const rvector &rv2)
1715 #if(CXSC_INDEX_CHECK)
1716 throw(OP_WITH_WRONG_DIM);
1720 void accumulate(idotprecision &dp,
const rvector & rv1,
const rmatrix_subv &rv2)
1722 #if(CXSC_INDEX_CHECK)
1723 throw(OP_WITH_WRONG_DIM);
1727 void accumulate(idotprecision &dp,
const rmatrix_subv & rv1,
const rvector &rv2)
1729 #if(CXSC_INDEX_CHECK)
1730 throw(OP_WITH_WRONG_DIM);
1734 void accumulate(idotprecision &dp,
const rvector_slice &sl,
const rvector &rv)
1736 #if(CXSC_INDEX_CHECK)
1737 throw(OP_WITH_WRONG_DIM);
1741 void accumulate(idotprecision &dp,
const rvector &rv,
const rvector_slice &sl)
1743 #if(CXSC_INDEX_CHECK)
1744 throw(OP_WITH_WRONG_DIM);
1748 void accumulate(idotprecision &dp,
const rvector_slice & sl1,
const rvector_slice &sl2)
1750 #if(CXSC_INDEX_CHECK)
1751 throw(OP_WITH_WRONG_DIM);
1757 void accumulate(cdotprecision &dp,
const rvector & rv1,
const rvector &rv2)
1758 #if(CXSC_INDEX_CHECK)
1759 throw(OP_WITH_WRONG_DIM);
1765 void accumulate_approx(cdotprecision &dp,
const rvector & rv1,
const rvector &rv2);
1768 void accumulate(cdotprecision &dp,
const rvector & rv1,
const rmatrix_subv &rv2)
1769 #if(CXSC_INDEX_CHECK)
1770 throw(OP_WITH_WRONG_DIM);
1776 void accumulate_approx(cdotprecision &dp,
const rvector & rv1,
const rmatrix_subv &rv2);
1779 void accumulate(cdotprecision &dp,
const rmatrix_subv & rv1,
const rvector &rv2)
1780 #if(CXSC_INDEX_CHECK)
1781 throw(OP_WITH_WRONG_DIM);
1787 void accumulate_approx(cdotprecision &dp,
const rmatrix_subv & rv1,
const rvector &rv2);
1790 void accumulate(cdotprecision &dp,
const rvector_slice &sl,
const rvector &rv)
1791 #if(CXSC_INDEX_CHECK)
1792 throw(OP_WITH_WRONG_DIM);
1798 void accumulate_approx(cdotprecision &dp,
const rvector_slice &sl,
const rvector &rv);
1801 void accumulate(cdotprecision &dp,
const rvector &rv,
const rvector_slice &sl)
1802 #if(CXSC_INDEX_CHECK)
1803 throw(OP_WITH_WRONG_DIM);
1809 void accumulate_approx(cdotprecision &dp,
const rvector &rv,
const rvector_slice &sl);
1812 void accumulate(cdotprecision &dp,
const rvector_slice & sl1,
const rvector_slice &sl2)
1813 #if(CXSC_INDEX_CHECK)
1814 throw(OP_WITH_WRONG_DIM);
1820 void accumulate_approx(cdotprecision &dp,
const rvector_slice & sl1,
const rvector_slice &sl2);
1823 void accumulate(cidotprecision &dp,
const rvector & rv1,
const rvector &rv2)
1824 #if(CXSC_INDEX_CHECK)
1825 throw(OP_WITH_WRONG_DIM);
1829 void accumulate(cidotprecision &dp,
const rvector & rv1,
const rmatrix_subv &rv2)
1831 #if(CXSC_INDEX_CHECK)
1832 throw(OP_WITH_WRONG_DIM);
1836 void accumulate(cidotprecision &dp,
const rmatrix_subv & rv1,
const rvector &rv2)
1838 #if(CXSC_INDEX_CHECK)
1839 throw(OP_WITH_WRONG_DIM);
1843 void accumulate(cidotprecision &dp,
const rvector_slice &sl,
const rvector &rv)
1845 #if(CXSC_INDEX_CHECK)
1846 throw(OP_WITH_WRONG_DIM);
1850 void accumulate(cidotprecision &dp,
const rvector &rv,
const rvector_slice &sl)
1852 #if(CXSC_INDEX_CHECK)
1853 throw(OP_WITH_WRONG_DIM);
1857 void accumulate(cidotprecision &dp,
const rvector_slice & sl1,
const rvector_slice &sl2)
1859 #if(CXSC_INDEX_CHECK)
1860 throw(OP_WITH_WRONG_DIM);
1866 INLINE real
operator *(
const rvector & rv1,
const rvector &rv2)
1867 #if(CXSC_INDEX_CHECK)
1868 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1872 INLINE real
operator *(
const rvector_slice &sl,
const rvector &rv)
1874 #if(CXSC_INDEX_CHECK)
1875 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1879 INLINE real
operator *(
const rvector &rv,
const rvector_slice &sl)
1881 #if(CXSC_INDEX_CHECK)
1882 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1886 INLINE real
operator *(
const rvector_slice & sl1,
const rvector_slice &sl2)
1888 #if(CXSC_INDEX_CHECK)
1889 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1895 INLINE
const rvector &operator +(
const rvector &rv)
throw();
1897 INLINE rvector operator +(
const rvector_slice &sl)
throw();
1899 INLINE rvector operator +(
const rvector &rv1,
const rvector &rv2)
1900 #if(CXSC_INDEX_CHECK)
1901 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1905 INLINE rvector operator +(
const rvector &rv,
const rvector_slice &sl)
1907 #if(CXSC_INDEX_CHECK)
1908 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1912 INLINE rvector operator +(
const rvector_slice &sl,
const rvector &rv)
1914 #if(CXSC_INDEX_CHECK)
1915 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1919 INLINE rvector operator +(
const rvector_slice &sl1,
const rvector_slice &sl2)
1921 #if(CXSC_INDEX_CHECK)
1922 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1926 INLINE rvector &
operator +=(rvector &rv1,
const rvector &rv2)
1928 #if(CXSC_INDEX_CHECK)
1929 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1933 INLINE rvector &
operator +=(rvector &rv,
const rvector_slice &sl)
1935 #if(CXSC_INDEX_CHECK)
1936 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1942 INLINE rvector operator -(
const rvector &rv)
throw();
1944 INLINE rvector operator -(
const rvector_slice &sl)
throw();
1946 INLINE rvector operator -(
const rvector &rv1,
const rvector &rv2)
1947 #if(CXSC_INDEX_CHECK)
1948 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1952 INLINE rvector operator -(
const rvector &rv,
const rvector_slice &sl)
1954 #if(CXSC_INDEX_CHECK)
1955 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1959 INLINE rvector operator -(
const rvector_slice &sl,
const rvector &rv)
1961 #if(CXSC_INDEX_CHECK)
1962 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1966 INLINE rvector operator -(
const rvector_slice &sl1,
const rvector_slice &sl2)
1968 #if(CXSC_INDEX_CHECK)
1969 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1973 INLINE rvector & operator -=(rvector &rv1,
const rvector &rv2)
1975 #if(CXSC_INDEX_CHECK)
1976 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1980 INLINE rvector &operator -=(rvector &rv,
const rvector_slice &sl)
1982 #if(CXSC_INDEX_CHECK)
1983 throw(ERROR__OP_WITH_WRONG_DIM<rvector>);
1989 INLINE
bool operator ==(
const rvector &rv1,
const rvector &rv2)
throw();
1991 INLINE
bool operator ==(
const rvector_slice &sl1,
const rvector_slice &sl2)
throw();
1993 INLINE
bool operator ==(
const rvector_slice &sl,
const rvector &rv)
throw();
1995 INLINE
bool operator ==(
const rvector &rv,
const rvector_slice &sl)
throw();
1997 INLINE
bool operator !=(
const rvector &rv1,
const rvector &rv2)
throw();
1999 INLINE
bool operator !=(
const rvector_slice &sl1,
const rvector_slice &sl2)
throw();
2001 INLINE
bool operator !=(
const rvector_slice &sl,
const rvector &rv)
throw();
2003 INLINE
bool operator !=(
const rvector &rv,
const rvector_slice &sl)
throw();
2005 INLINE
bool operator <(
const rvector &rv1,
const rvector &rv2)
throw();
2007 INLINE
bool operator <(
const rvector_slice &sl1,
const rvector_slice &sl2)
throw();
2009 INLINE
bool operator < (
const rvector_slice &sl,
const rvector &rv)
throw();
2011 INLINE
bool operator < (
const rvector &rv,
const rvector_slice &sl)
throw();
2013 INLINE
bool operator <=(
const rvector &rv1,
const rvector &rv2)
throw();
2015 INLINE
bool operator <=(
const rvector_slice &sl1,
const rvector_slice &sl2)
throw();
2017 INLINE
bool operator <=(
const rvector_slice &sl,
const rvector &rv)
throw();
2019 INLINE
bool operator <=(
const rvector &rv,
const rvector_slice &sl)
throw();
2021 INLINE
bool operator >(
const rvector &rv1,
const rvector &rv2)
throw();
2023 INLINE
bool operator >(
const rvector_slice &sl1,
const rvector_slice &sl2)
throw();
2025 INLINE
bool operator >(
const rvector_slice &sl,
const rvector &rv)
throw();
2027 INLINE
bool operator >(
const rvector &rv,
const rvector_slice &sl)
throw();
2029 INLINE
bool operator >=(
const rvector &rv1,
const rvector &rv2)
throw();
2031 INLINE
bool operator >=(
const rvector_slice &sl1,
const rvector_slice &sl2)
throw();
2033 INLINE
bool operator >=(
const rvector_slice &sl,
const rvector &rv)
throw();
2035 INLINE
bool operator >=(
const rvector &rv,
const rvector_slice &sl)
throw();
2038 INLINE std::ostream &operator <<(std::ostream &s,
const rvector &rv)
throw();
2040 INLINE std::ostream &operator <<(std::ostream &o,
const rvector_slice &sl)
throw();
2042 INLINE std::istream &operator >>(std::istream &s, rvector &rv)
throw();
2044 INLINE std::istream &operator >>(std::istream &s, rvector_slice &rv)
throw();
2049 #ifdef _CXSC_INCL_INL
2050 #include "rvector.inl"
2051 #include "vector.inl"
2054 #ifdef CXSC_USE_BLAS
2055 #define _CXSC_BLAS_RVECTOR
2056 #include "cxsc_blas.inl"