00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _CXSC_LRVECTOR_INL_INCLUDED
00027 #define _CXSC_LRVECTOR_INL_INCLUDED
00028
00029 namespace cxsc {
00030
00031 INLINE l_rvector::l_rvector () throw():dat(NULL),l(1),u(0),size(0)
00032 {
00033 }
00034
00035 INLINE l_rvector::l_rvector(const int &i) throw():l(1),u(i),size(i)
00036 {
00037 dat=new l_real[i];
00038 }
00039
00040 #ifdef OLD_CXSC
00041 INLINE l_rvector::l_rvector(const class index &i) throw():l(1),u(i._int()),size(i._int())
00042 {
00043 dat=new l_real[i._int()];
00044 }
00045 #endif
00046
00047 INLINE l_rvector::l_rvector(const int &i1,const int &i2)
00048 #if(CXSC_INDEX_CHECK)
00049 throw(ERROR_LRVECTOR_WRONG_BOUNDARIES,ERROR_LRVECTOR_NO_MORE_MEMORY):l(i1),u(i2),size(i2-i1+1)
00050 #else
00051 throw():l(i1),u(i2),size(i2-i1+1)
00052 #endif
00053 {
00054 #if(CXSC_INDEX_CHECK)
00055 if(i1>i2) cxscthrow(ERROR_LRVECTOR_WRONG_BOUNDARIES("l_rvector::l_rvector(const int &i1,const int &i2)"));
00056 #endif
00057 dat=new l_real[size];
00058 }
00059
00060 INLINE l_rvector::l_rvector(const l_rvector_slice &rs) throw():l(rs.start),u(rs.end),size(rs.end-rs.start+1)
00061 {
00062 dat=new l_real[size];
00063 for(int i=0, j=l-rs.l;i<size;i++,j++)
00064 dat[i]=rs.dat[j];
00065 }
00066
00067 INLINE l_rvector::l_rvector(const l_rvector &v) throw():l(v.l),u(v.u),size(v.size)
00068 {
00069 dat=new l_real[size];
00070 for (int i=0;i<size;i++)
00071 dat[i]=v.dat[i];
00072 }
00073
00074 INLINE l_rvector::l_rvector(const l_real &r) throw():l(1),u(1),size(1)
00075 {
00076 dat=new l_real[1];
00077 *dat=r;
00078 }
00079
00080 INLINE l_rvector::l_rvector(const rvector_slice &rs) throw():l(rs.start),u(rs.end),size(rs.end-rs.start+1)
00081 {
00082 dat=new l_real[size];
00083 for(int i=0, j=l-rs.l;i<size;i++,j++)
00084 dat[i]=rs.dat[j];
00085 }
00086
00087 INLINE l_rvector::l_rvector(const rvector &v) throw():l(v.l),u(v.u),size(v.size)
00088 {
00089 dat=new l_real[size];
00090 for (int i=0;i<size;i++)
00091 dat[i]=v.dat[i];
00092 }
00093
00094 INLINE l_rvector::l_rvector(const real &r) throw():l(1),u(1),size(1)
00095 {
00096 dat=new l_real[1];
00097 *dat=r;
00098 }
00099
00100 INLINE l_real & l_rvector::operator [](const int &i) const
00101 #if(CXSC_INDEX_CHECK)
00102 throw(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC)
00103 #else
00104 throw()
00105 #endif
00106 {
00107 #if(CXSC_INDEX_CHECK)
00108 if(i<l||i>u) cxscthrow(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC("l_real & l_rvector::operator [](const int &i)"));
00109 #endif
00110 return dat[i-l];
00111 }
00112
00113 INLINE l_real & l_rvector_slice::operator [](const int &i) const
00114 #if(CXSC_INDEX_CHECK)
00115 throw(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC)
00116 #else
00117 throw()
00118 #endif
00119 {
00120 #if(CXSC_INDEX_CHECK)
00121 if(i<start||i>end) cxscthrow(ERROR_LRVECTOR_ELEMENT_NOT_IN_VEC("l_real & l_rvector_slice::operator [](const int &i)"));
00122 #endif
00123 return dat[i-l];
00124 }
00125
00126 INLINE l_rvector_slice l_rvector::operator ()(const int &i)
00127 #if(CXSC_INDEX_CHECK)
00128 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG)
00129 #else
00130 throw()
00131 #endif
00132 {
00133 #if(CXSC_INDEX_CHECK)
00134 if(1<l||i>u) cxscthrow(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG("l_rvector_slice l_rvector::operator ()(const int &i)"));
00135 #endif
00136 return l_rvector_slice(*this,1,i);
00137 }
00138
00139 INLINE l_rvector_slice l_rvector::operator ()(const int &i1,const int &i2)
00140 #if(CXSC_INDEX_CHECK)
00141 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG)
00142 #else
00143 throw()
00144 #endif
00145 {
00146 #if(CXSC_INDEX_CHECK)
00147 if(i1<l||i2>u) cxscthrow(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG("l_rvector_slice l_rvector::operator ()(const int &i1,const int &i2)"));
00148 #endif
00149 return l_rvector_slice(*this,i1,i2);
00150 }
00151
00152 INLINE l_rvector_slice l_rvector_slice::operator ()(const int &i)
00153 #if(CXSC_INDEX_CHECK)
00154 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG)
00155 #else
00156 throw()
00157 #endif
00158 {
00159 #if(CXSC_INDEX_CHECK)
00160 if(1<start||i>end) cxscthrow(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG("l_rvector_slice l_rvector_slice::operator ()(const int &i)"));
00161 #endif
00162 return l_rvector_slice(*this,1,i);
00163 }
00164
00165 INLINE l_rvector_slice l_rvector_slice::operator ()(const int &i1,const int &i2)
00166 #if(CXSC_INDEX_CHECK)
00167 throw(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG)
00168 #else
00169 throw()
00170 #endif
00171 {
00172 #if(CXSC_INDEX_CHECK)
00173 if(i1<start||i2>end) cxscthrow(ERROR_LRVECTOR_SUB_ARRAY_TOO_BIG("l_rvector_slice l_rvector_slice::operator ()(const int &i1,const int &i2)"));
00174 #endif
00175 return l_rvector_slice(*this,i1,i2);
00176 }
00177
00178 INLINE l_real::l_real(const l_rvector &rv)
00179 #if(CXSC_INDEX_CHECK)
00180 throw(ERROR_LRVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_LRVECTOR_USE_OF_UNINITIALIZED_OBJ)
00181 #else
00182 throw()
00183 #endif
00184 {
00185 #if(CXSC_INDEX_CHECK)
00186 if(rv.size>1) cxscthrow(ERROR_LRVECTOR_TYPE_CAST_OF_THICK_OBJ("l_real::l_real(const l_rvector &rv)"));
00187 else if(rv.size<1) cxscthrow(ERROR_LRVECTOR_USE_OF_UNINITIALIZED_OBJ("l_real::l_real(const l_rvector &rv)"));
00188 #endif
00189 *this=rv.dat[0];
00190 }
00191
00192 INLINE l_real::l_real(const l_rvector_slice &sl)
00193 #if(CXSC_INDEX_CHECK)
00194 throw(ERROR_LRVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_LRVECTOR_USE_OF_UNINITIALIZED_OBJ)
00195 #else
00196 throw()
00197 #endif
00198 {
00199 #if(CXSC_INDEX_CHECK)
00200 if(sl.size>1) cxscthrow(ERROR_LRVECTOR_TYPE_CAST_OF_THICK_OBJ("l_real::l_real(const l_rvector_slice &sl)"));
00201 else if(sl.size<1) cxscthrow(ERROR_LRVECTOR_USE_OF_UNINITIALIZED_OBJ("l_real::l_real(const l_rvector_slice &sl)"));
00202 #endif
00203 *this=sl.dat[sl.start-sl.l];
00204 }
00205
00211 INLINE l_rvector _l_rvector(const l_real &r) throw() { return l_rvector(r); }
00217 INLINE l_rvector _l_rvector(const real &r) throw() { return l_rvector(r); }
00223 INLINE l_rvector _l_rvector(const rvector_slice &rs) throw() { return l_rvector(rs); }
00229 INLINE l_rvector _l_rvector(const rvector &rs) throw() { return l_rvector(rs); }
00235 INLINE l_rvector &l_rvector::operator =(const l_rvector &rv) throw() { return _vvassign<l_rvector,l_rvector,l_real>(*this,rv); }
00236 INLINE l_rvector &l_rvector::operator =(const l_real &r) throw() { return _vsassign<l_rvector,l_real>(*this,r); }
00237 INLINE l_rvector &l_rvector::operator =(const rvector &rv) throw() { return _vvassign<l_rvector,rvector,l_real>(*this,rv); }
00238 INLINE l_rvector &l_rvector::operator =(const real &r) throw() { return _vsassign<l_rvector,real>(*this,r); }
00239 INLINE l_rvector::operator void*() throw() { return _vvoid(*this); }
00240 INLINE l_rvector_slice & l_rvector_slice::operator =(const l_rvector_slice &sl)
00241 #if(CXSC_INDEX_CHECK)
00242 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00243 #else
00244 throw()
00245 #endif
00246 { return _vsvsassign(*this,sl); }
00247 INLINE l_rvector_slice & l_rvector_slice::operator =(const l_rvector &rv)
00248 #if(CXSC_INDEX_CHECK)
00249 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00250 #else
00251 throw()
00252 #endif
00253 { return _vsvassign(*this,rv); }
00254 INLINE l_rvector_slice & l_rvector_slice::operator =(const l_real &r) throw() { return _vssassign<l_rvector_slice,l_real>(*this,r); }
00255
00256 INLINE l_rvector_slice & l_rvector_slice::operator =(const rvector_slice &sl)
00257 #if(CXSC_INDEX_CHECK)
00258 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00259 #else
00260 throw()
00261 #endif
00262 { return _vsvsassign(*this,sl); }
00263 INLINE l_rvector_slice & l_rvector_slice::operator =(const rvector &rv)
00264 #if(CXSC_INDEX_CHECK)
00265 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00266 #else
00267 throw()
00268 #endif
00269 { return _vsvassign(*this,rv); }
00270 INLINE l_rvector_slice & l_rvector_slice::operator =(const real &r) throw() { return _vssassign(*this,r); }
00271 INLINE l_rvector_slice::operator void*() throw() { return _vsvoid(*this); }
00272
00273
00274
00275
00276 INLINE void Resize(l_rvector &rv) throw() { _vresize(rv); }
00277 INLINE void Resize(l_rvector &rv, const int &len)
00278 #if(CXSC_INDEX_CHECK)
00279 throw(ERROR__WRONG_BOUNDARIES<l_rvector>)
00280 #else
00281 throw()
00282 #endif
00283 { _vresize<class l_rvector,class l_real>(rv,len); }
00284 INLINE void Resize(l_rvector &rv, const int &lb, const int &ub)
00285 #if(CXSC_INDEX_CHECK)
00286 throw(ERROR__WRONG_BOUNDARIES<l_rvector>)
00287 #else
00288 throw()
00289 #endif
00290 { _vresize<class l_rvector,class l_real>(rv,lb,ub); }
00291
00292 INLINE l_rvector abs(const l_rvector &rv) throw() { return _vabs<l_rvector,l_rvector>(rv); }
00293 INLINE l_rvector abs(const l_rvector_slice &sl) throw() { return _vsabs<l_rvector_slice,l_rvector>(sl); }
00294 INLINE bool operator !(const l_rvector &rv) throw() { return _vnot(rv); }
00295 INLINE bool operator !(const l_rvector_slice &sl) throw() { return _vsnot(sl); }
00296
00297
00298
00299
00300
00301 INLINE l_rvector operator *(const l_rvector &rv, const l_real &s) throw() { return _vsmult<l_rvector,l_real,l_rvector>(rv,s); }
00302 INLINE l_rvector operator *(const l_rvector_slice &sl, const l_real &s) throw() { return _vssmult<l_rvector_slice,l_real,l_rvector>(sl,s); }
00303 INLINE l_rvector operator *(const l_real &s, const l_rvector &rv) throw() { return _vsmult<l_rvector,l_real,l_rvector>(rv,s); }
00304 INLINE l_rvector operator *(const l_real &s, const l_rvector_slice &sl) throw() { return _vssmult<l_rvector_slice,l_real,l_rvector>(sl,s); }
00305 INLINE l_rvector &operator *=(l_rvector &rv,const l_real &r) throw() { return _vsmultassign(rv,r); }
00306 INLINE l_rvector_slice &l_rvector_slice::operator *=(const l_real &r) throw() { return _vssmultassign(*this,r); }
00307
00308 INLINE l_rvector operator /(const l_rvector &rv, const l_real &s) throw() { return _vsdiv<l_rvector,l_real,l_rvector>(rv,s); }
00309 INLINE l_rvector operator /(const l_rvector_slice &sl, const l_real &s) throw() { return _vssdiv<l_rvector_slice,l_real,l_rvector>(sl,s); }
00310 INLINE l_rvector &operator /=(l_rvector &rv,const l_real &r) throw() { return _vsdivassign(rv,r); }
00311 INLINE l_rvector_slice &l_rvector_slice::operator /=(const l_real &r) throw() { return _vssdivassign(*this,r); }
00312
00313
00314
00315 INLINE l_rvector operator *(const l_rvector &rv, const real &s) throw() { return _vsmult<l_rvector,real,l_rvector>(rv,s); }
00316 INLINE l_rvector operator *(const l_rvector_slice &sl, const real &s) throw() { return _vssmult<l_rvector_slice,real,l_rvector>(sl,s); }
00317 INLINE l_rvector operator *(const real &s, const l_rvector &rv) throw() { return _vsmult<l_rvector,real,l_rvector>(rv,s); }
00318 INLINE l_rvector operator *(const real &s, const l_rvector_slice &sl) throw() { return _vssmult<l_rvector_slice,real,l_rvector>(sl,s); }
00319 INLINE l_rvector &operator *=(l_rvector &rv,const real &r) throw() { return _vsmultassign(rv,r); }
00320 INLINE l_rvector_slice &l_rvector_slice::operator *=(const real &r) throw() { return _vssmultassign(*this,r); }
00321
00322 INLINE l_rvector operator /(const l_rvector &rv, const real &s) throw() { return _vsdiv<l_rvector,real,l_rvector>(rv,s); }
00323 INLINE l_rvector operator /(const l_rvector_slice &sl, const real &s) throw() { return _vssdiv<l_rvector_slice,real,l_rvector>(sl,s); }
00324 INLINE l_rvector &operator /=(l_rvector &rv,const real &r) throw() { return _vsdivassign(rv,r); }
00325 INLINE l_rvector_slice &l_rvector_slice::operator /=(const real &r) throw() { return _vssdivassign(*this,r); }
00326
00327 INLINE l_rvector operator *(const rvector &rv, const l_real &s) throw() { return _vsmult<rvector,l_real,l_rvector>(rv,s); }
00328 INLINE l_rvector operator *(const rvector_slice &sl, const l_real &s) throw() { return _vssmult<rvector_slice,l_real,l_rvector>(sl,s); }
00329 INLINE l_rvector operator *(const l_real &s, const rvector &rv) throw() { return _vsmult<rvector,l_real,l_rvector>(rv,s); }
00330 INLINE l_rvector operator *(const l_real &s, const rvector_slice &sl) throw() { return _vssmult<rvector_slice,l_real,l_rvector>(sl,s); }
00331
00332 INLINE l_rvector operator /(const rvector &rv, const l_real &s) throw() { return _vsdiv<rvector,l_real,l_rvector>(rv,s); }
00333 INLINE l_rvector operator /(const rvector_slice &sl, const l_real &s) throw() { return _vssdiv<rvector_slice,l_real,l_rvector>(sl,s); }
00334
00335
00336
00337
00338 INLINE std::ostream &operator <<(std::ostream &s, const l_rvector &rv) throw() { return _vout(s,rv); }
00339 INLINE std::ostream &operator <<(std::ostream &o, const l_rvector_slice &sl) throw() { return _vsout(o,sl); }
00340 INLINE std::istream &operator >>(std::istream &s, l_rvector &rv) throw() { return _vin(s,rv); }
00341 INLINE std::istream &operator >>(std::istream &s, l_rvector_slice &rv) throw() { return _vsin(s,rv); }
00342
00343
00344 INLINE l_rvector & l_rvector::operator =(const l_rvector_slice &sl) throw() { return _vvsassign<l_rvector,l_rvector_slice,l_real>(*this,sl); }
00345
00346 INLINE void accumulate(dotprecision &dp, const l_rvector & rv1, const l_rvector &rv2)
00347 #if(CXSC_INDEX_CHECK)
00348 throw(OP_WITH_WRONG_DIM)
00349 #else
00350 throw()
00351 #endif
00352 { _vvaccu(dp,rv1,rv2); }
00353 INLINE void accumulate(dotprecision &dp, const l_rvector_slice & sl, const l_rvector &rv)
00354 #if(CXSC_INDEX_CHECK)
00355 throw(OP_WITH_WRONG_DIM)
00356 #else
00357 throw()
00358 #endif
00359 { _vsvaccu(dp,sl,rv); }
00360 INLINE void accumulate(dotprecision &dp, const l_rvector &rv, const l_rvector_slice &sl)
00361 #if(CXSC_INDEX_CHECK)
00362 throw(OP_WITH_WRONG_DIM)
00363 #else
00364 throw()
00365 #endif
00366 { _vsvaccu(dp,sl,rv); }
00367 INLINE void accumulate(dotprecision &dp, const l_rvector & rv1, const l_rmatrix_subv &rv2)
00368 #if(CXSC_INDEX_CHECK)
00369 throw(OP_WITH_WRONG_DIM)
00370 #else
00371 throw()
00372 #endif
00373 ;
00374 INLINE void accumulate(dotprecision &dp, const l_rmatrix_subv & rv1, const l_rvector &rv2)
00375 #if(CXSC_INDEX_CHECK)
00376 throw(OP_WITH_WRONG_DIM)
00377 #else
00378 throw()
00379 #endif
00380 ;
00381 INLINE void accumulate(dotprecision &dp, const l_rmatrix_subv & rv1, const l_rmatrix_subv &rv2)
00382 #if(CXSC_INDEX_CHECK)
00383 throw(OP_WITH_WRONG_DIM)
00384 #else
00385 throw()
00386 #endif
00387 ;
00388 INLINE void accumulate(dotprecision &dp, const l_rvector_slice & sl1, const l_rvector_slice &sl2)
00389 #if(CXSC_INDEX_CHECK)
00390 throw(OP_WITH_WRONG_DIM)
00391 #else
00392 throw()
00393 #endif
00394 { _vsvsaccu(dp,sl1,sl2); }
00395 INLINE void accumulate(idotprecision &dp, const l_rvector & rv1, const l_rvector &rv2)
00396 #if(CXSC_INDEX_CHECK)
00397 throw(OP_WITH_WRONG_DIM)
00398 #else
00399 throw()
00400 #endif
00401 { _vvaccu(dp,rv1,rv2); }
00402 INLINE void accumulate(idotprecision &dp, const l_rvector_slice & sl, const l_rvector &rv)
00403 #if(CXSC_INDEX_CHECK)
00404 throw(OP_WITH_WRONG_DIM)
00405 #else
00406 throw()
00407 #endif
00408 { _vsvaccu(dp,sl,rv); }
00409 INLINE void accumulate(idotprecision &dp, const l_rvector &rv, const l_rvector_slice &sl)
00410 #if(CXSC_INDEX_CHECK)
00411 throw(OP_WITH_WRONG_DIM)
00412 #else
00413 throw()
00414 #endif
00415 { _vsvaccu(dp,sl,rv); }
00416 INLINE void accumulate(idotprecision &dp, const l_rvector & rv1, const l_rmatrix_subv &rv2)
00417 #if(CXSC_INDEX_CHECK)
00418 throw(OP_WITH_WRONG_DIM)
00419 #else
00420 throw()
00421 #endif
00422 ;
00423 INLINE void accumulate(idotprecision &dp, const l_rmatrix_subv & rv1, const l_rvector &rv2)
00424 #if(CXSC_INDEX_CHECK)
00425 throw(OP_WITH_WRONG_DIM)
00426 #else
00427 throw()
00428 #endif
00429 ;
00430 INLINE void accumulate(idotprecision &dp, const l_rmatrix_subv & rv1, const l_rmatrix_subv &rv2)
00431 #if(CXSC_INDEX_CHECK)
00432 throw(OP_WITH_WRONG_DIM)
00433 #else
00434 throw()
00435 #endif
00436 ;
00437 INLINE void accumulate(idotprecision &dp, const l_rvector_slice & sl1, const l_rvector_slice &sl2)
00438 #if(CXSC_INDEX_CHECK)
00439 throw(OP_WITH_WRONG_DIM)
00440 #else
00441 throw()
00442 #endif
00443 { _vsvsaccu(dp,sl1,sl2); }
00444
00445
00446 INLINE l_real operator *(const l_rvector & rv1, const l_rvector &rv2)
00447 #if(CXSC_INDEX_CHECK)
00448 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00449 #else
00450 throw()
00451 #endif
00452 { return _vvlmult<l_rvector,l_rvector,l_real>(rv1,rv2); }
00453 INLINE l_real operator *(const l_rvector_slice &sl, const l_rvector &rv)
00454 #if(CXSC_INDEX_CHECK)
00455 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00456 #else
00457 throw()
00458 #endif
00459 { return _vsvlmult<l_rvector_slice,l_rvector,l_real>(sl,rv); }
00460 INLINE l_real operator *(const l_rvector &rv, const l_rvector_slice &sl)
00461 #if(CXSC_INDEX_CHECK)
00462 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00463 #else
00464 throw()
00465 #endif
00466 { return _vsvlmult<l_rvector_slice,l_rvector,l_real>(sl,rv); }
00467 INLINE l_real operator *(const l_rvector_slice & sl1, const l_rvector_slice &sl2)
00468 #if(CXSC_INDEX_CHECK)
00469 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00470 #else
00471 throw()
00472 #endif
00473 { return _vsvslmult<l_rvector_slice,l_rvector_slice,l_real>(sl1,sl2); }
00474
00475 INLINE const l_rvector &operator +(const l_rvector &rv) throw() { return rv; }
00476 INLINE l_rvector operator +(const l_rvector_slice &sl) throw() { return sl; }
00477 INLINE l_rvector operator +(const l_rvector &rv1, const l_rvector &rv2)
00478 #if(CXSC_INDEX_CHECK)
00479 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00480 #else
00481 throw()
00482 #endif
00483 { return _vvplus<l_rvector,l_rvector,l_rvector>(rv1,rv2); }
00484 INLINE l_rvector operator +(const l_rvector &rv, const l_rvector_slice &sl)
00485 #if(CXSC_INDEX_CHECK)
00486 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00487 #else
00488 throw()
00489 #endif
00490 { return _vvsplus<l_rvector,l_rvector_slice,l_rvector>(rv,sl); }
00491 INLINE l_rvector operator +(const l_rvector_slice &sl, const l_rvector &rv)
00492 #if(CXSC_INDEX_CHECK)
00493 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00494 #else
00495 throw()
00496 #endif
00497 { return _vvsplus<l_rvector,l_rvector_slice,l_rvector>(rv,sl); }
00498 INLINE l_rvector operator +(const l_rvector_slice &sl1, const l_rvector_slice &sl2)
00499 #if(CXSC_INDEX_CHECK)
00500 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00501 #else
00502 throw()
00503 #endif
00504 { return _vsvsplus<l_rvector_slice,l_rvector_slice,l_rvector>(sl1,sl2); }
00505 INLINE l_rvector & operator +=(l_rvector &rv1, const l_rvector &rv2)
00506 #if(CXSC_INDEX_CHECK)
00507 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00508 #else
00509 throw()
00510 #endif
00511 { return _vvplusassign(rv1,rv2); }
00512 INLINE l_rvector &operator +=(l_rvector &rv, const l_rvector_slice &sl)
00513 #if(CXSC_INDEX_CHECK)
00514 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00515 #else
00516 throw()
00517 #endif
00518 { return _vvsplusassign(rv,sl); }
00519 INLINE l_rvector_slice &l_rvector_slice::operator +=(const l_rvector &rv)
00520 #if(CXSC_INDEX_CHECK)
00521 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00522 #else
00523 throw()
00524 #endif
00525 { return _vsvplusassign(*this,rv); }
00526 INLINE l_rvector_slice &l_rvector_slice::operator +=(const l_rvector_slice &sl2)
00527 #if(CXSC_INDEX_CHECK)
00528 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00529 #else
00530 throw()
00531 #endif
00532 { return _vsvsplusassign(*this,sl2); }
00533
00534 INLINE l_rvector operator -(const l_rvector &rv) throw() { return _vminus(rv); }
00535 INLINE l_rvector operator -(const l_rvector_slice &sl) throw() { return _vsminus<l_rvector_slice,l_rvector>(sl); }
00536 INLINE l_rvector operator -(const l_rvector &rv1, const l_rvector &rv2)
00537 #if(CXSC_INDEX_CHECK)
00538 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00539 #else
00540 throw()
00541 #endif
00542 { return _vvminus<l_rvector,l_rvector,l_rvector>(rv1,rv2); }
00543 INLINE l_rvector operator -(const l_rvector &rv, const l_rvector_slice &sl)
00544 #if(CXSC_INDEX_CHECK)
00545 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00546 #else
00547 throw()
00548 #endif
00549 { return _vvsminus<l_rvector,l_rvector_slice,l_rvector>(rv,sl); }
00550 INLINE l_rvector operator -(const l_rvector_slice &sl, const l_rvector &rv)
00551 #if(CXSC_INDEX_CHECK)
00552 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00553 #else
00554 throw()
00555 #endif
00556 { return _vsvminus<l_rvector_slice,l_rvector,l_rvector>(sl,rv); }
00557 INLINE l_rvector operator -(const l_rvector_slice &sl1, const l_rvector_slice &sl2)
00558 #if(CXSC_INDEX_CHECK)
00559 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00560 #else
00561 throw()
00562 #endif
00563 { return _vsvsminus<l_rvector_slice,l_rvector_slice,l_rvector>(sl1,sl2); }
00564 INLINE l_rvector & operator -=(l_rvector &rv1, const l_rvector &rv2)
00565 #if(CXSC_INDEX_CHECK)
00566 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00567 #else
00568 throw()
00569 #endif
00570 { return _vvminusassign(rv1,rv2); }
00571 INLINE l_rvector &operator -=(l_rvector &rv, const l_rvector_slice &sl)
00572 #if(CXSC_INDEX_CHECK)
00573 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00574 #else
00575 throw()
00576 #endif
00577 { return _vvsminusassign(rv,sl); }
00578 INLINE l_rvector_slice &l_rvector_slice::operator -=(const l_rvector &rv)
00579 #if(CXSC_INDEX_CHECK)
00580 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00581 #else
00582 throw()
00583 #endif
00584 { return _vsvminusassign(*this,rv); }
00585 INLINE l_rvector_slice &l_rvector_slice::operator -=(const l_rvector_slice &sl2)
00586 #if(CXSC_INDEX_CHECK)
00587 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00588 #else
00589 throw()
00590 #endif
00591 { return _vsvsminusassign(*this,sl2); }
00592
00593 INLINE bool operator ==(const l_rvector &rv1, const l_rvector &rv2) throw() { return _vveq(rv1,rv2); }
00594 INLINE bool operator ==(const l_rvector_slice &sl1, const l_rvector_slice &sl2) throw() { return _vsvseq(sl1,sl2); }
00595 INLINE bool operator ==(const l_rvector_slice &sl, const l_rvector &rv) throw() { return _vsveq(sl,rv); }
00596 INLINE bool operator ==(const l_rvector &rv, const l_rvector_slice &sl) throw() { return _vsveq(sl,rv); }
00597 INLINE bool operator !=(const l_rvector &rv1, const l_rvector &rv2) throw() { return _vvneq(rv1,rv2); }
00598 INLINE bool operator !=(const l_rvector_slice &sl1, const l_rvector_slice &sl2) throw() { return _vsvsneq(sl1,sl2); }
00599 INLINE bool operator !=(const l_rvector_slice &sl, const l_rvector &rv) throw() { return _vsvneq(sl,rv); }
00600 INLINE bool operator !=(const l_rvector &rv, const l_rvector_slice &sl) throw() { return _vsvneq(sl,rv); }
00601 INLINE bool operator <(const l_rvector &rv1, const l_rvector &rv2) throw() { return _vvless(rv1,rv2); }
00602 INLINE bool operator <(const l_rvector_slice &sl1, const l_rvector_slice &sl2) throw() { return _vsvsless(sl1,sl2); }
00603 INLINE bool operator < (const l_rvector_slice &sl, const l_rvector &rv) throw() { return _vsvless(sl,rv); }
00604 INLINE bool operator < (const l_rvector &rv, const l_rvector_slice &sl) throw() { return _vvsless(rv,sl); }
00605 INLINE bool operator <=(const l_rvector &rv1, const l_rvector &rv2) throw() { return _vvleq(rv1,rv2); }
00606 INLINE bool operator <=(const l_rvector_slice &sl1, const l_rvector_slice &sl2) throw() { return _vsvsleq(sl1,sl2); }
00607 INLINE bool operator <=(const l_rvector_slice &sl, const l_rvector &rv) throw() { return _vsvleq(sl,rv); }
00608 INLINE bool operator <=(const l_rvector &rv, const l_rvector_slice &sl) throw() { return _vvsleq(rv,sl); }
00609 INLINE bool operator >(const l_rvector &rv1, const l_rvector &rv2) throw() { return _vvless(rv2,rv1); }
00610 INLINE bool operator >(const l_rvector_slice &sl1, const l_rvector_slice &sl2) throw() { return _vsvsless(sl2,sl1); }
00611 INLINE bool operator >(const l_rvector_slice &sl, const l_rvector &rv) throw() { return _vvsless(rv,sl); }
00612 INLINE bool operator >(const l_rvector &rv, const l_rvector_slice &sl) throw() { return _vsvless(sl,rv); }
00613 INLINE bool operator >=(const l_rvector &rv1, const l_rvector &rv2) throw() { return _vvleq(rv2,rv1); }
00614 INLINE bool operator >=(const l_rvector_slice &sl1, const l_rvector_slice &sl2) throw() { return _vsvsleq(sl2,sl1); }
00615 INLINE bool operator >=(const l_rvector_slice &sl, const l_rvector &rv) throw() { return _vvsleq(rv,sl); }
00616 INLINE bool operator >=(const l_rvector &rv, const l_rvector_slice &sl) throw() { return _vsvleq(sl,rv); }
00617
00618
00619
00620 INLINE l_rvector & l_rvector::operator =(const rvector_slice &sl) throw() { return _vvsassign<l_rvector,rvector_slice,l_real>(*this,sl); }
00621
00622 INLINE void accumulate(dotprecision &dp, const l_rvector & rv1, const rvector &rv2)
00623 #if(CXSC_INDEX_CHECK)
00624 throw(OP_WITH_WRONG_DIM)
00625 #else
00626 throw()
00627 #endif
00628 { _vvaccu(dp,rv2,rv1); }
00629 INLINE void accumulate(dotprecision &dp, const rvector & rv1, const l_rvector &rv2)
00630 #if(CXSC_INDEX_CHECK)
00631 throw(OP_WITH_WRONG_DIM)
00632 #else
00633 throw()
00634 #endif
00635 { _vvaccu(dp,rv1,rv2); }
00636 INLINE void accumulate(dotprecision &dp, const rvector_slice & sl, const l_rvector &rv)
00637 #if(CXSC_INDEX_CHECK)
00638 throw(OP_WITH_WRONG_DIM)
00639 #else
00640 throw()
00641 #endif
00642 { _vsvaccu(dp,sl,rv); }
00643 INLINE void accumulate(dotprecision &dp,const l_rvector_slice &sl,const rvector &rv)
00644 #if(CXSC_INDEX_CHECK)
00645 throw(OP_WITH_WRONG_DIM)
00646 #else
00647 throw()
00648 #endif
00649 { _vsvaccu(dp,sl,rv); }
00650 INLINE void accumulate(dotprecision &dp, const rvector &rv, const l_rvector_slice &sl)
00651 #if(CXSC_INDEX_CHECK)
00652 throw(OP_WITH_WRONG_DIM)
00653 #else
00654 throw()
00655 #endif
00656 { _vsvaccu(dp,sl,rv); }
00657 INLINE void accumulate(dotprecision &dp, const rvector & rv1, const l_rmatrix_subv &rv2)
00658 #if(CXSC_INDEX_CHECK)
00659 throw(OP_WITH_WRONG_DIM)
00660 #else
00661 throw()
00662 #endif
00663 ;
00664 INLINE void accumulate(dotprecision &dp, const l_rvector & rv1, const rmatrix_subv &rv2)
00665 #if(CXSC_INDEX_CHECK)
00666 throw(OP_WITH_WRONG_DIM)
00667 #else
00668 throw()
00669 #endif
00670 ;
00671 INLINE void accumulate(dotprecision &dp,const l_rvector &rv,const rvector_slice &sl)
00672 #if(CXSC_INDEX_CHECK)
00673 throw(OP_WITH_WRONG_DIM)
00674 #else
00675 throw()
00676 #endif
00677 { _vsvaccu(dp,sl,rv); }
00678 INLINE void accumulate(dotprecision &dp, const rmatrix_subv & rv1, const l_rvector &rv2)
00679 #if(CXSC_INDEX_CHECK)
00680 throw(OP_WITH_WRONG_DIM)
00681 #else
00682 throw()
00683 #endif
00684 ;
00685 INLINE void accumulate(dotprecision &dp, const l_rmatrix_subv & rv1, const rvector &rv2)
00686 #if(CXSC_INDEX_CHECK)
00687 throw(OP_WITH_WRONG_DIM)
00688 #else
00689 throw()
00690 #endif
00691 ;
00692 INLINE void accumulate(dotprecision &dp, const rmatrix_subv & rv1, const l_rmatrix_subv &rv2)
00693 #if(CXSC_INDEX_CHECK)
00694 throw(OP_WITH_WRONG_DIM)
00695 #else
00696 throw()
00697 #endif
00698 ;
00699 INLINE void accumulate(dotprecision &dp, const l_rmatrix_subv & rv1, const rmatrix_subv &rv2)
00700 #if(CXSC_INDEX_CHECK)
00701 throw(OP_WITH_WRONG_DIM)
00702 #else
00703 throw()
00704 #endif
00705 ;
00706 INLINE void accumulate(dotprecision &dp, const l_rvector_slice & sl1, const rvector_slice &sl2)
00707 #if(CXSC_INDEX_CHECK)
00708 throw(OP_WITH_WRONG_DIM)
00709 #else
00710 throw()
00711 #endif
00712 { _vsvsaccu(dp,sl2,sl1); }
00713 INLINE void accumulate(dotprecision &dp, const rvector_slice & sl1, const l_rvector_slice &sl2)
00714 #if(CXSC_INDEX_CHECK)
00715 throw(OP_WITH_WRONG_DIM)
00716 #else
00717 throw()
00718 #endif
00719 { _vsvsaccu(dp,sl1,sl2); }
00720
00721 INLINE void accumulate(idotprecision &dp, const l_rvector & rv1, const rvector &rv2)
00722 #if(CXSC_INDEX_CHECK)
00723 throw(OP_WITH_WRONG_DIM)
00724 #else
00725 throw()
00726 #endif
00727 { _vvaccu(dp,rv2,rv1); }
00728 INLINE void accumulate(idotprecision &dp, const rvector & rv1, const l_rvector &rv2)
00729 #if(CXSC_INDEX_CHECK)
00730 throw(OP_WITH_WRONG_DIM)
00731 #else
00732 throw()
00733 #endif
00734 { _vvaccu(dp,rv1,rv2); }
00735 INLINE void accumulate(idotprecision &dp, const rvector_slice & sl, const l_rvector &rv)
00736 #if(CXSC_INDEX_CHECK)
00737 throw(OP_WITH_WRONG_DIM)
00738 #else
00739 throw()
00740 #endif
00741 { _vsvaccu(dp,sl,rv); }
00742 INLINE void accumulate(idotprecision &dp,const l_rvector_slice &sl,const rvector &rv)
00743 #if(CXSC_INDEX_CHECK)
00744 throw(OP_WITH_WRONG_DIM)
00745 #else
00746 throw()
00747 #endif
00748 { _vsvaccu(dp,sl,rv); }
00749 INLINE void accumulate(idotprecision &dp, const rvector &rv, const l_rvector_slice &sl)
00750 #if(CXSC_INDEX_CHECK)
00751 throw(OP_WITH_WRONG_DIM)
00752 #else
00753 throw()
00754 #endif
00755 { _vsvaccu(dp,sl,rv); }
00756 INLINE void accumulate(idotprecision &dp, const rvector & rv1, const l_rmatrix_subv &rv2)
00757 #if(CXSC_INDEX_CHECK)
00758 throw(OP_WITH_WRONG_DIM)
00759 #else
00760 throw()
00761 #endif
00762 ;
00763 INLINE void accumulate(idotprecision &dp, const l_rvector & rv1, const rmatrix_subv &rv2)
00764 #if(CXSC_INDEX_CHECK)
00765 throw(OP_WITH_WRONG_DIM)
00766 #else
00767 throw()
00768 #endif
00769 ;
00770 INLINE void accumulate(idotprecision &dp,const l_rvector &rv,const rvector_slice &sl)
00771 #if(CXSC_INDEX_CHECK)
00772 throw(OP_WITH_WRONG_DIM)
00773 #else
00774 throw()
00775 #endif
00776 { _vsvaccu(dp,sl,rv); }
00777 INLINE void accumulate(idotprecision &dp, const rmatrix_subv & rv1, const l_rvector &rv2)
00778 #if(CXSC_INDEX_CHECK)
00779 throw(OP_WITH_WRONG_DIM)
00780 #else
00781 throw()
00782 #endif
00783 ;
00784 INLINE void accumulate(idotprecision &dp, const l_rmatrix_subv & rv1, const rvector &rv2)
00785 #if(CXSC_INDEX_CHECK)
00786 throw(OP_WITH_WRONG_DIM)
00787 #else
00788 throw()
00789 #endif
00790 ;
00791 INLINE void accumulate(idotprecision &dp, const l_rvector_slice & sl1, const rvector_slice &sl2)
00792 #if(CXSC_INDEX_CHECK)
00793 throw(OP_WITH_WRONG_DIM)
00794 #else
00795 throw()
00796 #endif
00797 { _vsvsaccu(dp,sl2,sl1); }
00798 INLINE void accumulate(idotprecision &dp, const rvector_slice & sl1, const l_rvector_slice &sl2)
00799 #if(CXSC_INDEX_CHECK)
00800 throw(OP_WITH_WRONG_DIM)
00801 #else
00802 throw()
00803 #endif
00804 { _vsvsaccu(dp,sl1,sl2); }
00805
00806 INLINE l_real operator *(const rvector & rv1, const l_rvector &rv2)
00807 #if(CXSC_INDEX_CHECK)
00808 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00809 #else
00810 throw()
00811 #endif
00812 { return _vvlmult<rvector,l_rvector,l_real>(rv1,rv2); }
00813 INLINE l_real operator *(const rvector_slice &sl, const l_rvector &rv)
00814 #if(CXSC_INDEX_CHECK)
00815 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00816 #else
00817 throw()
00818 #endif
00819 { return _vsvlmult<rvector_slice,l_rvector,l_real>(sl,rv); }
00820 INLINE l_real operator *(const rvector &rv, const l_rvector_slice &sl)
00821 #if(CXSC_INDEX_CHECK)
00822 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00823 #else
00824 throw()
00825 #endif
00826 { return _vsvlmult<l_rvector_slice,rvector,l_real>(sl,rv); }
00827 INLINE l_real operator *(const rvector_slice & sl1, const l_rvector_slice &sl2)
00828 #if(CXSC_INDEX_CHECK)
00829 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00830 #else
00831 throw()
00832 #endif
00833 { return _vsvslmult<rvector_slice,l_rvector_slice,l_real>(sl1,sl2); }
00834
00835 INLINE l_real operator *(const l_rvector & rv1, const rvector &rv2)
00836 #if(CXSC_INDEX_CHECK)
00837 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00838 #else
00839 throw()
00840 #endif
00841 { return _vvlmult<rvector,l_rvector,l_real>(rv2,rv1); }
00842 INLINE l_real operator *(const l_rvector_slice &sl, const rvector &rv)
00843 #if(CXSC_INDEX_CHECK)
00844 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00845 #else
00846 throw()
00847 #endif
00848 { return _vsvlmult<l_rvector_slice,rvector,l_real>(sl,rv); }
00849 INLINE l_real operator *(const l_rvector &rv, const rvector_slice &sl)
00850 #if(CXSC_INDEX_CHECK)
00851 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00852 #else
00853 throw()
00854 #endif
00855 { return _vsvlmult<rvector_slice,l_rvector,l_real>(sl,rv); }
00856 INLINE l_real operator *(const l_rvector_slice & sl1, const rvector_slice &sl2)
00857 #if(CXSC_INDEX_CHECK)
00858 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00859 #else
00860 throw()
00861 #endif
00862 { return _vsvslmult<rvector_slice,l_rvector_slice,l_real>(sl2,sl1); }
00863
00864 INLINE l_rvector operator +(const rvector &rv1, const l_rvector &rv2)
00865 #if(CXSC_INDEX_CHECK)
00866 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00867 #else
00868 throw()
00869 #endif
00870 { return _vvplus<rvector,l_rvector,l_rvector>(rv1,rv2); }
00871 INLINE l_rvector operator +(const rvector &rv, const l_rvector_slice &sl)
00872 #if(CXSC_INDEX_CHECK)
00873 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00874 #else
00875 throw()
00876 #endif
00877 { return _vvsplus<rvector,l_rvector_slice,l_rvector>(rv,sl); }
00878 INLINE l_rvector operator +(const rvector_slice &sl, const l_rvector &rv)
00879 #if(CXSC_INDEX_CHECK)
00880 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00881 #else
00882 throw()
00883 #endif
00884 { return _vvsplus<l_rvector,rvector_slice,l_rvector>(rv,sl); }
00885 INLINE l_rvector operator +(const rvector_slice &sl1, const l_rvector_slice &sl2)
00886 #if(CXSC_INDEX_CHECK)
00887 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00888 #else
00889 throw()
00890 #endif
00891 { return _vsvsplus<rvector_slice,l_rvector_slice,l_rvector>(sl1,sl2); }
00892
00893 INLINE l_rvector operator +(const l_rvector &rv1, const rvector &rv2)
00894 #if(CXSC_INDEX_CHECK)
00895 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00896 #else
00897 throw()
00898 #endif
00899 { return _vvplus<rvector,l_rvector,l_rvector>(rv2,rv1); }
00900 INLINE l_rvector operator +(const l_rvector &rv, const rvector_slice &sl)
00901 #if(CXSC_INDEX_CHECK)
00902 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00903 #else
00904 throw()
00905 #endif
00906 { return _vvsplus<l_rvector,rvector_slice,l_rvector>(rv,sl); }
00907 INLINE l_rvector operator +(const l_rvector_slice &sl, const rvector &rv)
00908 #if(CXSC_INDEX_CHECK)
00909 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00910 #else
00911 throw()
00912 #endif
00913 { return _vvsplus<rvector,l_rvector_slice,l_rvector>(rv,sl); }
00914 INLINE l_rvector operator +(const l_rvector_slice &sl1, const rvector_slice &sl2)
00915 #if(CXSC_INDEX_CHECK)
00916 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00917 #else
00918 throw()
00919 #endif
00920 { return _vsvsplus<rvector_slice,l_rvector_slice,l_rvector>(sl2,sl1); }
00921
00922 INLINE l_rvector & operator +=(l_rvector &rv1, const rvector &rv2)
00923 #if(CXSC_INDEX_CHECK)
00924 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00925 #else
00926 throw()
00927 #endif
00928 { return _vvplusassign(rv1,rv2); }
00929 INLINE l_rvector &operator +=(l_rvector &rv, const rvector_slice &sl)
00930 #if(CXSC_INDEX_CHECK)
00931 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00932 #else
00933 throw()
00934 #endif
00935 { return _vvsplusassign(rv,sl); }
00936 INLINE l_rvector_slice &l_rvector_slice::operator +=(const rvector &rv)
00937 #if(CXSC_INDEX_CHECK)
00938 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00939 #else
00940 throw()
00941 #endif
00942 { return _vsvplusassign(*this,rv); }
00943 INLINE l_rvector_slice &l_rvector_slice::operator +=(const rvector_slice &sl2)
00944 #if(CXSC_INDEX_CHECK)
00945 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00946 #else
00947 throw()
00948 #endif
00949 { return _vsvsplusassign(*this,sl2); }
00950
00951 INLINE l_rvector operator -(const rvector &rv1, const l_rvector &rv2)
00952 #if(CXSC_INDEX_CHECK)
00953 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00954 #else
00955 throw()
00956 #endif
00957 { return _vvminus<rvector,l_rvector,l_rvector>(rv1,rv2); }
00958 INLINE l_rvector operator -(const rvector &rv, const l_rvector_slice &sl)
00959 #if(CXSC_INDEX_CHECK)
00960 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00961 #else
00962 throw()
00963 #endif
00964 { return _vvsminus<rvector,l_rvector_slice,l_rvector>(rv,sl); }
00965 INLINE l_rvector operator -(const rvector_slice &sl, const l_rvector &rv)
00966 #if(CXSC_INDEX_CHECK)
00967 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00968 #else
00969 throw()
00970 #endif
00971 { return _vsvminus<rvector_slice,l_rvector,l_rvector>(sl,rv); }
00972 INLINE l_rvector operator -(const rvector_slice &sl1, const l_rvector_slice &sl2)
00973 #if(CXSC_INDEX_CHECK)
00974 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00975 #else
00976 throw()
00977 #endif
00978 { return _vsvsminus<rvector_slice,l_rvector_slice,l_rvector>(sl1,sl2); }
00979
00980 INLINE l_rvector operator -(const l_rvector &rv1, const rvector &rv2)
00981 #if(CXSC_INDEX_CHECK)
00982 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00983 #else
00984 throw()
00985 #endif
00986 { return _vvminus<l_rvector,rvector,l_rvector>(rv1,rv2); }
00987 INLINE l_rvector operator -(const l_rvector &rv, const rvector_slice &sl)
00988 #if(CXSC_INDEX_CHECK)
00989 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00990 #else
00991 throw()
00992 #endif
00993 { return _vvsminus<l_rvector,rvector_slice,l_rvector>(rv,sl); }
00994 INLINE l_rvector operator -(const l_rvector_slice &sl, const rvector &rv)
00995 #if(CXSC_INDEX_CHECK)
00996 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
00997 #else
00998 throw()
00999 #endif
01000 { return _vsvminus<l_rvector_slice,rvector,l_rvector>(sl,rv); }
01001 INLINE l_rvector operator -(const l_rvector_slice &sl1, const rvector_slice &sl2)
01002 #if(CXSC_INDEX_CHECK)
01003 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
01004 #else
01005 throw()
01006 #endif
01007 { return _vsvsminus<l_rvector_slice,rvector_slice,l_rvector>(sl1,sl2); }
01008
01009 INLINE l_rvector & operator -=(l_rvector &rv1, const rvector &rv2)
01010 #if(CXSC_INDEX_CHECK)
01011 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
01012 #else
01013 throw()
01014 #endif
01015 { return _vvminusassign(rv1,rv2); }
01016 INLINE l_rvector &operator -=(l_rvector &rv, const rvector_slice &sl)
01017 #if(CXSC_INDEX_CHECK)
01018 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
01019 #else
01020 throw()
01021 #endif
01022 { return _vvsminusassign(rv,sl); }
01023 INLINE l_rvector_slice &l_rvector_slice::operator -=(const rvector &rv)
01024 #if(CXSC_INDEX_CHECK)
01025 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
01026 #else
01027 throw()
01028 #endif
01029 { return _vsvminusassign(*this,rv); }
01030 INLINE l_rvector_slice &l_rvector_slice::operator -=(const rvector_slice &sl2)
01031 #if(CXSC_INDEX_CHECK)
01032 throw(ERROR__OP_WITH_WRONG_DIM<l_rvector>)
01033 #else
01034 throw()
01035 #endif
01036 { return _vsvsminusassign(*this,sl2); }
01037
01038 }
01039
01040 #endif
01041