C-XSC - A C++ Class Library for Extended Scientific Computing
2.5.4
|
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: civector.inl,v 1.28 2014/01/30 17:23:44 cxsc Exp $ */ 00025 00026 #ifndef _CXSC_CIVECTOR_INL_INCLUDED 00027 #define _CXSC_CIVECTOR_INL_INCLUDED 00028 00029 namespace cxsc { 00030 00031 INLINE civector::civector () throw():dat(NULL),l(1),u(0),size(0) 00032 { 00033 } 00034 00035 INLINE civector::civector(const int &i) throw():l(1),u(i),size(i) 00036 { 00037 dat=new cinterval[i]; 00038 } 00039 00040 #ifdef OLD_CXSC 00041 INLINE civector::civector(const class index &i) throw():l(1),u(i._int()),size(i._int()) 00042 { 00043 dat=new cinterval[i._int()]; 00044 } 00045 #endif 00046 00047 INLINE civector::civector(const int &i1,const int &i2) 00048 #if(CXSC_INDEX_CHECK) 00049 throw(ERROR_CIVECTOR_WRONG_BOUNDARIES,ERROR_CIVECTOR_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_CIVECTOR_WRONG_BOUNDARIES("civector::civector(const int &i1,const int &i2)")); 00056 #endif 00057 dat=new cinterval[size]; 00058 } 00059 00060 INLINE civector::civector(const civector_slice &rs) throw():l(rs.start),u(rs.end),size(rs.end-rs.start+1) 00061 { 00062 dat=new cinterval[size]; 00063 for(int i=0, j=l-rs.l;i<size;i++,j++) 00064 dat[i]=rs.dat[j]; 00065 } 00066 00067 INLINE civector::civector(const cvector_slice &rs) throw():l(rs.start),u(rs.end),size(rs.end-rs.start+1) 00068 { 00069 dat=new cinterval[size]; 00070 for(int i=0, j=l-rs.l;i<size;i++,j++) 00071 dat[i]=rs.dat[j]; 00072 } 00073 00074 INLINE civector::civector(const ivector_slice &rs) throw():l(rs.start),u(rs.end),size(rs.end-rs.start+1) 00075 { 00076 dat=new cinterval[size]; 00077 for(int i=0, j=l-rs.l;i<size;i++,j++) 00078 dat[i]=rs.dat[j]; 00079 } 00080 00081 INLINE civector::civector(const rvector_slice &rs) throw():l(rs.start),u(rs.end),size(rs.end-rs.start+1) 00082 { 00083 dat=new cinterval[size]; 00084 for(int i=0, j=l-rs.l;i<size;i++,j++) 00085 dat[i]=rs.dat[j]; 00086 } 00087 00088 INLINE civector::civector(const civector &v) throw():l(v.l),u(v.u),size(v.size) 00089 { 00090 dat=new cinterval[size]; 00091 for (int i=0;i<size;i++) 00092 dat[i]=v.dat[i]; 00093 } 00094 00095 INLINE civector::civector(const cinterval &r) throw():l(1),u(1),size(1) 00096 { 00097 dat=new cinterval[1]; 00098 *dat=r; 00099 } 00100 00101 INLINE civector::civector(const cvector &v) throw():l(v.l),u(v.u),size(v.size) 00102 { 00103 dat=new cinterval[size]; 00104 for (int i=0;i<size;i++) 00105 dat[i]=v.dat[i]; 00106 } 00107 00108 INLINE civector::civector(const ivector &v) throw():l(v.l),u(v.u),size(v.size) 00109 { 00110 dat=new cinterval[size]; 00111 for (int i=0;i<size;i++) 00112 dat[i]=v.dat[i]; 00113 } 00114 00115 INLINE civector::civector(const rvector &v) throw():l(v.l),u(v.u),size(v.size) 00116 { 00117 dat=new cinterval[size]; 00118 for (int i=0;i<size;i++) 00119 dat[i]=v.dat[i]; 00120 } 00121 00122 INLINE civector::civector(const real &r) throw():l(1),u(1),size(1) 00123 { 00124 dat=new cinterval[1]; 00125 *dat=r; 00126 } 00127 00128 INLINE civector::civector(const interval &r) throw():l(1),u(1),size(1) 00129 { 00130 dat=new cinterval[1]; 00131 *dat=r; 00132 } 00133 00134 INLINE civector::civector(const complex &r) throw():l(1),u(1),size(1) 00135 { 00136 dat=new cinterval[1]; 00137 *dat=r; 00138 } 00139 00140 INLINE cinterval & civector::operator [](const int &i) const 00141 #if(CXSC_INDEX_CHECK) 00142 throw(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC) 00143 #else 00144 throw() 00145 #endif 00146 { 00147 #if(CXSC_INDEX_CHECK) 00148 if(i<l||i>u) cxscthrow(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC("cinterval & civector::operator [](const int &i)const ")); 00149 #endif 00150 return dat[i-l]; 00151 } 00152 00153 INLINE cinterval & civector::operator [](const int &i) 00154 #if(CXSC_INDEX_CHECK) 00155 throw(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC) 00156 #else 00157 throw() 00158 #endif 00159 { 00160 #if(CXSC_INDEX_CHECK) 00161 if(i<l||i>u) cxscthrow(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC("cinterval & civector::operator [](const int &i)")); 00162 #endif 00163 return dat[i-l]; 00164 } 00165 00166 INLINE cinterval & civector_slice::operator [](const int &i) const 00167 #if(CXSC_INDEX_CHECK) 00168 throw(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC) 00169 #else 00170 throw() 00171 #endif 00172 { 00173 #if(CXSC_INDEX_CHECK) 00174 if(i<start||i>end) cxscthrow(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC("cinterval & civector_slice::operator [](const int &i) const")); 00175 #endif 00176 return dat[i-l]; 00177 } 00178 00179 00180 INLINE cinterval & civector_slice::operator [](const int &i) 00181 #if(CXSC_INDEX_CHECK) 00182 throw(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC) 00183 #else 00184 throw() 00185 #endif 00186 { 00187 #if(CXSC_INDEX_CHECK) 00188 if(i<start||i>end) cxscthrow(ERROR_CIVECTOR_ELEMENT_NOT_IN_VEC("cinterval & civector_slice::operator [](const int &i)")); 00189 #endif 00190 return dat[i-l]; 00191 } 00192 00193 00194 00195 INLINE civector_slice civector::operator ()(const int &i) 00196 #if(CXSC_INDEX_CHECK) 00197 throw(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG) 00198 #else 00199 throw() 00200 #endif 00201 { 00202 #if(CXSC_INDEX_CHECK) 00203 if(1<l||i>u) cxscthrow(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG("civector_slice civector::operator ()(const int &i)")); 00204 #endif 00205 return civector_slice(*this,1,i); 00206 } 00207 00208 INLINE civector_slice civector::operator ()(const int &i1,const int &i2) 00209 #if(CXSC_INDEX_CHECK) 00210 throw(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG) 00211 #else 00212 throw() 00213 #endif 00214 { 00215 #if(CXSC_INDEX_CHECK) 00216 if(i1<l||i2>u) cxscthrow(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG("civector_slice civector::operator ()(const int &i1,const int &i2)")); 00217 #endif 00218 return civector_slice(*this,i1,i2); 00219 } 00220 00221 INLINE civector_slice civector_slice::operator ()(const int &i) 00222 #if(CXSC_INDEX_CHECK) 00223 throw(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG) 00224 #else 00225 throw() 00226 #endif 00227 { 00228 #if(CXSC_INDEX_CHECK) 00229 if(1<start||i>end) cxscthrow(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG("civector_slice civector_slice::operator ()(const int &i)")); 00230 #endif 00231 return civector_slice(*this,1,i); 00232 } 00233 00234 INLINE civector_slice civector_slice::operator ()(const int &i1,const int &i2) 00235 #if(CXSC_INDEX_CHECK) 00236 throw(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG) 00237 #else 00238 throw() 00239 #endif 00240 { 00241 #if(CXSC_INDEX_CHECK) 00242 if(i1<start||i2>end) cxscthrow(ERROR_CIVECTOR_SUB_ARRAY_TOO_BIG("civector_slice civector_slice::operator ()(const int &i1,const int &i2)")); 00243 #endif 00244 return civector_slice(*this,i1,i2); 00245 } 00246 00247 INLINE cinterval::cinterval(const civector &rv) 00248 #if(CXSC_INDEX_CHECK) 00249 throw(ERROR_CIVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_CIVECTOR_USE_OF_UNINITIALIZED_OBJ) 00250 #else 00251 throw() 00252 #endif 00253 { 00254 #if(CXSC_INDEX_CHECK) 00255 if(rv.size>1) cxscthrow(ERROR_CIVECTOR_TYPE_CAST_OF_THICK_OBJ("cinterval::cinterval(const civector &rv)")); 00256 else if(rv.size<1) cxscthrow(ERROR_CIVECTOR_USE_OF_UNINITIALIZED_OBJ("cinterval::cinterval(const civector &rv)")); 00257 #endif 00258 *this=rv.dat[0]; 00259 } 00260 00261 INLINE cinterval::cinterval(const civector_slice &sl) 00262 #if(CXSC_INDEX_CHECK) 00263 throw(ERROR_CIVECTOR_TYPE_CAST_OF_THICK_OBJ,ERROR_CIVECTOR_USE_OF_UNINITIALIZED_OBJ) 00264 #else 00265 throw() 00266 #endif 00267 { 00268 #if(CXSC_INDEX_CHECK) 00269 if(sl.size>1) cxscthrow(ERROR_CIVECTOR_TYPE_CAST_OF_THICK_OBJ("cinterval::cinterval(const civector_slice &sl)")); 00270 else if(sl.size<1) cxscthrow(ERROR_CIVECTOR_USE_OF_UNINITIALIZED_OBJ("cinterval::cinterval(const civector_slice &sl)")); 00271 #endif 00272 *this=sl.dat[sl.start-sl.l]; 00273 } 00274 00280 INLINE civector _civector(const cinterval &r) throw() { return civector(r); } 00281 00287 INLINE civector _civector(const real &r) throw() { return civector(r); } 00293 INLINE civector _civector(const rvector_slice &rs) throw() { return civector(rs); } 00299 INLINE civector _civector(const rvector &rs) throw() { return civector(rs); } 00300 00306 INLINE civector _civector(const complex &r) throw() { return civector(r); } 00312 INLINE civector _civector(const cvector_slice &rs) throw() { return civector(rs); } 00318 INLINE civector _civector(const cvector &rs) throw() { return civector(rs); } 00319 00325 INLINE civector _civector(const interval &r) throw() { return civector(r); } 00331 INLINE civector _civector(const ivector_slice &rs) throw() { return civector(rs); } 00337 INLINE civector _civector(const ivector &rs) throw() { return civector(rs); } 00338 00339 INLINE civector &civector::operator =(const civector &rv) throw() { return _vvassign<civector,civector,cinterval>(*this,rv); } 00340 INLINE civector &civector::operator =(const cinterval &r) throw() { return _vsassign<civector,cinterval>(*this,r); } 00341 INLINE civector::operator void*() throw() { return _vvoid(*this); } 00342 INLINE civector_slice & civector_slice::operator =(const civector_slice &sl) 00343 #if(CXSC_INDEX_CHECK) 00344 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00345 #else 00346 throw() 00347 #endif 00348 { return _vsvsassign(*this,sl); } 00349 INLINE civector_slice & civector_slice::operator =(const civector &rv) 00350 #if(CXSC_INDEX_CHECK) 00351 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00352 #else 00353 throw() 00354 #endif 00355 { return _vsvassign(*this,rv); } 00356 INLINE civector_slice & civector_slice::operator =(const cinterval &r) throw() { return _vssassign<civector_slice,cinterval>(*this,r); } 00357 INLINE civector_slice & civector_slice::operator =(const cimatrix &m) 00358 #if(CXSC_INDEX_CHECK) 00359 throw(ERROR__OP_WITH_WRONG_DIM<civector>,ERROR_CIMATRIX_TYPE_CAST_OF_THICK_OBJ) 00360 #else 00361 throw() 00362 #endif 00363 { return _vsvassign(*this,civector(m)); } 00364 INLINE civector_slice::operator void*() throw() { return _vsvoid(*this); } 00365 00366 //======================================================================= 00367 //======================== Vector Functions ============================= 00368 00369 00370 INLINE civector &SetInf(civector &iv,const cvector &rv) 00371 #if(CXSC_INDEX_CHECK) 00372 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00373 #else 00374 throw() 00375 #endif 00376 { return _vvsetinf(iv,rv); } 00377 INLINE civector_slice &SetInf(civector_slice &iv,const cvector &rv) 00378 #if(CXSC_INDEX_CHECK) 00379 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00380 #else 00381 throw() 00382 #endif 00383 { return _vsvsetinf(iv,rv); } 00384 INLINE civector &SetInf(civector &iv,const cvector_slice &rv) 00385 #if(CXSC_INDEX_CHECK) 00386 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00387 #else 00388 throw() 00389 #endif 00390 { return _vvssetinf(iv,rv); } 00391 INLINE civector_slice &SetInf(civector_slice &iv,const cvector_slice &rv) 00392 #if(CXSC_INDEX_CHECK) 00393 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00394 #else 00395 throw() 00396 #endif 00397 { return _vsvssetinf(iv,rv); } 00398 INLINE civector &UncheckedSetInf(civector &iv,const cvector &rv) 00399 #if(CXSC_INDEX_CHECK) 00400 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00401 #else 00402 throw() 00403 #endif 00404 { return _vvusetinf(iv,rv); } 00405 INLINE civector_slice &UncheckedSetInf(civector_slice &iv,const cvector &rv) 00406 #if(CXSC_INDEX_CHECK) 00407 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00408 #else 00409 throw() 00410 #endif 00411 { return _vsvusetinf(iv,rv); } 00412 INLINE civector &UncheckedSetInf(civector &iv,const cvector_slice &rv) 00413 #if(CXSC_INDEX_CHECK) 00414 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00415 #else 00416 throw() 00417 #endif 00418 { return _vvsusetinf(iv,rv); } 00419 INLINE civector_slice &UncheckedSetInf(civector_slice &iv,const cvector_slice &rv) 00420 #if(CXSC_INDEX_CHECK) 00421 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00422 #else 00423 throw() 00424 #endif 00425 { return _vsvsusetinf(iv,rv); } 00426 00427 INLINE civector &SetSup(civector &iv,const cvector &rv) 00428 #if(CXSC_INDEX_CHECK) 00429 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00430 #else 00431 throw() 00432 #endif 00433 { return _vvsetsup(iv,rv); } 00434 INLINE civector_slice &SetSup(civector_slice &iv,const cvector &rv) 00435 #if(CXSC_INDEX_CHECK) 00436 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00437 #else 00438 throw() 00439 #endif 00440 { return _vsvsetsup(iv,rv); } 00441 INLINE civector &SetSup(civector &iv,const cvector_slice &rv) 00442 #if(CXSC_INDEX_CHECK) 00443 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00444 #else 00445 throw() 00446 #endif 00447 { return _vvssetsup(iv,rv); } 00448 INLINE civector_slice &SetSup(civector_slice &iv,const cvector_slice &rv) 00449 #if(CXSC_INDEX_CHECK) 00450 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00451 #else 00452 throw() 00453 #endif 00454 { return _vsvssetsup(iv,rv); } 00455 INLINE civector &UncheckedSetSup(civector &iv,const cvector &rv) 00456 #if(CXSC_INDEX_CHECK) 00457 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00458 #else 00459 throw() 00460 #endif 00461 { return _vvusetsup(iv,rv); } 00462 INLINE civector_slice &UncheckedSetSup(civector_slice &iv,const cvector &rv) 00463 #if(CXSC_INDEX_CHECK) 00464 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00465 #else 00466 throw() 00467 #endif 00468 { return _vsvusetsup(iv,rv); } 00469 INLINE civector &UncheckedSetSup(civector &iv,const cvector_slice &rv) 00470 #if(CXSC_INDEX_CHECK) 00471 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00472 #else 00473 throw() 00474 #endif 00475 { return _vvsusetsup(iv,rv); } 00476 INLINE civector_slice &UncheckedSetSup(civector_slice &iv,const cvector_slice &rv) 00477 #if(CXSC_INDEX_CHECK) 00478 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00479 #else 00480 throw() 00481 #endif 00482 { return _vsvsusetsup(iv,rv); } 00483 00484 INLINE civector &SetRe(civector &iv,const ivector &rv) 00485 #if(CXSC_INDEX_CHECK) 00486 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00487 #else 00488 throw() 00489 #endif 00490 { return _vvsetre(iv,rv); } 00491 INLINE civector_slice &SetRe(civector_slice &iv,const ivector &rv) 00492 #if(CXSC_INDEX_CHECK) 00493 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00494 #else 00495 throw() 00496 #endif 00497 { return _vsvsetre(iv,rv); } 00498 INLINE civector &SetRe(civector &iv,const ivector_slice &rv) 00499 #if(CXSC_INDEX_CHECK) 00500 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00501 #else 00502 throw() 00503 #endif 00504 { return _vvssetre(iv,rv); } 00505 INLINE civector_slice &SetRe(civector_slice &iv,const ivector_slice &rv) 00506 #if(CXSC_INDEX_CHECK) 00507 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00508 #else 00509 throw() 00510 #endif 00511 { return _vsvssetre(iv,rv); } 00512 00513 INLINE civector &SetIm(civector &iv,const ivector &rv) 00514 #if(CXSC_INDEX_CHECK) 00515 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00516 #else 00517 throw() 00518 #endif 00519 { return _vvsetim(iv,rv); } 00520 INLINE civector_slice &SetIm(civector_slice &iv,const ivector &rv) 00521 #if(CXSC_INDEX_CHECK) 00522 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00523 #else 00524 throw() 00525 #endif 00526 { return _vsvsetim(iv,rv); } 00527 INLINE civector &SetIm(civector &iv,const ivector_slice &rv) 00528 #if(CXSC_INDEX_CHECK) 00529 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00530 #else 00531 throw() 00532 #endif 00533 { return _vvssetim(iv,rv); } 00534 INLINE civector_slice &SetIm(civector_slice &iv,const ivector_slice &rv) 00535 #if(CXSC_INDEX_CHECK) 00536 throw(ERROR_CIVECTOR_OP_WITH_WRONG_DIM) 00537 #else 00538 throw() 00539 #endif 00540 { return _vsvssetim(iv,rv); } 00541 00542 INLINE civector &SetSup(civector &iv,const complex &r) throw() { return _vssetsup(iv,r); } 00543 INLINE civector &SetInf(civector &iv,const complex &r) throw() { return _vssetinf(iv,r); } 00544 INLINE civector &UncheckedSetSup(civector &iv,const complex &r) throw() { return _vsusetsup(iv,r); } 00545 INLINE civector &SetUncheckedInf(civector &iv,const complex &r) throw() { return _vsusetinf(iv,r); } 00546 INLINE civector &SetRe(civector &iv,const interval &r) throw() { return _vssetre(iv,r); } 00547 INLINE civector &SetIm(civector &iv,const interval &r) throw() { return _vssetim(iv,r); } 00548 00549 INLINE civector_slice &SetSup(civector_slice &iv,const complex &r) throw() { return _vsssetsup(iv,r); } 00550 INLINE civector_slice &SetInf(civector_slice &iv,const complex &r) throw() { return _vsssetinf(iv,r); } 00551 INLINE civector_slice &UncheckedSetSup(civector_slice &iv,const complex &r) throw() { return _vssusetsup(iv,r); } 00552 INLINE civector_slice &SetUncheckedInf(civector_slice &iv,const complex &r) throw() { return _vssusetinf(iv,r); } 00553 INLINE civector_slice &SetRe(civector_slice &iv,const interval &r) throw() { return _vsssetre(iv,r); } 00554 INLINE civector_slice &SetIm(civector_slice &iv,const interval &r) throw() { return _vsssetim(iv,r); } 00555 00556 INLINE ivector Re(const civector &v) throw() 00557 { 00558 ivector erg(v.l,v.u); 00559 00560 for(int i=0;i<v.size;i++) 00561 erg[i+v.l]=Re(v.dat[i]); 00562 00563 return erg; 00564 } 00565 00566 INLINE ivector Re(const civector_slice &sl) throw() 00567 { 00568 ivector erg(sl.start,sl.end); 00569 00570 for(int i=0,j=sl.start-sl.l;i<sl.size;i++,j++) 00571 erg[i+sl.start]=Re(sl.dat[j]); 00572 00573 return erg; 00574 } 00575 00576 INLINE rvector InfRe(const civector &v) throw() 00577 { 00578 rvector erg(v.l,v.u); 00579 00580 for(int i=0;i<v.size;i++) 00581 erg.dat[i]=InfRe(v.dat[i]); 00582 00583 return erg; 00584 } 00585 00586 INLINE rvector InfRe(const civector_slice &sl) throw() 00587 { 00588 rvector erg(sl.start,sl.end); 00589 00590 for(int i=0,j=sl.start-sl.l;i<sl.size;i++,j++) 00591 erg.dat[i]=InfRe(sl.dat[j]); 00592 00593 return erg; 00594 } 00595 00596 INLINE ivector Im(const civector &v) throw() 00597 { 00598 ivector erg(v.l,v.u); 00599 00600 for(int i=0;i<v.size;i++) 00601 erg[i+v.l]=Im(v.dat[i]); 00602 00603 return erg; 00604 } 00605 00606 INLINE ivector Im(const civector_slice &sl) throw() 00607 { 00608 ivector erg(sl.start,sl.end); 00609 00610 for(int i=0,j=sl.start-sl.l;i<sl.size;i++,j++) 00611 erg[i+sl.start]=Im(sl.dat[j]); 00612 00613 return erg; 00614 } 00615 00616 INLINE rvector InfIm(const civector &v) throw() 00617 { 00618 rvector erg(v.l,v.u); 00619 00620 for(int i=0;i<v.size;i++) 00621 erg.dat[i]=InfIm(v.dat[i]); 00622 00623 return erg; 00624 } 00625 00626 INLINE rvector InfIm(const civector_slice &sl) throw() 00627 { 00628 rvector erg(sl.start,sl.end); 00629 00630 for(int i=0,j=sl.start-sl.l;i<sl.size;i++,j++) 00631 erg.dat[i]=InfIm(sl.dat[j]); 00632 00633 return erg; 00634 } 00635 00636 00637 INLINE rvector SupIm(const civector &v) throw() 00638 { 00639 rvector erg(v.l,v.u); 00640 00641 for(int i=0;i<v.size;i++) 00642 erg.dat[i]=SupIm(v.dat[i]); 00643 00644 return erg; 00645 } 00646 00647 INLINE rvector SupIm(const civector_slice &sl) throw() 00648 { 00649 rvector erg(sl.start,sl.end); 00650 00651 for(int i=0,j=sl.start-sl.l;i<sl.size;i++,j++) 00652 erg.dat[i]=SupIm(sl.dat[j]); 00653 00654 return erg; 00655 } 00656 00657 00658 00659 INLINE rvector SupRe(const civector &v) throw() 00660 { 00661 rvector erg(v.l,v.u); 00662 00663 for(int i=0;i<v.size;i++) 00664 erg.dat[i]=SupRe(v.dat[i]); 00665 00666 return erg; 00667 } 00668 00669 INLINE rvector SupRe(const civector_slice &sl) throw() 00670 { 00671 rvector erg(sl.start,sl.end); 00672 00673 for(int i=0,j=sl.start-sl.l;i<sl.size;i++,j++) 00674 erg.dat[i]=SupRe(sl.dat[j]); 00675 00676 return erg; 00677 } 00678 00679 INLINE void Resize(civector &rv) throw() { _vresize(rv); } 00680 INLINE void Resize(civector &rv, const int &len) 00681 #if(CXSC_INDEX_CHECK) 00682 throw(ERROR__WRONG_BOUNDARIES<civector>) 00683 #else 00684 throw() 00685 #endif 00686 { _vresize<class civector,class cinterval>(rv,len); } 00687 INLINE void Resize(civector &rv, const int &lb, const int &ub) 00688 #if(CXSC_INDEX_CHECK) 00689 throw(ERROR__WRONG_BOUNDARIES<civector>) 00690 #else 00691 throw() 00692 #endif 00693 { _vresize<class civector,class cinterval>(rv,lb,ub); } 00694 00695 INLINE civector conj(const civector &rv) throw() { return _vconj<civector>(rv); } 00696 INLINE civector conj(const civector_slice &sl) throw() { return _vsconj<civector_slice,civector>(sl); } 00697 00698 INLINE ivector abs(const civector &rv) throw() { return _vabs<civector,ivector>(rv); } 00699 INLINE ivector abs(const civector_slice &sl) throw() { return _vsabs<civector_slice,ivector>(sl); } 00700 INLINE cvector diam(const civector &v) throw() { return _vdiam<civector,cvector>(v); } 00701 INLINE cvector diam(const civector_slice &v) throw() { return _vsdiam<civector_slice,cvector>(v); } 00702 INLINE cvector mid(const civector &v) throw() { return _vmid<civector,cvector>(v); } 00703 INLINE cvector mid(const civector_slice &v) throw() { return _vsmid<civector_slice,cvector>(v); } 00704 INLINE cvector Inf(const civector &v) throw() { return _vinf<civector,cvector>(v); } 00705 INLINE cvector Inf(const civector_slice &v) throw() { return _vsinf<civector_slice,cvector>(v); } 00706 INLINE cvector Sup(const civector &v) throw() { return _vsup<civector,cvector>(v); } 00707 INLINE cvector Sup(const civector_slice &v) throw() { return _vssup<civector_slice,cvector>(v); } 00708 INLINE bool operator !(const civector &rv) throw() { return _vnot(rv); } 00709 INLINE bool operator !(const civector_slice &sl) throw() { return _vsnot(sl); } 00710 00711 //======================= Vector / Scalar =============================== 00712 00713 //----------------------------- cinterval --------------------------- 00714 00715 INLINE civector operator *(const civector &rv, const cinterval &s) throw() { return _vsmult<civector,cinterval,civector>(rv,s); } 00716 INLINE civector operator *(const civector_slice &sl, const cinterval &s) throw() { return _vssmult<civector_slice,cinterval,civector>(sl,s); } 00717 INLINE civector operator *(const cinterval &s, const civector &rv) throw() { return _vsmult<civector,cinterval,civector>(rv,s); } 00718 INLINE civector operator *(const cinterval &s, const civector_slice &sl) throw() { return _vssmult<civector_slice,cinterval,civector>(sl,s); } 00719 INLINE civector &operator *=(civector &rv,const cinterval &r) throw() { return _vsmultassign(rv,r); } 00720 INLINE civector_slice &civector_slice::operator *=(const cinterval &r) throw() { return _vssmultassign(*this,r); } 00721 00722 INLINE civector operator /(const civector &rv, const cinterval &s) throw() { return _vsdiv<civector,cinterval,civector>(rv,s); } 00723 INLINE civector operator /(const civector_slice &sl, const cinterval &s) throw() { return _vssdiv<civector_slice,cinterval,civector>(sl,s); } 00724 INLINE civector &operator /=(civector &rv,const cinterval &r) throw() { return _vsdivassign(rv,r); } 00725 INLINE civector_slice &civector_slice::operator /=(const cinterval &r) throw() { return _vssdivassign(*this,r); } 00726 00727 //---------------------------- Real -------------------------------------- 00728 00729 INLINE civector operator *(const civector &rv, const real &s) throw() { return _vsmult<civector,real,civector>(rv,s); } 00730 INLINE civector operator *(const civector_slice &sl, const real &s) throw() { return _vssmult<civector_slice,real,civector>(sl,s); } 00731 INLINE civector operator *(const real &s, const civector &rv) throw() { return _vsmult<civector,real,civector>(rv,s); } 00732 INLINE civector operator *(const real &s, const civector_slice &sl) throw() { return _vssmult<civector_slice,real,civector>(sl,s); } 00733 INLINE civector &operator *=(civector &rv,const real &r) throw() { return _vsmultassign(rv,r); } 00734 INLINE civector_slice &civector_slice::operator *=(const real &r) throw() { return _vssmultassign(*this,r); } 00735 00736 INLINE civector operator /(const civector &rv, const real &s) throw() { return _vsdiv<civector,real,civector>(rv,s); } 00737 INLINE civector operator /(const civector_slice &sl, const real &s) throw() { return _vssdiv<civector_slice,real,civector>(sl,s); } 00738 INLINE civector &operator /=(civector &rv,const real &r) throw() { return _vsdivassign(rv,r); } 00739 INLINE civector_slice &civector_slice::operator /=(const real &r) throw() { return _vssdivassign(*this,r); } 00740 00741 INLINE civector operator *(const rvector &rv, const cinterval &s) throw() { return _vsmult<rvector,cinterval,civector>(rv,s); } 00742 INLINE civector operator *(const rvector_slice &sl, const cinterval &s) throw() { return _vssmult<rvector_slice,cinterval,civector>(sl,s); } 00743 INLINE civector operator *(const cinterval &s, const rvector &rv) throw() { return _vsmult<rvector,cinterval,civector>(rv,s); } 00744 INLINE civector operator *(const cinterval &s, const rvector_slice &sl) throw() { return _vssmult<rvector_slice,cinterval,civector>(sl,s); } 00745 00746 INLINE civector operator /(const rvector &rv, const cinterval &s) throw() { return _vsdiv<rvector,cinterval,civector>(rv,s); } 00747 INLINE civector operator /(const rvector_slice &sl, const cinterval &s) throw() { return _vssdiv<rvector_slice,cinterval,civector>(sl,s); } 00748 00749 //---------------------------- complex -------------------------------------- 00750 00751 INLINE civector operator *(const civector &rv, const complex &s) throw() { return _vsmult<civector,complex,civector>(rv,s); } 00752 INLINE civector operator *(const civector_slice &sl, const complex &s) throw() { return _vssmult<civector_slice,complex,civector>(sl,s); } 00753 INLINE civector operator *(const complex &s, const civector &rv) throw() { return _vsmult<civector,complex,civector>(rv,s); } 00754 INLINE civector operator *(const complex &s, const civector_slice &sl) throw() { return _vssmult<civector_slice,complex,civector>(sl,s); } 00755 INLINE civector &operator *=(civector &rv,const complex &r) throw() { return _vsmultassign(rv,r); } 00756 INLINE civector_slice &civector_slice::operator *=(const complex &r) throw() { return _vssmultassign(*this,r); } 00757 00758 INLINE civector operator /(const civector &rv, const complex &s) throw() { return _vsdiv<civector,complex,civector>(rv,s); } 00759 INLINE civector operator /(const civector_slice &sl, const complex &s) throw() { return _vssdiv<civector_slice,complex,civector>(sl,s); } 00760 INLINE civector &operator /=(civector &rv,const complex &r) throw() { return _vsdivassign(rv,r); } 00761 INLINE civector_slice &civector_slice::operator /=(const complex &r) throw() { return _vssdivassign(*this,r); } 00762 00763 INLINE civector operator *(const cvector &rv, const cinterval &s) throw() { return _vsmult<cvector,cinterval,civector>(rv,s); } 00764 INLINE civector operator *(const cvector_slice &sl, const cinterval &s) throw() { return _vssmult<cvector_slice,cinterval,civector>(sl,s); } 00765 INLINE civector operator *(const cinterval &s, const cvector &rv) throw() { return _vsmult<cvector,cinterval,civector>(rv,s); } 00766 INLINE civector operator *(const cinterval &s, const cvector_slice &sl) throw() { return _vssmult<cvector_slice,cinterval,civector>(sl,s); } 00767 00768 INLINE civector operator /(const cvector &rv, const cinterval &s) throw() { return _vsdiv<cvector,cinterval,civector>(rv,s); } 00769 INLINE civector operator /(const cvector_slice &sl, const cinterval &s) throw() { return _vssdiv<cvector_slice,cinterval,civector>(sl,s); } 00770 00771 //---------------------------- interval -------------------------------------- 00772 00773 INLINE civector operator *(const civector &rv, const interval &s) throw() { return _vsmult<civector,interval,civector>(rv,s); } 00774 INLINE civector operator *(const civector_slice &sl, const interval &s) throw() { return _vssmult<civector_slice,interval,civector>(sl,s); } 00775 INLINE civector operator *(const interval &s, const civector &rv) throw() { return _vsmult<civector,interval,civector>(rv,s); } 00776 INLINE civector operator *(const interval &s, const civector_slice &sl) throw() { return _vssmult<civector_slice,interval,civector>(sl,s); } 00777 INLINE civector &operator *=(civector &rv,const interval &r) throw() { return _vsmultassign(rv,r); } 00778 INLINE civector_slice &civector_slice::operator *=(const interval &r) throw() { return _vssmultassign(*this,r); } 00779 00780 INLINE civector operator /(const civector &rv, const interval &s) throw() { return _vsdiv<civector,interval,civector>(rv,s); } 00781 INLINE civector operator /(const civector_slice &sl, const interval &s) throw() { return _vssdiv<civector_slice,interval,civector>(sl,s); } 00782 INLINE civector &operator /=(civector &rv,const interval &r) throw() { return _vsdivassign(rv,r); } 00783 INLINE civector_slice &civector_slice::operator /=(const interval &r) throw() { return _vssdivassign(*this,r); } 00784 00785 INLINE civector operator *(const ivector &rv, const cinterval &s) throw() { return _vsmult<ivector,cinterval,civector>(rv,s); } 00786 INLINE civector operator *(const ivector_slice &sl, const cinterval &s) throw() { return _vssmult<ivector_slice,cinterval,civector>(sl,s); } 00787 INLINE civector operator *(const cinterval &s, const ivector &rv) throw() { return _vsmult<ivector,cinterval,civector>(rv,s); } 00788 INLINE civector operator *(const cinterval &s, const ivector_slice &sl) throw() { return _vssmult<ivector_slice,cinterval,civector>(sl,s); } 00789 00790 INLINE civector operator /(const ivector &rv, const cinterval &s) throw() { return _vsdiv<ivector,cinterval,civector>(rv,s); } 00791 INLINE civector operator /(const ivector_slice &sl, const cinterval &s) throw() { return _vssdiv<ivector_slice,cinterval,civector>(sl,s); } 00792 00793 //======================= Vector / Vector =============================== 00794 00795 00796 INLINE std::ostream &operator <<(std::ostream &s, const civector &rv) throw() { return _vout(s,rv); } 00797 INLINE std::ostream &operator <<(std::ostream &o, const civector_slice &sl) throw() { return _vsout(o,sl); } 00798 INLINE std::istream &operator >>(std::istream &s, civector &rv) throw() { return _vin(s,rv); } 00799 INLINE std::istream &operator >>(std::istream &s, civector_slice &rv) throw() { return _vsin(s,rv); } 00800 00801 //----------------------- cinterval / cinterval --------------------------- 00802 INLINE civector & civector::operator =(const civector_slice &sl) throw() { return _vvsassign<civector,civector_slice,cinterval>(*this,sl); } 00803 00804 00805 INLINE cinterval operator *(const civector & rv1, const civector &rv2) 00806 #if(CXSC_INDEX_CHECK) 00807 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00808 #else 00809 throw() 00810 #endif 00811 { return _vvcimult<civector,civector,cinterval>(rv1,rv2); } 00812 INLINE cinterval operator *(const civector_slice &sl, const civector &rv) 00813 #if(CXSC_INDEX_CHECK) 00814 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00815 #else 00816 throw() 00817 #endif 00818 { return _vsvcimult<civector_slice,civector,cinterval>(sl,rv); } 00819 INLINE cinterval operator *(const civector &rv, const civector_slice &sl) 00820 #if(CXSC_INDEX_CHECK) 00821 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00822 #else 00823 throw() 00824 #endif 00825 { return _vsvcimult<civector_slice,civector,cinterval>(sl,rv); } 00826 INLINE cinterval operator *(const civector_slice & sl1, const civector_slice &sl2) 00827 #if(CXSC_INDEX_CHECK) 00828 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00829 #else 00830 throw() 00831 #endif 00832 { return _vsvscimult<civector_slice,civector_slice,cinterval>(sl1,sl2); } 00833 00834 INLINE const civector &operator +(const civector &rv) throw() { return rv; } 00835 INLINE civector operator +(const civector_slice &sl) throw() { return sl; } 00836 INLINE civector operator +(const civector &rv1, const civector &rv2) 00837 #if(CXSC_INDEX_CHECK) 00838 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00839 #else 00840 throw() 00841 #endif 00842 { return _vvplus<civector,civector,civector>(rv1,rv2); } 00843 INLINE civector operator +(const civector &rv, const civector_slice &sl) 00844 #if(CXSC_INDEX_CHECK) 00845 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00846 #else 00847 throw() 00848 #endif 00849 { return _vvsplus<civector,civector_slice,civector>(rv,sl); } 00850 INLINE civector operator +(const civector_slice &sl, const civector &rv) 00851 #if(CXSC_INDEX_CHECK) 00852 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00853 #else 00854 throw() 00855 #endif 00856 { return _vvsplus<civector,civector_slice,civector>(rv,sl); } 00857 INLINE civector operator +(const civector_slice &sl1, const civector_slice &sl2) 00858 #if(CXSC_INDEX_CHECK) 00859 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00860 #else 00861 throw() 00862 #endif 00863 { return _vsvsplus<civector_slice,civector_slice,civector>(sl1,sl2); } 00864 INLINE civector & operator +=(civector &rv1, const civector &rv2) 00865 #if(CXSC_INDEX_CHECK) 00866 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00867 #else 00868 throw() 00869 #endif 00870 { return _vvplusassign(rv1,rv2); } 00871 INLINE civector &operator +=(civector &rv, const civector_slice &sl) 00872 #if(CXSC_INDEX_CHECK) 00873 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00874 #else 00875 throw() 00876 #endif 00877 { return _vvsplusassign(rv,sl); } 00878 INLINE civector_slice &civector_slice::operator +=(const civector &rv) 00879 #if(CXSC_INDEX_CHECK) 00880 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00881 #else 00882 throw() 00883 #endif 00884 { return _vsvplusassign(*this,rv); } 00885 INLINE civector_slice &civector_slice::operator +=(const civector_slice &sl2) 00886 #if(CXSC_INDEX_CHECK) 00887 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00888 #else 00889 throw() 00890 #endif 00891 { return _vsvsplusassign(*this,sl2); } 00892 00893 INLINE civector operator -(const civector &rv) throw() { return _vminus(rv); } 00894 INLINE civector operator -(const civector_slice &sl) throw() { return _vsminus<civector_slice,civector>(sl); } 00895 INLINE civector operator -(const civector &rv1, const civector &rv2) 00896 #if(CXSC_INDEX_CHECK) 00897 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00898 #else 00899 throw() 00900 #endif 00901 { return _vvminus<civector,civector,civector>(rv1,rv2); } 00902 INLINE civector operator -(const civector &rv, const civector_slice &sl) 00903 #if(CXSC_INDEX_CHECK) 00904 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00905 #else 00906 throw() 00907 #endif 00908 { return _vvsminus<civector,civector_slice,civector>(rv,sl); } 00909 INLINE civector operator -(const civector_slice &sl, const civector &rv) 00910 #if(CXSC_INDEX_CHECK) 00911 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00912 #else 00913 throw() 00914 #endif 00915 { return _vsvminus<civector_slice,civector,civector>(sl,rv); } 00916 INLINE civector operator -(const civector_slice &sl1, const civector_slice &sl2) 00917 #if(CXSC_INDEX_CHECK) 00918 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00919 #else 00920 throw() 00921 #endif 00922 { return _vsvsminus<civector_slice,civector_slice,civector>(sl1,sl2); } 00923 INLINE civector & operator -=(civector &rv1, const civector &rv2) 00924 #if(CXSC_INDEX_CHECK) 00925 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00926 #else 00927 throw() 00928 #endif 00929 { return _vvminusassign(rv1,rv2); } 00930 INLINE civector &operator -=(civector &rv, const civector_slice &sl) 00931 #if(CXSC_INDEX_CHECK) 00932 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00933 #else 00934 throw() 00935 #endif 00936 { return _vvsminusassign(rv,sl); } 00937 INLINE civector_slice &civector_slice::operator -=(const civector &rv) 00938 #if(CXSC_INDEX_CHECK) 00939 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00940 #else 00941 throw() 00942 #endif 00943 { return _vsvminusassign(*this,rv); } 00944 INLINE civector_slice &civector_slice::operator -=(const civector_slice &sl2) 00945 #if(CXSC_INDEX_CHECK) 00946 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00947 #else 00948 throw() 00949 #endif 00950 { return _vsvsminusassign(*this,sl2); } 00951 00952 INLINE civector operator |(const civector &rv1, const civector &rv2) 00953 #if(CXSC_INDEX_CHECK) 00954 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00955 #else 00956 throw() 00957 #endif 00958 { return _vvconv<civector,civector,civector>(rv1,rv2); } 00959 INLINE civector operator |(const civector &rv, const civector_slice &sl) 00960 #if(CXSC_INDEX_CHECK) 00961 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00962 #else 00963 throw() 00964 #endif 00965 { return _vvsconv<civector,civector_slice,civector>(rv,sl); } 00966 INLINE civector operator |(const civector_slice &sl, const civector &rv) 00967 #if(CXSC_INDEX_CHECK) 00968 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00969 #else 00970 throw() 00971 #endif 00972 { return _vvsconv<civector,civector_slice,civector>(rv,sl); } 00973 INLINE civector operator |(const civector_slice &sl1, const civector_slice &sl2) 00974 #if(CXSC_INDEX_CHECK) 00975 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00976 #else 00977 throw() 00978 #endif 00979 { return _vsvsconv<civector_slice,civector_slice,civector>(sl1,sl2); } 00980 INLINE civector & operator |=(civector &rv1, const civector &rv2) 00981 #if(CXSC_INDEX_CHECK) 00982 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00983 #else 00984 throw() 00985 #endif 00986 { return _vvconvassign(rv1,rv2); } 00987 INLINE civector &operator |=(civector &rv, const civector_slice &sl) 00988 #if(CXSC_INDEX_CHECK) 00989 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00990 #else 00991 throw() 00992 #endif 00993 { return _vvsconvassign(rv,sl); } 00994 INLINE civector_slice &civector_slice::operator |=(const civector &rv) 00995 #if(CXSC_INDEX_CHECK) 00996 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 00997 #else 00998 throw() 00999 #endif 01000 { return _vsvconvassign(*this,rv); } 01001 INLINE civector_slice &civector_slice::operator |=(const civector_slice &sl2) 01002 #if(CXSC_INDEX_CHECK) 01003 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01004 #else 01005 throw() 01006 #endif 01007 { return _vsvsconvassign(*this,sl2); } 01008 01009 INLINE civector operator &(const civector &rv1, const civector &rv2) 01010 #if(CXSC_INDEX_CHECK) 01011 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01012 #else 01013 throw() 01014 #endif 01015 { return _vvsect<civector,civector,civector>(rv1,rv2); } 01016 INLINE civector operator &(const civector &rv, const civector_slice &sl) 01017 #if(CXSC_INDEX_CHECK) 01018 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01019 #else 01020 throw() 01021 #endif 01022 { return _vvssect<civector,civector_slice,civector>(rv,sl); } 01023 INLINE civector operator &(const civector_slice &sl, const civector &rv) 01024 #if(CXSC_INDEX_CHECK) 01025 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01026 #else 01027 throw() 01028 #endif 01029 { return _vvssect<civector,civector_slice,civector>(rv,sl); } 01030 INLINE civector operator &(const civector_slice &sl1, const civector_slice &sl2) 01031 #if(CXSC_INDEX_CHECK) 01032 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01033 #else 01034 throw() 01035 #endif 01036 { return _vsvssect<civector_slice,civector_slice,civector>(sl1,sl2); } 01037 INLINE civector & operator &=(civector &rv1, const civector &rv2) 01038 #if(CXSC_INDEX_CHECK) 01039 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01040 #else 01041 throw() 01042 #endif 01043 { return _vvsectassign(rv1,rv2); } 01044 INLINE civector &operator &=(civector &rv, const civector_slice &sl) 01045 #if(CXSC_INDEX_CHECK) 01046 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01047 #else 01048 throw() 01049 #endif 01050 { return _vvssectassign(rv,sl); } 01051 INLINE civector_slice &civector_slice::operator &=(const civector &rv) 01052 #if(CXSC_INDEX_CHECK) 01053 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01054 #else 01055 throw() 01056 #endif 01057 { return _vsvsectassign(*this,rv); } 01058 INLINE civector_slice &civector_slice::operator &=(const civector_slice &sl2) 01059 #if(CXSC_INDEX_CHECK) 01060 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01061 #else 01062 throw() 01063 #endif 01064 { return _vsvssectassign(*this,sl2); } 01065 01066 INLINE bool operator ==(const civector &rv1, const civector &rv2) throw() { return _vveq(rv1,rv2); } 01067 INLINE bool operator ==(const civector_slice &sl1, const civector_slice &sl2) throw() { return _vsvseq(sl1,sl2); } 01068 INLINE bool operator ==(const civector_slice &sl, const civector &rv) throw() { return _vsveq(sl,rv); } 01069 INLINE bool operator ==(const civector &rv, const civector_slice &sl) throw() { return _vsveq(sl,rv); } 01070 INLINE bool operator !=(const civector &rv1, const civector &rv2) throw() { return _vvneq(rv1,rv2); } 01071 INLINE bool operator !=(const civector_slice &sl1, const civector_slice &sl2) throw() { return _vsvsneq(sl1,sl2); } 01072 INLINE bool operator !=(const civector_slice &sl, const civector &rv) throw() { return _vsvneq(sl,rv); } 01073 INLINE bool operator !=(const civector &rv, const civector_slice &sl) throw() { return _vsvneq(sl,rv); } 01074 INLINE bool operator <(const civector &rv1, const civector &rv2) throw() { return _vvless(rv1,rv2); } 01075 INLINE bool operator <(const civector_slice &sl1, const civector_slice &sl2) throw() { return _vsvsless(sl1,sl2); } 01076 INLINE bool operator < (const civector_slice &sl, const civector &rv) throw() { return _vsvless(sl,rv); } 01077 INLINE bool operator < (const civector &rv, const civector_slice &sl) throw() { return _vvsless(rv,sl); } 01078 INLINE bool operator <=(const civector &rv1, const civector &rv2) throw() { return _vvleq(rv1,rv2); } 01079 INLINE bool operator <=(const civector_slice &sl1, const civector_slice &sl2) throw() { return _vsvsleq(sl1,sl2); } 01080 INLINE bool operator <=(const civector_slice &sl, const civector &rv) throw() { return _vsvleq(sl,rv); } 01081 INLINE bool operator <=(const civector &rv, const civector_slice &sl) throw() { return _vvsleq(rv,sl); } 01082 INLINE bool operator >(const civector &rv1, const civector &rv2) throw() { return _vvless(rv2,rv1); } 01083 INLINE bool operator >(const civector_slice &sl1, const civector_slice &sl2) throw() { return _vsvsless(sl2,sl1); } 01084 INLINE bool operator >(const civector_slice &sl, const civector &rv) throw() { return _vvsless(rv,sl); } 01085 INLINE bool operator >(const civector &rv, const civector_slice &sl) throw() { return _vsvless(sl,rv); } 01086 INLINE bool operator >=(const civector &rv1, const civector &rv2) throw() { return _vvleq(rv2,rv1); } 01087 INLINE bool operator >=(const civector_slice &sl1, const civector_slice &sl2) throw() { return _vsvsleq(sl2,sl1); } 01088 INLINE bool operator >=(const civector_slice &sl, const civector &rv) throw() { return _vvsleq(rv,sl); } 01089 INLINE bool operator >=(const civector &rv, const civector_slice &sl) throw() { return _vsvleq(sl,rv); } 01090 01091 //-------------------------------- cinterval / Real -------------------------------- 01092 01093 INLINE civector &civector::operator =(const rvector &rv) throw() { return _vvassign<civector,rvector,cinterval>(*this,rv); } 01094 INLINE civector &civector::operator =(const real &r) throw() { return _vsassign<civector,real>(*this,r); } 01095 INLINE civector & civector::operator =(const rvector_slice &sl) throw() { return _vvsassign<civector,rvector_slice,cinterval>(*this,sl); } 01096 INLINE civector_slice &civector_slice::operator =(const rvector &rv) 01097 #if(CXSC_INDEX_CHECK) 01098 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01099 #else 01100 throw() 01101 #endif 01102 { return _vsvassign(*this,rv); } 01103 INLINE civector_slice &civector_slice::operator =(const real &r) throw() { return _vssassign<civector_slice,real>(*this,r); } 01104 INLINE civector_slice & civector_slice::operator =(const rvector_slice &sl) 01105 #if(CXSC_INDEX_CHECK) 01106 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01107 #else 01108 throw() 01109 #endif 01110 { return _vsvsassign(*this,sl); } 01111 01112 01113 INLINE cinterval operator *(const rvector & rv1, const civector &rv2) 01114 #if(CXSC_INDEX_CHECK) 01115 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01116 #else 01117 throw() 01118 #endif 01119 { return _vvcimult<rvector,civector,cinterval>(rv1,rv2); } 01120 INLINE cinterval operator *(const rvector_slice &sl, const civector &rv) 01121 #if(CXSC_INDEX_CHECK) 01122 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01123 #else 01124 throw() 01125 #endif 01126 { return _vsvcimult<rvector_slice,civector,cinterval>(sl,rv); } 01127 INLINE cinterval operator *(const rvector &rv, const civector_slice &sl) 01128 #if(CXSC_INDEX_CHECK) 01129 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01130 #else 01131 throw() 01132 #endif 01133 { return _vsvcimult<civector_slice,rvector,cinterval>(sl,rv); } 01134 INLINE cinterval operator *(const rvector_slice & sl1, const civector_slice &sl2) 01135 #if(CXSC_INDEX_CHECK) 01136 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01137 #else 01138 throw() 01139 #endif 01140 { return _vsvscimult<rvector_slice,civector_slice,cinterval>(sl1,sl2); } 01141 01142 INLINE cinterval operator *(const civector & rv1, const rvector &rv2) 01143 #if(CXSC_INDEX_CHECK) 01144 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01145 #else 01146 throw() 01147 #endif 01148 { return _vvcimult<rvector,civector,cinterval>(rv2,rv1); } 01149 INLINE cinterval operator *(const civector_slice &sl, const rvector &rv) 01150 #if(CXSC_INDEX_CHECK) 01151 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01152 #else 01153 throw() 01154 #endif 01155 { return _vsvcimult<civector_slice,rvector,cinterval>(sl,rv); } 01156 INLINE cinterval operator *(const civector &rv, const rvector_slice &sl) 01157 #if(CXSC_INDEX_CHECK) 01158 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01159 #else 01160 throw() 01161 #endif 01162 { return _vsvcimult<rvector_slice,civector,cinterval>(sl,rv); } 01163 INLINE cinterval operator *(const civector_slice & sl1, const rvector_slice &sl2) 01164 #if(CXSC_INDEX_CHECK) 01165 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01166 #else 01167 throw() 01168 #endif 01169 { return _vsvscimult<rvector_slice,civector_slice,cinterval>(sl2,sl1); } 01170 01171 INLINE civector operator +(const rvector &rv1, const civector &rv2) 01172 #if(CXSC_INDEX_CHECK) 01173 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01174 #else 01175 throw() 01176 #endif 01177 { return _vvplus<rvector,civector,civector>(rv1,rv2); } 01178 INLINE civector operator +(const rvector &rv, const civector_slice &sl) 01179 #if(CXSC_INDEX_CHECK) 01180 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01181 #else 01182 throw() 01183 #endif 01184 { return _vvsplus<rvector,civector_slice,civector>(rv,sl); } 01185 INLINE civector operator +(const rvector_slice &sl, const civector &rv) 01186 #if(CXSC_INDEX_CHECK) 01187 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01188 #else 01189 throw() 01190 #endif 01191 { return _vvsplus<civector,rvector_slice,civector>(rv,sl); } 01192 INLINE civector operator +(const rvector_slice &sl1, const civector_slice &sl2) 01193 #if(CXSC_INDEX_CHECK) 01194 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01195 #else 01196 throw() 01197 #endif 01198 { return _vsvsplus<rvector_slice,civector_slice,civector>(sl1,sl2); } 01199 01200 INLINE civector operator +(const civector &rv1, const rvector &rv2) 01201 #if(CXSC_INDEX_CHECK) 01202 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01203 #else 01204 throw() 01205 #endif 01206 { return _vvplus<rvector,civector,civector>(rv2,rv1); } 01207 INLINE civector operator +(const civector &rv, const rvector_slice &sl) 01208 #if(CXSC_INDEX_CHECK) 01209 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01210 #else 01211 throw() 01212 #endif 01213 { return _vvsplus<civector,rvector_slice,civector>(rv,sl); } 01214 INLINE civector operator +(const civector_slice &sl, const rvector &rv) 01215 #if(CXSC_INDEX_CHECK) 01216 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01217 #else 01218 throw() 01219 #endif 01220 { return _vvsplus<rvector,civector_slice,civector>(rv,sl); } 01221 INLINE civector operator +(const civector_slice &sl1, const rvector_slice &sl2) 01222 #if(CXSC_INDEX_CHECK) 01223 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01224 #else 01225 throw() 01226 #endif 01227 { return _vsvsplus<rvector_slice,civector_slice,civector>(sl2,sl1); } 01228 01229 INLINE civector & operator +=(civector &rv1, const rvector &rv2) 01230 #if(CXSC_INDEX_CHECK) 01231 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01232 #else 01233 throw() 01234 #endif 01235 { return _vvplusassign(rv1,rv2); } 01236 INLINE civector &operator +=(civector &rv, const rvector_slice &sl) 01237 #if(CXSC_INDEX_CHECK) 01238 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01239 #else 01240 throw() 01241 #endif 01242 { return _vvsplusassign(rv,sl); } 01243 INLINE civector_slice &civector_slice::operator +=(const rvector &rv) 01244 #if(CXSC_INDEX_CHECK) 01245 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01246 #else 01247 throw() 01248 #endif 01249 { return _vsvplusassign(*this,rv); } 01250 INLINE civector_slice &civector_slice::operator +=(const rvector_slice &sl2) 01251 #if(CXSC_INDEX_CHECK) 01252 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01253 #else 01254 throw() 01255 #endif 01256 { return _vsvsplusassign(*this,sl2); } 01257 01258 INLINE civector operator -(const rvector &rv1, const civector &rv2) 01259 #if(CXSC_INDEX_CHECK) 01260 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01261 #else 01262 throw() 01263 #endif 01264 { return _vvminus<rvector,civector,civector>(rv1,rv2); } 01265 INLINE civector operator -(const rvector &rv, const civector_slice &sl) 01266 #if(CXSC_INDEX_CHECK) 01267 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01268 #else 01269 throw() 01270 #endif 01271 { return _vvsminus<rvector,civector_slice,civector>(rv,sl); } 01272 INLINE civector operator -(const rvector_slice &sl, const civector &rv) 01273 #if(CXSC_INDEX_CHECK) 01274 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01275 #else 01276 throw() 01277 #endif 01278 { return _vsvminus<rvector_slice,civector,civector>(sl,rv); } 01279 INLINE civector operator -(const rvector_slice &sl1, const civector_slice &sl2) 01280 #if(CXSC_INDEX_CHECK) 01281 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01282 #else 01283 throw() 01284 #endif 01285 { return _vsvsminus<rvector_slice,civector_slice,civector>(sl1,sl2); } 01286 01287 INLINE civector operator -(const civector &rv1, const rvector &rv2) 01288 #if(CXSC_INDEX_CHECK) 01289 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01290 #else 01291 throw() 01292 #endif 01293 { return _vvminus<civector,rvector,civector>(rv1,rv2); } 01294 INLINE civector operator -(const civector &rv, const rvector_slice &sl) 01295 #if(CXSC_INDEX_CHECK) 01296 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01297 #else 01298 throw() 01299 #endif 01300 { return _vvsminus<civector,rvector_slice,civector>(rv,sl); } 01301 INLINE civector operator -(const civector_slice &sl, const rvector &rv) 01302 #if(CXSC_INDEX_CHECK) 01303 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01304 #else 01305 throw() 01306 #endif 01307 { return _vsvminus<civector_slice,rvector,civector>(sl,rv); } 01308 INLINE civector operator -(const civector_slice &sl1, const rvector_slice &sl2) 01309 #if(CXSC_INDEX_CHECK) 01310 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01311 #else 01312 throw() 01313 #endif 01314 { return _vsvsminus<civector_slice,rvector_slice,civector>(sl1,sl2); } 01315 01316 INLINE civector & operator -=(civector &rv1, const rvector &rv2) 01317 #if(CXSC_INDEX_CHECK) 01318 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01319 #else 01320 throw() 01321 #endif 01322 { return _vvminusassign(rv1,rv2); } 01323 INLINE civector &operator -=(civector &rv, const rvector_slice &sl) 01324 #if(CXSC_INDEX_CHECK) 01325 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01326 #else 01327 throw() 01328 #endif 01329 { return _vvsminusassign(rv,sl); } 01330 INLINE civector_slice &civector_slice::operator -=(const rvector &rv) 01331 #if(CXSC_INDEX_CHECK) 01332 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01333 #else 01334 throw() 01335 #endif 01336 { return _vsvminusassign(*this,rv); } 01337 INLINE civector_slice &civector_slice::operator -=(const rvector_slice &sl2) 01338 #if(CXSC_INDEX_CHECK) 01339 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01340 #else 01341 throw() 01342 #endif 01343 { return _vsvsminusassign(*this,sl2); } 01344 01345 INLINE civector operator |(const rvector &rv1, const civector &rv2) 01346 #if(CXSC_INDEX_CHECK) 01347 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01348 #else 01349 throw() 01350 #endif 01351 { return _vvconv<rvector,civector,civector>(rv1,rv2); } 01352 INLINE civector operator |(const rvector &rv, const civector_slice &sl) 01353 #if(CXSC_INDEX_CHECK) 01354 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01355 #else 01356 throw() 01357 #endif 01358 { return _vvsconv<rvector,civector_slice,civector>(rv,sl); } 01359 INLINE civector operator |(const rvector_slice &sl, const civector &rv) 01360 #if(CXSC_INDEX_CHECK) 01361 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01362 #else 01363 throw() 01364 #endif 01365 { return _vvsconv<civector,rvector_slice,civector>(rv,sl); } 01366 INLINE civector operator |(const rvector_slice &sl1, const civector_slice &sl2) 01367 #if(CXSC_INDEX_CHECK) 01368 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01369 #else 01370 throw() 01371 #endif 01372 { return _vsvsconv<rvector_slice,civector_slice,civector>(sl1,sl2); } 01373 01374 INLINE civector operator |(const civector &rv1, const rvector &rv2) 01375 #if(CXSC_INDEX_CHECK) 01376 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01377 #else 01378 throw() 01379 #endif 01380 { return _vvconv<rvector,civector,civector>(rv2,rv1); } 01381 INLINE civector operator |(const civector &rv, const rvector_slice &sl) 01382 #if(CXSC_INDEX_CHECK) 01383 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01384 #else 01385 throw() 01386 #endif 01387 { return _vvsconv<civector,rvector_slice,civector>(rv,sl); } 01388 INLINE civector operator |(const civector_slice &sl, const rvector &rv) 01389 #if(CXSC_INDEX_CHECK) 01390 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01391 #else 01392 throw() 01393 #endif 01394 { return _vvsconv<rvector,civector_slice,civector>(rv,sl); } 01395 INLINE civector operator |(const civector_slice &sl1, const rvector_slice &sl2) 01396 #if(CXSC_INDEX_CHECK) 01397 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01398 #else 01399 throw() 01400 #endif 01401 { return _vsvsconv<rvector_slice,civector_slice,civector>(sl2,sl1); } 01402 01403 INLINE civector & operator |=(civector &rv1, const rvector &rv2) 01404 #if(CXSC_INDEX_CHECK) 01405 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01406 #else 01407 throw() 01408 #endif 01409 { return _vvconvassign(rv1,rv2); } 01410 INLINE civector &operator |=(civector &rv, const rvector_slice &sl) 01411 #if(CXSC_INDEX_CHECK) 01412 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01413 #else 01414 throw() 01415 #endif 01416 { return _vvsconvassign(rv,sl); } 01417 INLINE civector_slice &civector_slice::operator |=(const rvector &rv) 01418 #if(CXSC_INDEX_CHECK) 01419 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01420 #else 01421 throw() 01422 #endif 01423 { return _vsvconvassign(*this,rv); } 01424 INLINE civector_slice &civector_slice::operator |=(const rvector_slice &sl2) 01425 #if(CXSC_INDEX_CHECK) 01426 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01427 #else 01428 throw() 01429 #endif 01430 { return _vsvsconvassign(*this,sl2); } 01431 01432 INLINE civector operator &(const rvector &rv1, const civector &rv2) 01433 #if(CXSC_INDEX_CHECK) 01434 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01435 #else 01436 throw() 01437 #endif 01438 { return _vvsect<rvector,civector,civector>(rv1,rv2); } 01439 INLINE civector operator &(const rvector &rv, const civector_slice &sl) 01440 #if(CXSC_INDEX_CHECK) 01441 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01442 #else 01443 throw() 01444 #endif 01445 { return _vvssect<rvector,civector_slice,civector>(rv,sl); } 01446 INLINE civector operator &(const rvector_slice &sl, const civector &rv) 01447 #if(CXSC_INDEX_CHECK) 01448 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01449 #else 01450 throw() 01451 #endif 01452 { return _vvssect<civector,rvector_slice,civector>(rv,sl); } 01453 INLINE civector operator &(const rvector_slice &sl1, const civector_slice &sl2) 01454 #if(CXSC_INDEX_CHECK) 01455 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01456 #else 01457 throw() 01458 #endif 01459 { return _vsvssect<rvector_slice,civector_slice,civector>(sl1,sl2); } 01460 01461 INLINE civector operator &(const civector &rv1, const rvector &rv2) 01462 #if(CXSC_INDEX_CHECK) 01463 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01464 #else 01465 throw() 01466 #endif 01467 { return _vvsect<rvector,civector,civector>(rv2,rv1); } 01468 INLINE civector operator &(const civector &rv, const rvector_slice &sl) 01469 #if(CXSC_INDEX_CHECK) 01470 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01471 #else 01472 throw() 01473 #endif 01474 { return _vvssect<civector,rvector_slice,civector>(rv,sl); } 01475 INLINE civector operator &(const civector_slice &sl, const rvector &rv) 01476 #if(CXSC_INDEX_CHECK) 01477 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01478 #else 01479 throw() 01480 #endif 01481 { return _vvssect<rvector,civector_slice,civector>(rv,sl); } 01482 INLINE civector operator &(const civector_slice &sl1, const rvector_slice &sl2) 01483 #if(CXSC_INDEX_CHECK) 01484 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01485 #else 01486 throw() 01487 #endif 01488 { return _vsvssect<rvector_slice,civector_slice,civector>(sl2,sl1); } 01489 01490 INLINE civector & operator &=(civector &rv1, const rvector &rv2) 01491 #if(CXSC_INDEX_CHECK) 01492 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01493 #else 01494 throw() 01495 #endif 01496 { return _vvsectassign(rv1,rv2); } 01497 INLINE civector &operator &=(civector &rv, const rvector_slice &sl) 01498 #if(CXSC_INDEX_CHECK) 01499 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01500 #else 01501 throw() 01502 #endif 01503 { return _vvssectassign(rv,sl); } 01504 INLINE civector_slice &civector_slice::operator &=(const rvector &rv) 01505 #if(CXSC_INDEX_CHECK) 01506 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01507 #else 01508 throw() 01509 #endif 01510 { return _vsvsectassign(*this,rv); } 01511 INLINE civector_slice &civector_slice::operator &=(const rvector_slice &sl2) 01512 #if(CXSC_INDEX_CHECK) 01513 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01514 #else 01515 throw() 01516 #endif 01517 { return _vsvssectassign(*this,sl2); } 01518 01519 //-------------------------------- cinterval / complex -------------------------------- 01520 01521 INLINE civector &civector::operator =(const cvector &rv) throw() { return _vvassign<civector,cvector,cinterval>(*this,rv); } 01522 INLINE civector &civector::operator =(const complex &r) throw() { return _vsassign<civector,complex>(*this,r); } 01523 INLINE civector & civector::operator =(const cvector_slice &sl) throw() { return _vvsassign<civector,cvector_slice,cinterval>(*this,sl); } 01524 INLINE civector_slice &civector_slice::operator =(const cvector &rv) 01525 #if(CXSC_INDEX_CHECK) 01526 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01527 #else 01528 throw() 01529 #endif 01530 { return _vsvassign(*this,rv); } 01531 INLINE civector_slice &civector_slice::operator =(const complex &r) throw() { return _vssassign<civector_slice,complex>(*this,r); } 01532 INLINE civector_slice & civector_slice::operator =(const cvector_slice &sl) 01533 #if(CXSC_INDEX_CHECK) 01534 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01535 #else 01536 throw() 01537 #endif 01538 { return _vsvsassign(*this,sl); } 01539 01540 01541 INLINE cinterval operator *(const cvector & rv1, const civector &rv2) 01542 #if(CXSC_INDEX_CHECK) 01543 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01544 #else 01545 throw() 01546 #endif 01547 { return _vvcimult<cvector,civector,cinterval>(rv1,rv2); } 01548 INLINE cinterval operator *(const cvector_slice &sl, const civector &rv) 01549 #if(CXSC_INDEX_CHECK) 01550 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01551 #else 01552 throw() 01553 #endif 01554 { return _vsvcimult<cvector_slice,civector,cinterval>(sl,rv); } 01555 INLINE cinterval operator *(const cvector &rv, const civector_slice &sl) 01556 #if(CXSC_INDEX_CHECK) 01557 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01558 #else 01559 throw() 01560 #endif 01561 { return _vsvcimult<civector_slice,cvector,cinterval>(sl,rv); } 01562 INLINE cinterval operator *(const cvector_slice & sl1, const civector_slice &sl2) 01563 #if(CXSC_INDEX_CHECK) 01564 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01565 #else 01566 throw() 01567 #endif 01568 { return _vsvscimult<cvector_slice,civector_slice,cinterval>(sl1,sl2); } 01569 01570 INLINE cinterval operator *(const civector & rv1, const cvector &rv2) 01571 #if(CXSC_INDEX_CHECK) 01572 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01573 #else 01574 throw() 01575 #endif 01576 { return _vvcimult<cvector,civector,cinterval>(rv2,rv1); } 01577 INLINE cinterval operator *(const civector_slice &sl, const cvector &rv) 01578 #if(CXSC_INDEX_CHECK) 01579 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01580 #else 01581 throw() 01582 #endif 01583 { return _vsvcimult<civector_slice,cvector,cinterval>(sl,rv); } 01584 INLINE cinterval operator *(const civector &rv, const cvector_slice &sl) 01585 #if(CXSC_INDEX_CHECK) 01586 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01587 #else 01588 throw() 01589 #endif 01590 { return _vsvcimult<cvector_slice,civector,cinterval>(sl,rv); } 01591 INLINE cinterval operator *(const civector_slice & sl1, const cvector_slice &sl2) 01592 #if(CXSC_INDEX_CHECK) 01593 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01594 #else 01595 throw() 01596 #endif 01597 { return _vsvscimult<cvector_slice,civector_slice,cinterval>(sl2,sl1); } 01598 01599 INLINE civector operator +(const cvector &rv1, const civector &rv2) 01600 #if(CXSC_INDEX_CHECK) 01601 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01602 #else 01603 throw() 01604 #endif 01605 { return _vvplus<cvector,civector,civector>(rv1,rv2); } 01606 INLINE civector operator +(const cvector &rv, const civector_slice &sl) 01607 #if(CXSC_INDEX_CHECK) 01608 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01609 #else 01610 throw() 01611 #endif 01612 { return _vvsplus<cvector,civector_slice,civector>(rv,sl); } 01613 INLINE civector operator +(const cvector_slice &sl, const civector &rv) 01614 #if(CXSC_INDEX_CHECK) 01615 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01616 #else 01617 throw() 01618 #endif 01619 { return _vvsplus<civector,cvector_slice,civector>(rv,sl); } 01620 INLINE civector operator +(const cvector_slice &sl1, const civector_slice &sl2) 01621 #if(CXSC_INDEX_CHECK) 01622 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01623 #else 01624 throw() 01625 #endif 01626 { return _vsvsplus<cvector_slice,civector_slice,civector>(sl1,sl2); } 01627 01628 INLINE civector operator +(const civector &rv1, const cvector &rv2) 01629 #if(CXSC_INDEX_CHECK) 01630 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01631 #else 01632 throw() 01633 #endif 01634 { return _vvplus<cvector,civector,civector>(rv2,rv1); } 01635 INLINE civector operator +(const civector &rv, const cvector_slice &sl) 01636 #if(CXSC_INDEX_CHECK) 01637 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01638 #else 01639 throw() 01640 #endif 01641 { return _vvsplus<civector,cvector_slice,civector>(rv,sl); } 01642 INLINE civector operator +(const civector_slice &sl, const cvector &rv) 01643 #if(CXSC_INDEX_CHECK) 01644 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01645 #else 01646 throw() 01647 #endif 01648 { return _vvsplus<cvector,civector_slice,civector>(rv,sl); } 01649 INLINE civector operator +(const civector_slice &sl1, const cvector_slice &sl2) 01650 #if(CXSC_INDEX_CHECK) 01651 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01652 #else 01653 throw() 01654 #endif 01655 { return _vsvsplus<cvector_slice,civector_slice,civector>(sl2,sl1); } 01656 01657 INLINE civector & operator +=(civector &rv1, const cvector &rv2) 01658 #if(CXSC_INDEX_CHECK) 01659 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01660 #else 01661 throw() 01662 #endif 01663 { return _vvplusassign(rv1,rv2); } 01664 INLINE civector &operator +=(civector &rv, const cvector_slice &sl) 01665 #if(CXSC_INDEX_CHECK) 01666 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01667 #else 01668 throw() 01669 #endif 01670 { return _vvsplusassign(rv,sl); } 01671 INLINE civector_slice &civector_slice::operator +=(const cvector &rv) 01672 #if(CXSC_INDEX_CHECK) 01673 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01674 #else 01675 throw() 01676 #endif 01677 { return _vsvplusassign(*this,rv); } 01678 INLINE civector_slice &civector_slice::operator +=(const cvector_slice &sl2) 01679 #if(CXSC_INDEX_CHECK) 01680 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01681 #else 01682 throw() 01683 #endif 01684 { return _vsvsplusassign(*this,sl2); } 01685 01686 INLINE civector operator -(const cvector &rv1, const civector &rv2) 01687 #if(CXSC_INDEX_CHECK) 01688 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01689 #else 01690 throw() 01691 #endif 01692 { return _vvminus<cvector,civector,civector>(rv1,rv2); } 01693 INLINE civector operator -(const cvector &rv, const civector_slice &sl) 01694 #if(CXSC_INDEX_CHECK) 01695 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01696 #else 01697 throw() 01698 #endif 01699 { return _vvsminus<cvector,civector_slice,civector>(rv,sl); } 01700 INLINE civector operator -(const cvector_slice &sl, const civector &rv) 01701 #if(CXSC_INDEX_CHECK) 01702 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01703 #else 01704 throw() 01705 #endif 01706 { return _vsvminus<cvector_slice,civector,civector>(sl,rv); } 01707 INLINE civector operator -(const cvector_slice &sl1, const civector_slice &sl2) 01708 #if(CXSC_INDEX_CHECK) 01709 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01710 #else 01711 throw() 01712 #endif 01713 { return _vsvsminus<cvector_slice,civector_slice,civector>(sl1,sl2); } 01714 01715 INLINE civector operator -(const civector &rv1, const cvector &rv2) 01716 #if(CXSC_INDEX_CHECK) 01717 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01718 #else 01719 throw() 01720 #endif 01721 { return _vvminus<civector,cvector,civector>(rv1,rv2); } 01722 INLINE civector operator -(const civector &rv, const cvector_slice &sl) 01723 #if(CXSC_INDEX_CHECK) 01724 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01725 #else 01726 throw() 01727 #endif 01728 { return _vvsminus<civector,cvector_slice,civector>(rv,sl); } 01729 INLINE civector operator -(const civector_slice &sl, const cvector &rv) 01730 #if(CXSC_INDEX_CHECK) 01731 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01732 #else 01733 throw() 01734 #endif 01735 { return _vsvminus<civector_slice,cvector,civector>(sl,rv); } 01736 INLINE civector operator -(const civector_slice &sl1, const cvector_slice &sl2) 01737 #if(CXSC_INDEX_CHECK) 01738 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01739 #else 01740 throw() 01741 #endif 01742 { return _vsvsminus<civector_slice,cvector_slice,civector>(sl1,sl2); } 01743 01744 INLINE civector & operator -=(civector &rv1, const cvector &rv2) 01745 #if(CXSC_INDEX_CHECK) 01746 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01747 #else 01748 throw() 01749 #endif 01750 { return _vvminusassign(rv1,rv2); } 01751 INLINE civector &operator -=(civector &rv, const cvector_slice &sl) 01752 #if(CXSC_INDEX_CHECK) 01753 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01754 #else 01755 throw() 01756 #endif 01757 { return _vvsminusassign(rv,sl); } 01758 INLINE civector_slice &civector_slice::operator -=(const cvector &rv) 01759 #if(CXSC_INDEX_CHECK) 01760 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01761 #else 01762 throw() 01763 #endif 01764 { return _vsvminusassign(*this,rv); } 01765 INLINE civector_slice &civector_slice::operator -=(const cvector_slice &sl2) 01766 #if(CXSC_INDEX_CHECK) 01767 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01768 #else 01769 throw() 01770 #endif 01771 { return _vsvsminusassign(*this,sl2); } 01772 01773 INLINE civector operator |(const cvector &rv1, const civector &rv2) 01774 #if(CXSC_INDEX_CHECK) 01775 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01776 #else 01777 throw() 01778 #endif 01779 { return _vvconv<cvector,civector,civector>(rv1,rv2); } 01780 INLINE civector operator |(const cvector &rv, const civector_slice &sl) 01781 #if(CXSC_INDEX_CHECK) 01782 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01783 #else 01784 throw() 01785 #endif 01786 { return _vvsconv<cvector,civector_slice,civector>(rv,sl); } 01787 INLINE civector operator |(const cvector_slice &sl, const civector &rv) 01788 #if(CXSC_INDEX_CHECK) 01789 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01790 #else 01791 throw() 01792 #endif 01793 { return _vvsconv<civector,cvector_slice,civector>(rv,sl); } 01794 INLINE civector operator |(const cvector_slice &sl1, const civector_slice &sl2) 01795 #if(CXSC_INDEX_CHECK) 01796 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01797 #else 01798 throw() 01799 #endif 01800 { return _vsvsconv<cvector_slice,civector_slice,civector>(sl1,sl2); } 01801 01802 INLINE civector operator |(const civector &rv1, const cvector &rv2) 01803 #if(CXSC_INDEX_CHECK) 01804 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01805 #else 01806 throw() 01807 #endif 01808 { return _vvconv<cvector,civector,civector>(rv2,rv1); } 01809 INLINE civector operator |(const civector &rv, const cvector_slice &sl) 01810 #if(CXSC_INDEX_CHECK) 01811 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01812 #else 01813 throw() 01814 #endif 01815 { return _vvsconv<civector,cvector_slice,civector>(rv,sl); } 01816 INLINE civector operator |(const civector_slice &sl, const cvector &rv) 01817 #if(CXSC_INDEX_CHECK) 01818 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01819 #else 01820 throw() 01821 #endif 01822 { return _vvsconv<cvector,civector_slice,civector>(rv,sl); } 01823 INLINE civector operator |(const civector_slice &sl1, const cvector_slice &sl2) 01824 #if(CXSC_INDEX_CHECK) 01825 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01826 #else 01827 throw() 01828 #endif 01829 { return _vsvsconv<cvector_slice,civector_slice,civector>(sl2,sl1); } 01830 01831 INLINE civector & operator |=(civector &rv1, const cvector &rv2) 01832 #if(CXSC_INDEX_CHECK) 01833 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01834 #else 01835 throw() 01836 #endif 01837 { return _vvconvassign(rv1,rv2); } 01838 INLINE civector &operator |=(civector &rv, const cvector_slice &sl) 01839 #if(CXSC_INDEX_CHECK) 01840 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01841 #else 01842 throw() 01843 #endif 01844 { return _vvsconvassign(rv,sl); } 01845 INLINE civector_slice &civector_slice::operator |=(const cvector &rv) 01846 #if(CXSC_INDEX_CHECK) 01847 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01848 #else 01849 throw() 01850 #endif 01851 { return _vsvconvassign(*this,rv); } 01852 INLINE civector_slice &civector_slice::operator |=(const cvector_slice &sl2) 01853 #if(CXSC_INDEX_CHECK) 01854 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01855 #else 01856 throw() 01857 #endif 01858 { return _vsvsconvassign(*this,sl2); } 01859 01860 INLINE civector operator &(const cvector &rv1, const civector &rv2) 01861 #if(CXSC_INDEX_CHECK) 01862 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01863 #else 01864 throw() 01865 #endif 01866 { return _vvsect<cvector,civector,civector>(rv1,rv2); } 01867 INLINE civector operator &(const cvector &rv, const civector_slice &sl) 01868 #if(CXSC_INDEX_CHECK) 01869 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01870 #else 01871 throw() 01872 #endif 01873 { return _vvssect<cvector,civector_slice,civector>(rv,sl); } 01874 INLINE civector operator &(const cvector_slice &sl, const civector &rv) 01875 #if(CXSC_INDEX_CHECK) 01876 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01877 #else 01878 throw() 01879 #endif 01880 { return _vvssect<civector,cvector_slice,civector>(rv,sl); } 01881 INLINE civector operator &(const cvector_slice &sl1, const civector_slice &sl2) 01882 #if(CXSC_INDEX_CHECK) 01883 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01884 #else 01885 throw() 01886 #endif 01887 { return _vsvssect<cvector_slice,civector_slice,civector>(sl1,sl2); } 01888 01889 INLINE civector operator &(const civector &rv1, const cvector &rv2) 01890 #if(CXSC_INDEX_CHECK) 01891 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01892 #else 01893 throw() 01894 #endif 01895 { return _vvsect<cvector,civector,civector>(rv2,rv1); } 01896 INLINE civector operator &(const civector &rv, const cvector_slice &sl) 01897 #if(CXSC_INDEX_CHECK) 01898 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01899 #else 01900 throw() 01901 #endif 01902 { return _vvssect<civector,cvector_slice,civector>(rv,sl); } 01903 INLINE civector operator &(const civector_slice &sl, const cvector &rv) 01904 #if(CXSC_INDEX_CHECK) 01905 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01906 #else 01907 throw() 01908 #endif 01909 { return _vvssect<cvector,civector_slice,civector>(rv,sl); } 01910 INLINE civector operator &(const civector_slice &sl1, const cvector_slice &sl2) 01911 #if(CXSC_INDEX_CHECK) 01912 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01913 #else 01914 throw() 01915 #endif 01916 { return _vsvssect<cvector_slice,civector_slice,civector>(sl2,sl1); } 01917 01918 INLINE civector & operator &=(civector &rv1, const cvector &rv2) 01919 #if(CXSC_INDEX_CHECK) 01920 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01921 #else 01922 throw() 01923 #endif 01924 { return _vvsectassign(rv1,rv2); } 01925 INLINE civector &operator &=(civector &rv, const cvector_slice &sl) 01926 #if(CXSC_INDEX_CHECK) 01927 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01928 #else 01929 throw() 01930 #endif 01931 { return _vvssectassign(rv,sl); } 01932 INLINE civector_slice &civector_slice::operator &=(const cvector &rv) 01933 #if(CXSC_INDEX_CHECK) 01934 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01935 #else 01936 throw() 01937 #endif 01938 { return _vsvsectassign(*this,rv); } 01939 INLINE civector_slice &civector_slice::operator &=(const cvector_slice &sl2) 01940 #if(CXSC_INDEX_CHECK) 01941 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01942 #else 01943 throw() 01944 #endif 01945 { return _vsvssectassign(*this,sl2); } 01946 01947 //-------------------------------- cinterval / interval -------------------------------- 01948 01949 INLINE civector &civector::operator =(const ivector &rv) throw() { return _vvassign<civector,ivector,cinterval>(*this,rv); } 01950 INLINE civector &civector::operator =(const interval &r) throw() { return _vsassign<civector,interval>(*this,r); } 01951 INLINE civector & civector::operator =(const ivector_slice &sl) throw() { return _vvsassign<civector,ivector_slice,cinterval>(*this,sl); } 01952 INLINE civector_slice &civector_slice::operator =(const ivector &rv) 01953 #if(CXSC_INDEX_CHECK) 01954 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01955 #else 01956 throw() 01957 #endif 01958 { return _vsvassign(*this,rv); } 01959 INLINE civector_slice &civector_slice::operator =(const interval &r) throw() { return _vssassign<civector_slice,interval>(*this,r); } 01960 INLINE civector_slice & civector_slice::operator =(const ivector_slice &sl) 01961 #if(CXSC_INDEX_CHECK) 01962 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01963 #else 01964 throw() 01965 #endif 01966 { return _vsvsassign(*this,sl); } 01967 01968 01969 INLINE cinterval operator *(const ivector & rv1, const civector &rv2) 01970 #if(CXSC_INDEX_CHECK) 01971 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01972 #else 01973 throw() 01974 #endif 01975 { return _vvcimult<ivector,civector,cinterval>(rv1,rv2); } 01976 INLINE cinterval operator *(const ivector_slice &sl, const civector &rv) 01977 #if(CXSC_INDEX_CHECK) 01978 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01979 #else 01980 throw() 01981 #endif 01982 { return _vsvcimult<ivector_slice,civector,cinterval>(sl,rv); } 01983 INLINE cinterval operator *(const ivector &rv, const civector_slice &sl) 01984 #if(CXSC_INDEX_CHECK) 01985 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01986 #else 01987 throw() 01988 #endif 01989 { return _vsvcimult<civector_slice,ivector,cinterval>(sl,rv); } 01990 INLINE cinterval operator *(const ivector_slice & sl1, const civector_slice &sl2) 01991 #if(CXSC_INDEX_CHECK) 01992 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 01993 #else 01994 throw() 01995 #endif 01996 { return _vsvscimult<ivector_slice,civector_slice,cinterval>(sl1,sl2); } 01997 01998 INLINE cinterval operator *(const civector & rv1, const ivector &rv2) 01999 #if(CXSC_INDEX_CHECK) 02000 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02001 #else 02002 throw() 02003 #endif 02004 { return _vvcimult<ivector,civector,cinterval>(rv2,rv1); } 02005 INLINE cinterval operator *(const civector_slice &sl, const ivector &rv) 02006 #if(CXSC_INDEX_CHECK) 02007 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02008 #else 02009 throw() 02010 #endif 02011 { return _vsvcimult<civector_slice,ivector,cinterval>(sl,rv); } 02012 INLINE cinterval operator *(const civector &rv, const ivector_slice &sl) 02013 #if(CXSC_INDEX_CHECK) 02014 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02015 #else 02016 throw() 02017 #endif 02018 { return _vsvcimult<ivector_slice,civector,cinterval>(sl,rv); } 02019 INLINE cinterval operator *(const civector_slice & sl1, const ivector_slice &sl2) 02020 #if(CXSC_INDEX_CHECK) 02021 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02022 #else 02023 throw() 02024 #endif 02025 { return _vsvscimult<ivector_slice,civector_slice,cinterval>(sl2,sl1); } 02026 02027 INLINE civector operator +(const ivector &rv1, const civector &rv2) 02028 #if(CXSC_INDEX_CHECK) 02029 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02030 #else 02031 throw() 02032 #endif 02033 { return _vvplus<ivector,civector,civector>(rv1,rv2); } 02034 INLINE civector operator +(const ivector &rv, const civector_slice &sl) 02035 #if(CXSC_INDEX_CHECK) 02036 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02037 #else 02038 throw() 02039 #endif 02040 { return _vvsplus<ivector,civector_slice,civector>(rv,sl); } 02041 INLINE civector operator +(const ivector_slice &sl, const civector &rv) 02042 #if(CXSC_INDEX_CHECK) 02043 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02044 #else 02045 throw() 02046 #endif 02047 { return _vvsplus<civector,ivector_slice,civector>(rv,sl); } 02048 INLINE civector operator +(const ivector_slice &sl1, const civector_slice &sl2) 02049 #if(CXSC_INDEX_CHECK) 02050 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02051 #else 02052 throw() 02053 #endif 02054 { return _vsvsplus<ivector_slice,civector_slice,civector>(sl1,sl2); } 02055 02056 INLINE civector operator +(const civector &rv1, const ivector &rv2) 02057 #if(CXSC_INDEX_CHECK) 02058 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02059 #else 02060 throw() 02061 #endif 02062 { return _vvplus<ivector,civector,civector>(rv2,rv1); } 02063 INLINE civector operator +(const civector &rv, const ivector_slice &sl) 02064 #if(CXSC_INDEX_CHECK) 02065 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02066 #else 02067 throw() 02068 #endif 02069 { return _vvsplus<civector,ivector_slice,civector>(rv,sl); } 02070 INLINE civector operator +(const civector_slice &sl, const ivector &rv) 02071 #if(CXSC_INDEX_CHECK) 02072 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02073 #else 02074 throw() 02075 #endif 02076 { return _vvsplus<ivector,civector_slice,civector>(rv,sl); } 02077 INLINE civector operator +(const civector_slice &sl1, const ivector_slice &sl2) 02078 #if(CXSC_INDEX_CHECK) 02079 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02080 #else 02081 throw() 02082 #endif 02083 { return _vsvsplus<ivector_slice,civector_slice,civector>(sl2,sl1); } 02084 02085 INLINE civector & operator +=(civector &rv1, const ivector &rv2) 02086 #if(CXSC_INDEX_CHECK) 02087 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02088 #else 02089 throw() 02090 #endif 02091 { return _vvplusassign(rv1,rv2); } 02092 INLINE civector &operator +=(civector &rv, const ivector_slice &sl) 02093 #if(CXSC_INDEX_CHECK) 02094 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02095 #else 02096 throw() 02097 #endif 02098 { return _vvsplusassign(rv,sl); } 02099 INLINE civector_slice &civector_slice::operator +=(const ivector &rv) 02100 #if(CXSC_INDEX_CHECK) 02101 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02102 #else 02103 throw() 02104 #endif 02105 { return _vsvplusassign(*this,rv); } 02106 INLINE civector_slice &civector_slice::operator +=(const ivector_slice &sl2) 02107 #if(CXSC_INDEX_CHECK) 02108 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02109 #else 02110 throw() 02111 #endif 02112 { return _vsvsplusassign(*this,sl2); } 02113 02114 INLINE civector operator -(const ivector &rv1, const civector &rv2) 02115 #if(CXSC_INDEX_CHECK) 02116 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02117 #else 02118 throw() 02119 #endif 02120 { return _vvminus<ivector,civector,civector>(rv1,rv2); } 02121 INLINE civector operator -(const ivector &rv, const civector_slice &sl) 02122 #if(CXSC_INDEX_CHECK) 02123 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02124 #else 02125 throw() 02126 #endif 02127 { return _vvsminus<ivector,civector_slice,civector>(rv,sl); } 02128 INLINE civector operator -(const ivector_slice &sl, const civector &rv) 02129 #if(CXSC_INDEX_CHECK) 02130 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02131 #else 02132 throw() 02133 #endif 02134 { return _vsvminus<ivector_slice,civector,civector>(sl,rv); } 02135 INLINE civector operator -(const ivector_slice &sl1, const civector_slice &sl2) 02136 #if(CXSC_INDEX_CHECK) 02137 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02138 #else 02139 throw() 02140 #endif 02141 { return _vsvsminus<ivector_slice,civector_slice,civector>(sl1,sl2); } 02142 02143 INLINE civector operator -(const civector &rv1, const ivector &rv2) 02144 #if(CXSC_INDEX_CHECK) 02145 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02146 #else 02147 throw() 02148 #endif 02149 { return _vvminus<civector,ivector,civector>(rv1,rv2); } 02150 INLINE civector operator -(const civector &rv, const ivector_slice &sl) 02151 #if(CXSC_INDEX_CHECK) 02152 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02153 #else 02154 throw() 02155 #endif 02156 { return _vvsminus<civector,ivector_slice,civector>(rv,sl); } 02157 INLINE civector operator -(const civector_slice &sl, const ivector &rv) 02158 #if(CXSC_INDEX_CHECK) 02159 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02160 #else 02161 throw() 02162 #endif 02163 { return _vsvminus<civector_slice,ivector,civector>(sl,rv); } 02164 INLINE civector operator -(const civector_slice &sl1, const ivector_slice &sl2) 02165 #if(CXSC_INDEX_CHECK) 02166 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02167 #else 02168 throw() 02169 #endif 02170 { return _vsvsminus<civector_slice,ivector_slice,civector>(sl1,sl2); } 02171 02172 INLINE civector & operator -=(civector &rv1, const ivector &rv2) 02173 #if(CXSC_INDEX_CHECK) 02174 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02175 #else 02176 throw() 02177 #endif 02178 { return _vvminusassign(rv1,rv2); } 02179 INLINE civector &operator -=(civector &rv, const ivector_slice &sl) 02180 #if(CXSC_INDEX_CHECK) 02181 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02182 #else 02183 throw() 02184 #endif 02185 { return _vvsminusassign(rv,sl); } 02186 INLINE civector_slice &civector_slice::operator -=(const ivector &rv) 02187 #if(CXSC_INDEX_CHECK) 02188 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02189 #else 02190 throw() 02191 #endif 02192 { return _vsvminusassign(*this,rv); } 02193 INLINE civector_slice &civector_slice::operator -=(const ivector_slice &sl2) 02194 #if(CXSC_INDEX_CHECK) 02195 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02196 #else 02197 throw() 02198 #endif 02199 { return _vsvsminusassign(*this,sl2); } 02200 02201 INLINE civector operator |(const ivector &rv1, const civector &rv2) 02202 #if(CXSC_INDEX_CHECK) 02203 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02204 #else 02205 throw() 02206 #endif 02207 { return _vvconv<ivector,civector,civector>(rv1,rv2); } 02208 INLINE civector operator |(const ivector &rv, const civector_slice &sl) 02209 #if(CXSC_INDEX_CHECK) 02210 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02211 #else 02212 throw() 02213 #endif 02214 { return _vvsconv<ivector,civector_slice,civector>(rv,sl); } 02215 INLINE civector operator |(const ivector_slice &sl, const civector &rv) 02216 #if(CXSC_INDEX_CHECK) 02217 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02218 #else 02219 throw() 02220 #endif 02221 { return _vvsconv<civector,ivector_slice,civector>(rv,sl); } 02222 INLINE civector operator |(const ivector_slice &sl1, const civector_slice &sl2) 02223 #if(CXSC_INDEX_CHECK) 02224 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02225 #else 02226 throw() 02227 #endif 02228 { return _vsvsconv<ivector_slice,civector_slice,civector>(sl1,sl2); } 02229 02230 INLINE civector operator |(const civector &rv1, const ivector &rv2) 02231 #if(CXSC_INDEX_CHECK) 02232 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02233 #else 02234 throw() 02235 #endif 02236 { return _vvconv<ivector,civector,civector>(rv2,rv1); } 02237 INLINE civector operator |(const civector &rv, const ivector_slice &sl) 02238 #if(CXSC_INDEX_CHECK) 02239 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02240 #else 02241 throw() 02242 #endif 02243 { return _vvsconv<civector,ivector_slice,civector>(rv,sl); } 02244 INLINE civector operator |(const civector_slice &sl, const ivector &rv) 02245 #if(CXSC_INDEX_CHECK) 02246 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02247 #else 02248 throw() 02249 #endif 02250 { return _vvsconv<ivector,civector_slice,civector>(rv,sl); } 02251 INLINE civector operator |(const civector_slice &sl1, const ivector_slice &sl2) 02252 #if(CXSC_INDEX_CHECK) 02253 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02254 #else 02255 throw() 02256 #endif 02257 { return _vsvsconv<ivector_slice,civector_slice,civector>(sl2,sl1); } 02258 02259 INLINE civector & operator |=(civector &rv1, const ivector &rv2) 02260 #if(CXSC_INDEX_CHECK) 02261 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02262 #else 02263 throw() 02264 #endif 02265 { return _vvconvassign(rv1,rv2); } 02266 INLINE civector &operator |=(civector &rv, const ivector_slice &sl) 02267 #if(CXSC_INDEX_CHECK) 02268 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02269 #else 02270 throw() 02271 #endif 02272 { return _vvsconvassign(rv,sl); } 02273 INLINE civector_slice &civector_slice::operator |=(const ivector &rv) 02274 #if(CXSC_INDEX_CHECK) 02275 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02276 #else 02277 throw() 02278 #endif 02279 { return _vsvconvassign(*this,rv); } 02280 INLINE civector_slice &civector_slice::operator |=(const ivector_slice &sl2) 02281 #if(CXSC_INDEX_CHECK) 02282 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02283 #else 02284 throw() 02285 #endif 02286 { return _vsvsconvassign(*this,sl2); } 02287 02288 INLINE civector operator &(const ivector &rv1, const civector &rv2) 02289 #if(CXSC_INDEX_CHECK) 02290 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02291 #else 02292 throw() 02293 #endif 02294 { return _vvsect<ivector,civector,civector>(rv1,rv2); } 02295 INLINE civector operator &(const ivector &rv, const civector_slice &sl) 02296 #if(CXSC_INDEX_CHECK) 02297 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02298 #else 02299 throw() 02300 #endif 02301 { return _vvssect<ivector,civector_slice,civector>(rv,sl); } 02302 INLINE civector operator &(const ivector_slice &sl, const civector &rv) 02303 #if(CXSC_INDEX_CHECK) 02304 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02305 #else 02306 throw() 02307 #endif 02308 { return _vvssect<civector,ivector_slice,civector>(rv,sl); } 02309 INLINE civector operator &(const ivector_slice &sl1, const civector_slice &sl2) 02310 #if(CXSC_INDEX_CHECK) 02311 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02312 #else 02313 throw() 02314 #endif 02315 { return _vsvssect<ivector_slice,civector_slice,civector>(sl1,sl2); } 02316 02317 INLINE civector operator &(const civector &rv1, const ivector &rv2) 02318 #if(CXSC_INDEX_CHECK) 02319 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02320 #else 02321 throw() 02322 #endif 02323 { return _vvsect<ivector,civector,civector>(rv2,rv1); } 02324 INLINE civector operator &(const civector &rv, const ivector_slice &sl) 02325 #if(CXSC_INDEX_CHECK) 02326 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02327 #else 02328 throw() 02329 #endif 02330 { return _vvssect<civector,ivector_slice,civector>(rv,sl); } 02331 INLINE civector operator &(const civector_slice &sl, const ivector &rv) 02332 #if(CXSC_INDEX_CHECK) 02333 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02334 #else 02335 throw() 02336 #endif 02337 { return _vvssect<ivector,civector_slice,civector>(rv,sl); } 02338 INLINE civector operator &(const civector_slice &sl1, const ivector_slice &sl2) 02339 #if(CXSC_INDEX_CHECK) 02340 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02341 #else 02342 throw() 02343 #endif 02344 { return _vsvssect<ivector_slice,civector_slice,civector>(sl2,sl1); } 02345 02346 INLINE civector & operator &=(civector &rv1, const ivector &rv2) 02347 #if(CXSC_INDEX_CHECK) 02348 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02349 #else 02350 throw() 02351 #endif 02352 { return _vvsectassign(rv1,rv2); } 02353 INLINE civector &operator &=(civector &rv, const ivector_slice &sl) 02354 #if(CXSC_INDEX_CHECK) 02355 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02356 #else 02357 throw() 02358 #endif 02359 { return _vvssectassign(rv,sl); } 02360 INLINE civector_slice &civector_slice::operator &=(const ivector &rv) 02361 #if(CXSC_INDEX_CHECK) 02362 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02363 #else 02364 throw() 02365 #endif 02366 { return _vsvsectassign(*this,rv); } 02367 INLINE civector_slice &civector_slice::operator &=(const ivector_slice &sl2) 02368 #if(CXSC_INDEX_CHECK) 02369 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02370 #else 02371 throw() 02372 #endif 02373 { return _vsvssectassign(*this,sl2); } 02374 02375 //------------- real x complex ------------------------ 02376 INLINE civector operator |(const rvector &rv1, const cvector &rv2) 02377 #if(CXSC_INDEX_CHECK) 02378 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02379 #else 02380 throw() 02381 #endif 02382 { return _vvconv<rvector,cvector,civector>(rv1,rv2); } 02383 INLINE civector operator |(const cvector &rv1, const rvector &rv2) 02384 #if(CXSC_INDEX_CHECK) 02385 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02386 #else 02387 throw() 02388 #endif 02389 { return _vvconv<rvector,cvector,civector>(rv2,rv1); } 02390 INLINE civector operator |(const cvector &rv, const rvector_slice &sl) 02391 #if(CXSC_INDEX_CHECK) 02392 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02393 #else 02394 throw() 02395 #endif 02396 { return _vvsconv<cvector,rvector_slice,civector>(rv,sl); } 02397 INLINE civector operator |(const rvector_slice &sl,const cvector &rv) 02398 #if(CXSC_INDEX_CHECK) 02399 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02400 #else 02401 throw() 02402 #endif 02403 { return _vvsconv<cvector,rvector_slice,civector>(rv,sl); } 02404 INLINE civector operator |(const cvector_slice &sl, const rvector &rv) 02405 #if(CXSC_INDEX_CHECK) 02406 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02407 #else 02408 throw() 02409 #endif 02410 { return _vvsconv<rvector,cvector_slice,civector>(rv,sl); } 02411 INLINE civector operator |(const rvector &rv,const cvector_slice &sl) 02412 #if(CXSC_INDEX_CHECK) 02413 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02414 #else 02415 throw() 02416 #endif 02417 { return _vvsconv<rvector,cvector_slice,civector>(rv,sl); } 02418 INLINE civector operator |(const cvector_slice &sl1, const rvector_slice &sl2) 02419 #if(CXSC_INDEX_CHECK) 02420 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02421 #else 02422 throw() 02423 #endif 02424 { return _vsvsconv<rvector_slice,cvector_slice,civector>(sl2,sl1); } 02425 INLINE civector operator |(const rvector_slice &sl1, const cvector_slice &sl2) 02426 #if(CXSC_INDEX_CHECK) 02427 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02428 #else 02429 throw() 02430 #endif 02431 { return _vsvsconv<rvector_slice,cvector_slice,civector>(sl1,sl2); } 02432 02433 //------------- complex x complex ------------------------ 02434 INLINE civector operator |(const cvector &rv1, const cvector &rv2) 02435 #if(CXSC_INDEX_CHECK) 02436 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02437 #else 02438 throw() 02439 #endif 02440 { return _vvconv<cvector,cvector,civector>(rv2,rv1); } 02441 INLINE civector operator |(const cvector &rv, const cvector_slice &sl) 02442 #if(CXSC_INDEX_CHECK) 02443 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02444 #else 02445 throw() 02446 #endif 02447 { return _vvsconv<cvector,cvector_slice,civector>(rv,sl); } 02448 INLINE civector operator |(const cvector_slice &sl,const cvector &rv) 02449 #if(CXSC_INDEX_CHECK) 02450 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02451 #else 02452 throw() 02453 #endif 02454 { return _vvsconv<cvector,cvector_slice,civector>(rv,sl); } 02455 INLINE civector operator |(const cvector_slice &sl1, const cvector_slice &sl2) 02456 #if(CXSC_INDEX_CHECK) 02457 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02458 #else 02459 throw() 02460 #endif 02461 { return _vsvsconv<cvector_slice,cvector_slice,civector>(sl1,sl2); } 02462 02463 //-------------------------------- interval / complex -------------------------------- 02464 02465 INLINE civector operator +(const cvector &rv1, const ivector &rv2) 02466 #if(CXSC_INDEX_CHECK) 02467 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02468 #else 02469 throw() 02470 #endif 02471 { return _vvplus<cvector,ivector,civector>(rv1,rv2); } 02472 INLINE civector operator +(const cvector &rv, const ivector_slice &sl) 02473 #if(CXSC_INDEX_CHECK) 02474 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02475 #else 02476 throw() 02477 #endif 02478 { return _vvsplus<cvector,ivector_slice,civector>(rv,sl); } 02479 INLINE civector operator +(const cvector_slice &sl, const ivector &rv) 02480 #if(CXSC_INDEX_CHECK) 02481 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02482 #else 02483 throw() 02484 #endif 02485 { return _vvsplus<ivector,cvector_slice,civector>(rv,sl); } 02486 INLINE civector operator +(const cvector_slice &sl1, const ivector_slice &sl2) 02487 #if(CXSC_INDEX_CHECK) 02488 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02489 #else 02490 throw() 02491 #endif 02492 { return _vsvsplus<cvector_slice,ivector_slice,civector>(sl1,sl2); } 02493 02494 INLINE civector operator +(const ivector &rv1, const cvector &rv2) 02495 #if(CXSC_INDEX_CHECK) 02496 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02497 #else 02498 throw() 02499 #endif 02500 { return _vvplus<cvector,ivector,civector>(rv2,rv1); } 02501 INLINE civector operator +(const ivector &rv, const cvector_slice &sl) 02502 #if(CXSC_INDEX_CHECK) 02503 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02504 #else 02505 throw() 02506 #endif 02507 { return _vvsplus<ivector,cvector_slice,civector>(rv,sl); } 02508 INLINE civector operator +(const ivector_slice &sl, const cvector &rv) 02509 #if(CXSC_INDEX_CHECK) 02510 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02511 #else 02512 throw() 02513 #endif 02514 { return _vvsplus<cvector,ivector_slice,civector>(rv,sl); } 02515 INLINE civector operator +(const ivector_slice &sl1, const cvector_slice &sl2) 02516 #if(CXSC_INDEX_CHECK) 02517 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02518 #else 02519 throw() 02520 #endif 02521 { return _vsvsplus<cvector_slice,ivector_slice,civector>(sl2,sl1); } 02522 02523 INLINE civector operator -(const cvector &rv1, const ivector &rv2) 02524 #if(CXSC_INDEX_CHECK) 02525 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02526 #else 02527 throw() 02528 #endif 02529 { return _vvminus<cvector,ivector,civector>(rv1,rv2); } 02530 INLINE civector operator -(const cvector &rv, const ivector_slice &sl) 02531 #if(CXSC_INDEX_CHECK) 02532 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02533 #else 02534 throw() 02535 #endif 02536 { return _vvsminus<cvector,ivector_slice,civector>(rv,sl); } 02537 INLINE civector operator -(const cvector_slice &sl, const ivector &rv) 02538 #if(CXSC_INDEX_CHECK) 02539 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02540 #else 02541 throw() 02542 #endif 02543 { return _vsvminus<cvector_slice,ivector,civector>(sl,rv); } 02544 INLINE civector operator -(const cvector_slice &sl1, const ivector_slice &sl2) 02545 #if(CXSC_INDEX_CHECK) 02546 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02547 #else 02548 throw() 02549 #endif 02550 { return _vsvsminus<cvector_slice,ivector_slice,civector>(sl1,sl2); } 02551 02552 INLINE civector operator -(const ivector &rv1, const cvector &rv2) 02553 #if(CXSC_INDEX_CHECK) 02554 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02555 #else 02556 throw() 02557 #endif 02558 { return _vvminus<ivector,cvector,civector>(rv1,rv2); } 02559 INLINE civector operator -(const ivector &rv, const cvector_slice &sl) 02560 #if(CXSC_INDEX_CHECK) 02561 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02562 #else 02563 throw() 02564 #endif 02565 { return _vvsminus<ivector,cvector_slice,civector>(rv,sl); } 02566 INLINE civector operator -(const ivector_slice &sl, const cvector &rv) 02567 #if(CXSC_INDEX_CHECK) 02568 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02569 #else 02570 throw() 02571 #endif 02572 { return _vsvminus<ivector_slice,cvector,civector>(sl,rv); } 02573 INLINE civector operator -(const ivector_slice &sl1, const cvector_slice &sl2) 02574 #if(CXSC_INDEX_CHECK) 02575 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02576 #else 02577 throw() 02578 #endif 02579 { return _vsvsminus<ivector_slice,cvector_slice,civector>(sl1,sl2); } 02580 02581 INLINE civector operator |(const cvector &rv1, const ivector &rv2) 02582 #if(CXSC_INDEX_CHECK) 02583 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02584 #else 02585 throw() 02586 #endif 02587 { return _vvconv<cvector,ivector,civector>(rv1,rv2); } 02588 INLINE civector operator |(const cvector &rv, const ivector_slice &sl) 02589 #if(CXSC_INDEX_CHECK) 02590 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02591 #else 02592 throw() 02593 #endif 02594 { return _vvsconv<cvector,ivector_slice,civector>(rv,sl); } 02595 INLINE civector operator |(const cvector_slice &sl, const ivector &rv) 02596 #if(CXSC_INDEX_CHECK) 02597 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02598 #else 02599 throw() 02600 #endif 02601 { return _vvsconv<ivector,cvector_slice,civector>(rv,sl); } 02602 INLINE civector operator |(const cvector_slice &sl1, const ivector_slice &sl2) 02603 #if(CXSC_INDEX_CHECK) 02604 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02605 #else 02606 throw() 02607 #endif 02608 { return _vsvsconv<cvector_slice,ivector_slice,civector>(sl1,sl2); } 02609 02610 INLINE civector operator |(const ivector &rv1, const cvector &rv2) 02611 #if(CXSC_INDEX_CHECK) 02612 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02613 #else 02614 throw() 02615 #endif 02616 { return _vvconv<cvector,ivector,civector>(rv2,rv1); } 02617 INLINE civector operator |(const ivector &rv, const cvector_slice &sl) 02618 #if(CXSC_INDEX_CHECK) 02619 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02620 #else 02621 throw() 02622 #endif 02623 { return _vvsconv<ivector,cvector_slice,civector>(rv,sl); } 02624 INLINE civector operator |(const ivector_slice &sl, const cvector &rv) 02625 #if(CXSC_INDEX_CHECK) 02626 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02627 #else 02628 throw() 02629 #endif 02630 { return _vvsconv<cvector,ivector_slice,civector>(rv,sl); } 02631 INLINE civector operator |(const ivector_slice &sl1, const cvector_slice &sl2) 02632 #if(CXSC_INDEX_CHECK) 02633 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02634 #else 02635 throw() 02636 #endif 02637 { return _vsvsconv<cvector_slice,ivector_slice,civector>(sl2,sl1); } 02638 02639 INLINE civector operator &(const cvector &rv1, const ivector &rv2) 02640 #if(CXSC_INDEX_CHECK) 02641 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02642 #else 02643 throw() 02644 #endif 02645 { return _vvsect<cvector,ivector,civector>(rv1,rv2); } 02646 INLINE civector operator &(const cvector &rv, const ivector_slice &sl) 02647 #if(CXSC_INDEX_CHECK) 02648 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02649 #else 02650 throw() 02651 #endif 02652 { return _vvssect<cvector,ivector_slice,civector>(rv,sl); } 02653 INLINE civector operator &(const cvector_slice &sl, const ivector &rv) 02654 #if(CXSC_INDEX_CHECK) 02655 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02656 #else 02657 throw() 02658 #endif 02659 { return _vvssect<ivector,cvector_slice,civector>(rv,sl); } 02660 INLINE civector operator &(const cvector_slice &sl1, const ivector_slice &sl2) 02661 #if(CXSC_INDEX_CHECK) 02662 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02663 #else 02664 throw() 02665 #endif 02666 { return _vsvssect<cvector_slice,ivector_slice,civector>(sl1,sl2); } 02667 02668 INLINE civector operator &(const ivector &rv1, const cvector &rv2) 02669 #if(CXSC_INDEX_CHECK) 02670 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02671 #else 02672 throw() 02673 #endif 02674 { return _vvsect<cvector,ivector,civector>(rv2,rv1); } 02675 INLINE civector operator &(const ivector &rv, const cvector_slice &sl) 02676 #if(CXSC_INDEX_CHECK) 02677 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02678 #else 02679 throw() 02680 #endif 02681 { return _vvssect<ivector,cvector_slice,civector>(rv,sl); } 02682 INLINE civector operator &(const ivector_slice &sl, const cvector &rv) 02683 #if(CXSC_INDEX_CHECK) 02684 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02685 #else 02686 throw() 02687 #endif 02688 { return _vvssect<cvector,ivector_slice,civector>(rv,sl); } 02689 INLINE civector operator &(const ivector_slice &sl1, const cvector_slice &sl2) 02690 #if(CXSC_INDEX_CHECK) 02691 throw(ERROR__OP_WITH_WRONG_DIM<civector>) 02692 #else 02693 throw() 02694 #endif 02695 { return _vsvssect<cvector_slice,ivector_slice,civector>(sl2,sl1); } 02696 02697 02699 INLINE civector civector::operator()(const intvector& p) { 02700 civector x(*this); 02701 for(int i=0 ; i<VecLen(x) ; i++) 02702 x[i+Lb(x)] = (*this)[p[i+Lb(p)]+Lb(*this)]; 02703 return x; 02704 02705 } 02706 02707 INLINE bool in(const civector& v1, const civector& v2) { 02708 int n = VecLen(v1); 02709 bool ret = true; 02710 for(int i=0 ; i<n && ret ; i++) { 02711 ret = in(v1[Lb(v1)+i], v2[Lb(v2)+i]); 02712 } 02713 return ret; 02714 } 02715 02716 02717 } // namespace cxsc 02718 02719 #endif 02720