00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #define _CXSC_CPP
00027
00028 #include "cvector.hpp"
00029 #include "vector.inl"
00030 #include "cvector.inl"
00031
00032 #include "ivector.hpp"
00033
00034 #include "idotk.inl"
00035 #include "cdotk.inl"
00036
00037 namespace cxsc {
00038
00039 void accumulate(cdotprecision &dp, const cvector & rv1, const cvector &rv2)
00040 #if(CXSC_INDEX_CHECK)
00041 throw(OP_WITH_WRONG_DIM)
00042 #else
00043 throw()
00044 #endif
00045 {
00046 #if(CXSC_INDEX_CHECK)
00047 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector &, const cvector &)"));
00048 #endif
00049 addDot(dp,rv1,rv2);
00050 }
00051
00052 void accumulate_approx(cdotprecision &dp, const cvector & rv1, const cvector &rv2)
00053 {
00054 addDot_op(dp,rv1,rv2);
00055 }
00056
00057
00058 void accumulate(cdotprecision &dp, const cvector_slice & sl, const cvector &rv)
00059 #if(CXSC_INDEX_CHECK)
00060 throw(OP_WITH_WRONG_DIM)
00061 #else
00062 throw()
00063 #endif
00064 {
00065 #if(CXSC_INDEX_CHECK)
00066 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector_slice &, const cvector &)"));
00067 #endif
00068 addDot(dp,sl,rv);
00069 }
00070
00071 void accumulate_approx(cdotprecision &dp, const cvector_slice & sl, const cvector &rv)
00072 {
00073 addDot_op(dp,sl,rv);
00074 }
00075
00076
00077 void accumulate(cdotprecision &dp, const cvector &rv, const cvector_slice &sl)
00078 #if(CXSC_INDEX_CHECK)
00079 throw(OP_WITH_WRONG_DIM)
00080 #else
00081 throw()
00082 #endif
00083 {
00084 #if(CXSC_INDEX_CHECK)
00085 if(VecLen(rv)!=VecLen(sl)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector &, const cvector_slice &)"));
00086 #endif
00087 addDot(dp,rv,sl);
00088 }
00089
00090 void accumulate_approx(cdotprecision &dp, const cvector &rv, const cvector_slice &sl)
00091 {
00092 addDot_op(dp,rv,sl);
00093 }
00094
00095
00096 void accumulate(cdotprecision &dp, const cvector_slice & sl1, const cvector_slice &sl2)
00097 #if(CXSC_INDEX_CHECK)
00098 throw(OP_WITH_WRONG_DIM)
00099 #else
00100 throw()
00101 #endif
00102 {
00103 #if(CXSC_INDEX_CHECK)
00104 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector_slice &, const cvector_slice &)"));
00105 #endif
00106 addDot(dp,sl1,sl2);
00107 }
00108
00109 void accumulate_approx(cdotprecision &dp, const cvector_slice & sl1, const cvector_slice &sl2)
00110 {
00111 addDot_op(dp,sl1,sl2);
00112 }
00113
00114 void accumulate(cidotprecision &dp, const cvector & rv1, const cvector &rv2)
00115 #if(CXSC_INDEX_CHECK)
00116 throw(OP_WITH_WRONG_DIM)
00117 #else
00118 throw()
00119 #endif
00120 {
00121 #if(CXSC_INDEX_CHECK)
00122 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector &, const cvector &)"));
00123 #endif
00124 cdotprecision tmp(0.0);
00125 tmp.set_k(dp.get_k());
00126 addDot(tmp,rv1,rv2);
00127 dp += tmp;
00128 }
00129
00130 void accumulate(cidotprecision &dp, const cvector_slice & sl, const cvector &rv)
00131 #if(CXSC_INDEX_CHECK)
00132 throw(OP_WITH_WRONG_DIM)
00133 #else
00134 throw()
00135 #endif
00136 {
00137 #if(CXSC_INDEX_CHECK)
00138 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector_slice &, const cvector &)"));
00139 #endif
00140 cdotprecision tmp(0.0);
00141 tmp.set_k(dp.get_k());
00142 addDot(tmp,sl,rv);
00143 dp += tmp;
00144 }
00145
00146 void accumulate(cidotprecision &dp, const cvector &rv, const cvector_slice &sl)
00147 #if(CXSC_INDEX_CHECK)
00148 throw(OP_WITH_WRONG_DIM)
00149 #else
00150 throw()
00151 #endif
00152 {
00153 #if(CXSC_INDEX_CHECK)
00154 if(VecLen(rv)!=VecLen(sl)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector &, const cvector_slice &)"));
00155 #endif
00156 cdotprecision tmp(0.0);
00157 tmp.set_k(dp.get_k());
00158 addDot(tmp,rv,sl);
00159 dp += tmp;
00160 }
00161
00162 void accumulate(cidotprecision &dp, const cvector_slice & sl1, const cvector_slice &sl2)
00163 #if(CXSC_INDEX_CHECK)
00164 throw(OP_WITH_WRONG_DIM)
00165 #else
00166 throw()
00167 #endif
00168 {
00169 #if(CXSC_INDEX_CHECK)
00170 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector_slice &, const cvector_slice &)"));
00171 #endif
00172 cdotprecision tmp(0.0);
00173 tmp.set_k(dp.get_k());
00174 addDot(tmp,sl1,sl2);
00175 dp += tmp;
00176 }
00177
00178 void accumulate(cdotprecision &dp, const cvector & rv1, const rvector &rv2)
00179 #if(CXSC_INDEX_CHECK)
00180 throw(OP_WITH_WRONG_DIM)
00181 #else
00182 throw()
00183 #endif
00184 {
00185 #if(CXSC_INDEX_CHECK)
00186 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector &, const rvector &)"));
00187 #endif
00188 addDot(Re(dp), Re(rv1), rv2);
00189 addDot(Im(dp), Im(rv1), rv2);
00190 }
00191
00192 void accumulate_approx(cdotprecision &dp, const cvector & rv1, const rvector &rv2)
00193 {
00194 addDot_op(Re(dp), Re(rv1), rv2);
00195 addDot_op(Im(dp), Im(rv1), rv2);
00196 }
00197
00198 void accumulate(cdotprecision &dp, const rvector & rv1, const cvector &rv2)
00199 #if(CXSC_INDEX_CHECK)
00200 throw(OP_WITH_WRONG_DIM)
00201 #else
00202 throw()
00203 #endif
00204 {
00205 #if(CXSC_INDEX_CHECK)
00206 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const rvector &, const cvector &)"));
00207 #endif
00208 addDot(Re(dp), rv1, Re(rv2));
00209 addDot(Im(dp), rv1, Im(rv2));
00210 }
00211
00212 void accumulate_approx(cdotprecision &dp, const rvector & rv1, const cvector &rv2)
00213 {
00214 addDot_op(Re(dp), rv1, Re(rv2));
00215 addDot_op(Im(dp), rv1, Im(rv2));
00216 }
00217
00218 void accumulate(cdotprecision &dp, const rvector_slice & sl, const cvector &rv)
00219 #if(CXSC_INDEX_CHECK)
00220 throw(OP_WITH_WRONG_DIM)
00221 #else
00222 throw()
00223 #endif
00224 {
00225 #if(CXSC_INDEX_CHECK)
00226 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const rvector_slice &, const cvector &)"));
00227 #endif
00228 addDot(Re(dp), sl, Re(rv));
00229 addDot(Im(dp), sl, Im(rv));
00230 }
00231
00232 void accumulate_approx(cdotprecision &dp, const rvector_slice & sl, const cvector &rv)
00233 {
00234 addDot_op(Re(dp), sl, Re(rv));
00235 addDot_op(Im(dp), sl, Im(rv));
00236 }
00237
00238 void accumulate(cdotprecision &dp,const cvector_slice &sl,const rvector &rv)
00239 #if(CXSC_INDEX_CHECK)
00240 throw(OP_WITH_WRONG_DIM)
00241 #else
00242 throw()
00243 #endif
00244 {
00245 #if(CXSC_INDEX_CHECK)
00246 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector_slice &, const rvector &)"));
00247 #endif
00248 addDot(Re(dp), Re(sl), rv);
00249 addDot(Im(dp), Im(sl), rv);
00250 }
00251
00252 void accumulate_approx(cdotprecision &dp,const cvector_slice &sl,const rvector &rv)
00253 {
00254 addDot_op(Re(dp), Re(sl), rv);
00255 addDot_op(Im(dp), Im(sl), rv);
00256 }
00257
00258 void accumulate(cdotprecision &dp, const rvector &rv, const cvector_slice &sl)
00259 #if(CXSC_INDEX_CHECK)
00260 throw(OP_WITH_WRONG_DIM)
00261 #else
00262 throw()
00263 #endif
00264 {
00265 #if(CXSC_INDEX_CHECK)
00266 if(VecLen(rv)!=VecLen(sl)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const rvector &, const cvector_slice &)"));
00267 #endif
00268 addDot(Re(dp), rv, Re(sl));
00269 addDot(Im(dp), rv, Im(sl));
00270 }
00271
00272 void accumulate_approx(cdotprecision &dp, const rvector &rv, const cvector_slice &sl)
00273 {
00274 addDot_op(Re(dp), rv, Re(sl));
00275 addDot_op(Im(dp), rv, Im(sl));
00276 }
00277
00278 void accumulate(cdotprecision &dp,const cvector &rv,const rvector_slice &sl)
00279 #if(CXSC_INDEX_CHECK)
00280 throw(OP_WITH_WRONG_DIM)
00281 #else
00282 throw()
00283 #endif
00284 {
00285 #if(CXSC_INDEX_CHECK)
00286 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector &, const rvector_slice &)"));
00287 #endif
00288 addDot(Re(dp), Re(rv), sl);
00289 addDot(Im(dp), Im(rv), sl);
00290 }
00291
00292 void accumulate_approx(cdotprecision &dp,const cvector &rv,const rvector_slice &sl)
00293 {
00294 addDot_op(Re(dp), Re(rv), sl);
00295 addDot_op(Im(dp), Im(rv), sl);
00296 }
00297
00298 void accumulate(cdotprecision &dp, const cvector_slice & sl1, const rvector_slice &sl2)
00299 #if(CXSC_INDEX_CHECK)
00300 throw(OP_WITH_WRONG_DIM)
00301 #else
00302 throw()
00303 #endif
00304 {
00305 #if(CXSC_INDEX_CHECK)
00306 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const cvector_slice &, const rvector_slice &)"));
00307 #endif
00308 addDot(Re(dp), Re(sl1), sl2);
00309 addDot(Im(dp), Im(sl1), sl2);
00310 }
00311
00312 void accumulate_approx(cdotprecision &dp, const cvector_slice & sl1, const rvector_slice &sl2)
00313 {
00314 addDot_op(Re(dp), Re(sl1), sl2);
00315 addDot_op(Im(dp), Im(sl1), sl2);
00316 }
00317
00318 void accumulate(cdotprecision &dp, const rvector_slice & sl1, const cvector_slice &sl2)
00319 #if(CXSC_INDEX_CHECK)
00320 throw(OP_WITH_WRONG_DIM)
00321 #else
00322 throw()
00323 #endif
00324 {
00325 #if(CXSC_INDEX_CHECK)
00326 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cdotprecision&, const rvector_slice &, const cvector_slice &)"));
00327 #endif
00328 addDot(Re(dp), sl1, Re(sl2));
00329 addDot(Im(dp), sl1, Im(sl2));
00330 }
00331
00332 void accumulate_approx(cdotprecision &dp, const rvector_slice & sl1, const cvector_slice &sl2)
00333 {
00334 addDot_op(Re(dp), sl1, Re(sl2));
00335 addDot_op(Im(dp), sl1, Im(sl2));
00336 }
00337
00338 void accumulate(cidotprecision &dp, const cvector & rv1, const rvector &rv2)
00339 #if(CXSC_INDEX_CHECK)
00340 throw(OP_WITH_WRONG_DIM)
00341 #else
00342 throw()
00343 #endif
00344 {
00345 #if(CXSC_INDEX_CHECK)
00346 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector &, const rvector &)"));
00347 #endif
00348 cdotprecision tmp(0.0);
00349 tmp.set_k(dp.get_k());
00350 addDot(Re(tmp),Re(rv1),rv2);
00351 addDot(Im(tmp),Im(rv1),rv2);
00352 dp += tmp;
00353 }
00354
00355 void accumulate(cidotprecision &dp, const rvector & rv1, const cvector &rv2)
00356 #if(CXSC_INDEX_CHECK)
00357 throw(OP_WITH_WRONG_DIM)
00358 #else
00359 throw()
00360 #endif
00361 {
00362 #if(CXSC_INDEX_CHECK)
00363 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const rvector &, const cvector &)"));
00364 #endif
00365 cdotprecision tmp(0.0);
00366 tmp.set_k(dp.get_k());
00367 addDot(Re(tmp),rv1,Re(rv2));
00368 addDot(Im(tmp),rv1,Im(rv2));
00369 dp += tmp;
00370 }
00371
00372 void accumulate(cidotprecision &dp, const rvector_slice & sl, const cvector &rv)
00373 #if(CXSC_INDEX_CHECK)
00374 throw(OP_WITH_WRONG_DIM)
00375 #else
00376 throw()
00377 #endif
00378 {
00379 #if(CXSC_INDEX_CHECK)
00380 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const rvector_slice &, const cvector &)"));
00381 #endif
00382 cdotprecision tmp(0.0);
00383 tmp.set_k(dp.get_k());
00384 addDot(Re(tmp),sl,Re(rv));
00385 addDot(Im(tmp),sl,Im(rv));
00386 dp += tmp;
00387 }
00388
00389 void accumulate(cidotprecision &dp,const cvector_slice &sl,const rvector &rv)
00390 #if(CXSC_INDEX_CHECK)
00391 throw(OP_WITH_WRONG_DIM)
00392 #else
00393 throw()
00394 #endif
00395 {
00396 #if(CXSC_INDEX_CHECK)
00397 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector_slice &, const rvector &)"));
00398 #endif
00399 cdotprecision tmp(0.0);
00400 tmp.set_k(dp.get_k());
00401 addDot(Re(tmp),Re(sl),rv);
00402 addDot(Im(tmp),Im(sl),rv);
00403 dp += tmp;
00404 }
00405
00406 void accumulate(cidotprecision &dp, const rvector &rv, const cvector_slice &sl)
00407 #if(CXSC_INDEX_CHECK)
00408 throw(OP_WITH_WRONG_DIM)
00409 #else
00410 throw()
00411 #endif
00412 {
00413 #if(CXSC_INDEX_CHECK)
00414 if(VecLen(rv)!=VecLen(sl)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const rvector &, const cvector_slice &)"));
00415 #endif
00416 cdotprecision tmp(0.0);
00417 tmp.set_k(dp.get_k());
00418 addDot(Re(tmp),rv,Re(sl));
00419 addDot(Im(tmp),rv,Im(sl));
00420 dp += tmp;
00421 }
00422
00423 void accumulate(cidotprecision &dp,const cvector &rv,const rvector_slice &sl)
00424 #if(CXSC_INDEX_CHECK)
00425 throw(OP_WITH_WRONG_DIM)
00426 #else
00427 throw()
00428 #endif
00429 {
00430 #if(CXSC_INDEX_CHECK)
00431 if(VecLen(rv)!=VecLen(sl)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector &, const rvector_slice &)"));
00432 #endif
00433 cdotprecision tmp(0.0);
00434 tmp.set_k(dp.get_k());
00435 addDot(Re(tmp),Re(rv),sl);
00436 addDot(Im(tmp),Im(rv),sl);
00437 dp += tmp;
00438 }
00439
00440 void accumulate(cidotprecision &dp, const cvector_slice & sl1, const rvector_slice &sl2)
00441 #if(CXSC_INDEX_CHECK)
00442 throw(OP_WITH_WRONG_DIM)
00443 #else
00444 throw()
00445 #endif
00446 {
00447 #if(CXSC_INDEX_CHECK)
00448 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector_slice &, const rvector_slice &)"));
00449 #endif
00450 cdotprecision tmp(0.0);
00451 tmp.set_k(dp.get_k());
00452 addDot(Re(tmp),Re(sl1),sl2);
00453 addDot(Im(tmp),Im(sl1),sl2);
00454 dp += tmp;
00455 }
00456
00457 void accumulate(cidotprecision &dp, const rvector_slice & sl1, const cvector_slice &sl2)
00458 #if(CXSC_INDEX_CHECK)
00459 throw(OP_WITH_WRONG_DIM)
00460 #else
00461 throw()
00462 #endif
00463 {
00464 #if(CXSC_INDEX_CHECK)
00465 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const rvector_slice &, const cvector_slice &)"));
00466 #endif
00467 cdotprecision tmp(0.0);
00468 tmp.set_k(dp.get_k());
00469 addDot(Re(tmp),sl1,Re(sl2));
00470 addDot(Im(tmp),sl1,Im(sl2));
00471 dp += tmp;
00472 }
00473
00475 void accumulate(cidotprecision &dp, const cvector_slice &sl, const ivector &rv)
00476 #if(CXSC_INDEX_CHECK)
00477 throw(OP_WITH_WRONG_DIM)
00478 #else
00479 throw()
00480 #endif
00481 {
00482 #if(CXSC_INDEX_CHECK)
00483 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector_slice &, const ivector &)"));
00484 #endif
00485 idotprecision tmp_re(0.0);
00486 idotprecision tmp_im(0.0);
00487 tmp_re.set_k(dp.get_k());
00488 tmp_im.set_k(dp.get_k());
00489 addDot(tmp_re,Re(sl),rv);
00490 addDot(tmp_im,Im(sl),rv);
00491 dp += cidotprecision(tmp_re,tmp_im);
00492 }
00493
00495 void accumulate(cidotprecision &dp, const ivector & rv, const cvector_slice &sl)
00496 #if(CXSC_INDEX_CHECK)
00497 throw(OP_WITH_WRONG_DIM)
00498 #else
00499 throw()
00500 #endif
00501 {
00502 #if(CXSC_INDEX_CHECK)
00503 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const ivector &, const cvector_slice &)"));
00504 #endif
00505 idotprecision tmp_re(0.0);
00506 idotprecision tmp_im(0.0);
00507 tmp_re.set_k(dp.get_k());
00508 tmp_im.set_k(dp.get_k());
00509 addDot(tmp_re,rv,Re(sl));
00510 addDot(tmp_im,rv,Im(sl));
00511 dp += cidotprecision(tmp_re,tmp_im);
00512 }
00513
00515 void accumulate(cidotprecision &dp, const cvector &rv1, const ivector &rv2)
00516 #if(CXSC_INDEX_CHECK)
00517 throw(OP_WITH_WRONG_DIM)
00518 #else
00519 throw()
00520 #endif
00521 {
00522 #if(CXSC_INDEX_CHECK)
00523 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector &, const ivector &)"));
00524 #endif
00525 idotprecision tmp_re(0.0);
00526 idotprecision tmp_im(0.0);
00527 tmp_re.set_k(dp.get_k());
00528 tmp_im.set_k(dp.get_k());
00529 addDot(tmp_re,Re(rv1),rv2);
00530 addDot(tmp_im,Im(rv1),rv2);
00531 dp += cidotprecision(tmp_re,tmp_im);
00532 }
00533
00535 void accumulate(cidotprecision &dp, const ivector &rv1, const cvector &rv2)
00536 #if(CXSC_INDEX_CHECK)
00537 throw(OP_WITH_WRONG_DIM)
00538 #else
00539 throw()
00540 #endif
00541 {
00542 #if(CXSC_INDEX_CHECK)
00543 if(VecLen(rv1)!=VecLen(rv2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const ivector &, const cvector &)"));
00544 #endif
00545 idotprecision tmp_re(0.0);
00546 idotprecision tmp_im(0.0);
00547 tmp_re.set_k(dp.get_k());
00548 tmp_im.set_k(dp.get_k());
00549 addDot(tmp_re,rv1,Re(rv2));
00550 addDot(tmp_im,rv1,Im(rv2));
00551 dp += cidotprecision(tmp_re,tmp_im);
00552 }
00553
00555 void accumulate(cidotprecision &dp, const ivector_slice &sl, const cvector &rv)
00556 #if(CXSC_INDEX_CHECK)
00557 throw(OP_WITH_WRONG_DIM)
00558 #else
00559 throw()
00560 #endif
00561 {
00562 #if(CXSC_INDEX_CHECK)
00563 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const ivector_slice &, const cvector &)"));
00564 #endif
00565 idotprecision tmp_re(0.0);
00566 idotprecision tmp_im(0.0);
00567 tmp_re.set_k(dp.get_k());
00568 tmp_im.set_k(dp.get_k());
00569 addDot(tmp_re,sl,Re(rv));
00570 addDot(tmp_im,sl,Im(rv));
00571 dp += cidotprecision(tmp_re,tmp_im);
00572 }
00573
00575 void accumulate(cidotprecision &dp, const cvector &rv, const ivector_slice &sl)
00576 #if(CXSC_INDEX_CHECK)
00577 throw(OP_WITH_WRONG_DIM)
00578 #else
00579 throw()
00580 #endif
00581 {
00582 #if(CXSC_INDEX_CHECK)
00583 if(VecLen(sl)!=VecLen(rv)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector &, const ivector_slice &)"));
00584 #endif
00585 idotprecision tmp_re(0.0);
00586 idotprecision tmp_im(0.0);
00587 tmp_re.set_k(dp.get_k());
00588 tmp_im.set_k(dp.get_k());
00589 addDot(tmp_re,Re(rv),sl);
00590 addDot(tmp_im,Im(rv),sl);
00591 dp += cidotprecision(tmp_re,tmp_im);
00592 }
00593
00595 void accumulate(cidotprecision &dp, const cvector_slice &sl1, const ivector_slice &sl2)
00596 #if(CXSC_INDEX_CHECK)
00597 throw(OP_WITH_WRONG_DIM)
00598 #else
00599 throw()
00600 #endif
00601 {
00602 #if(CXSC_INDEX_CHECK)
00603 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const cvector_slice &, const ivector_slice &)"));
00604 #endif
00605 idotprecision tmp_re(0.0);
00606 idotprecision tmp_im(0.0);
00607 tmp_re.set_k(dp.get_k());
00608 tmp_im.set_k(dp.get_k());
00609 addDot(tmp_re,Re(sl1),sl2);
00610 addDot(tmp_im,Im(sl1),sl2);
00611 dp += cidotprecision(tmp_re,tmp_im);
00612 }
00613
00615 void accumulate(cidotprecision &dp, const ivector_slice &sl1, const cvector_slice &sl2)
00616 #if(CXSC_INDEX_CHECK)
00617 throw(OP_WITH_WRONG_DIM)
00618 #else
00619 throw()
00620 #endif
00621 {
00622 #if(CXSC_INDEX_CHECK)
00623 if(VecLen(sl1)!=VecLen(sl2)) cxscthrow(OP_WITH_WRONG_DIM("void accumulate(cidotprecision&, const ivector_slice &, const cvector_slice &)"));
00624 #endif
00625 idotprecision tmp_re(0.0);
00626 idotprecision tmp_im(0.0);
00627 tmp_re.set_k(dp.get_k());
00628 tmp_im.set_k(dp.get_k());
00629 addDot(tmp_re,sl1,Re(sl2));
00630 addDot(tmp_im,sl1,Im(sl2));
00631 dp += cidotprecision(tmp_re,tmp_im);
00632 }
00633
00634
00635 void accumulate(cdotprecision &dp, const cvector& v) {
00636 addSum(Re(dp),Re(v));
00637 addSum(Im(dp),Im(v));
00638 }
00639
00640 void accumulate(cidotprecision &dp, const cvector& v) {
00641 idotprecision tmp_re(0.0);
00642 idotprecision tmp_im(0.0);
00643 tmp_re.set_k(dp.get_k());
00644 tmp_im.set_k(dp.get_k());
00645 accumulate(tmp_re,Re(v));
00646 accumulate(tmp_im,Im(v));
00647 dp += cidotprecision(tmp_re,tmp_im);
00648 }
00649
00650
00651 }
00652