C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
l_rvector.inl
00001 /*
00002 **  CXSC is a C++ library for eXtended Scientific Computing (V 2.5.4)
00003 **
00004 **  Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik,
00005 **                          Universitaet Karlsruhe, Germany
00006 **            (C) 2000-2014 Wiss. Rechnen/Softwaretechnologie
00007 **                          Universitaet Wuppertal, Germany   
00008 **
00009 **  This library is free software; you can redistribute it and/or
00010 **  modify it under the terms of the GNU Library General Public
00011 **  License as published by the Free Software Foundation; either
00012 **  version 2 of the License, or (at your option) any later version.
00013 **
00014 **  This library is distributed in the hope that it will be useful,
00015 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 **  Library General Public License for more details.
00018 **
00019 **  You should have received a copy of the GNU Library General Public
00020 **  License along with this library; if not, write to the Free
00021 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 */
00023 
00024 /* CVS $Id: l_rvector.inl,v 1.19 2014/01/30 17:23:47 cxsc Exp $ */
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 //======================== Vector Functions =============================
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 //======================= Vector / Scalar ===============================
00298 
00299 //----------------------------- l_real ---------------------------
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 //---------------------------- Real --------------------------------------
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 //======================= Vector / Vector ===============================
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 //----------------------- l_real / l_real ---------------------------
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 //-------------------------------- l_real / Real --------------------------------
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 } // namespace cxsc
01039 
01040 #endif
01041