00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00025 #include "matpackVI.h"
00026
00027
00028
00029
00031 Index ConstTensor6View::nvitrines() const
00032 {
00033 return mvr.mextent;
00034 }
00035
00037 Index ConstTensor6View::nshelves() const
00038 {
00039 return msr.mextent;
00040 }
00041
00043 Index ConstTensor6View::nbooks() const
00044 {
00045 return mbr.mextent;
00046 }
00047
00049 Index ConstTensor6View::npages() const
00050 {
00051 return mpr.mextent;
00052 }
00053
00055 Index ConstTensor6View::nrows() const
00056 {
00057 return mrr.mextent;
00058 }
00059
00061 Index ConstTensor6View::ncols() const
00062 {
00063 return mcr.mextent;
00064 }
00065
00066
00067
00068
00069
00070 ConstTensor6View ConstTensor6View::operator()
00071 ( const Range& v, const Range& s, const Range& b,
00072 const Range& p, const Range& r, const Range& c) const
00073 {
00074 return ConstTensor6View(mdata,
00075 mvr, msr, mbr, mpr, mrr, mcr,
00076 v, s, b, p, r, c);
00077 }
00078
00079
00080
00081 ConstTensor5View ConstTensor6View::operator()
00082 ( const Range& v, const Range& s, const Range& b,
00083 const Range& p, const Range& r, Index c) const
00084 {
00085 CHECK(c);
00086 return ConstTensor5View(mdata + OFFSET(c),
00087 mvr, msr, mbr, mpr, mrr,
00088 v, s, b, p, r);
00089 }
00090
00091
00092 ConstTensor5View ConstTensor6View::operator()
00093 ( const Range& v, const Range& s, const Range& b,
00094 const Range& p, Index r, const Range& c) const
00095 {
00096 CHECK(r);
00097 return ConstTensor5View(mdata + OFFSET(r),
00098 mvr, msr, mbr, mpr, mcr,
00099 v, s, b, p, c);
00100 }
00101
00102
00103 ConstTensor5View ConstTensor6View::operator()
00104 ( const Range& v, const Range& s, const Range& b,
00105 Index p, const Range& r, const Range& c) const
00106 {
00107 CHECK(p);
00108 return ConstTensor5View(mdata + OFFSET(p),
00109 mvr, msr, mbr, mrr, mcr,
00110 v, s, b, r, c);
00111 }
00112
00113
00114 ConstTensor5View ConstTensor6View::operator()
00115 ( const Range& v, const Range& s, Index b,
00116 const Range& p, const Range& r, const Range& c) const
00117 {
00118 CHECK(b);
00119 return ConstTensor5View(mdata + OFFSET(b),
00120 mvr, msr, mpr, mrr, mcr,
00121 v, s, p, r, c);
00122 }
00123
00124
00125 ConstTensor5View ConstTensor6View::operator()
00126 ( const Range& v, Index s, const Range& b,
00127 const Range& p, const Range& r, const Range& c) const
00128 {
00129 CHECK(s);
00130 return ConstTensor5View(mdata + OFFSET(s),
00131 mvr, mbr, mpr, mrr, mcr,
00132 v, b, p, r, c);
00133 }
00134
00135
00136 ConstTensor5View ConstTensor6View::operator()
00137 ( Index v, const Range& s, const Range& b,
00138 const Range& p, const Range& r, const Range& c) const
00139 {
00140 CHECK(v);
00141 return ConstTensor5View(mdata + OFFSET(v),
00142 msr, mbr, mpr, mrr, mcr,
00143 s, b, p, r, c);
00144 }
00145
00146
00147
00148
00149 ConstTensor4View ConstTensor6View::operator()
00150 ( const Range& v, const Range& s, const Range& b,
00151 const Range& p, Index r, Index c) const
00152 {
00153 CHECK(r);
00154 CHECK(c);
00155 return ConstTensor4View(mdata + OFFSET(r) + OFFSET(c),
00156 mvr, msr, mbr, mpr,
00157 v, s, b, p );
00158 }
00159
00160
00161 ConstTensor4View ConstTensor6View::operator()
00162 ( const Range& v, const Range& s, const Range& b,
00163 Index p, const Range& r, Index c) const
00164 {
00165 CHECK(p);
00166 CHECK(c);
00167 return ConstTensor4View(mdata + OFFSET(p) + OFFSET(c),
00168 mvr, msr, mbr, mrr,
00169 v, s, b, r );
00170 }
00171
00172
00173 ConstTensor4View ConstTensor6View::operator()
00174 ( const Range& v, const Range& s, Index b,
00175 const Range& p, const Range& r, Index c) const
00176 {
00177 CHECK(b);
00178 CHECK(c);
00179 return ConstTensor4View(mdata + OFFSET(b) + OFFSET(c),
00180 mvr, msr, mpr, mrr,
00181 v, s, p, r );
00182 }
00183
00184
00185 ConstTensor4View ConstTensor6View::operator()
00186 ( const Range& v, Index s, const Range& b,
00187 const Range& p, const Range& r, Index c) const
00188 {
00189 CHECK(s);
00190 CHECK(c);
00191 return ConstTensor4View(mdata + OFFSET(s) + OFFSET(c),
00192 mvr, mbr, mpr, mrr,
00193 v, b, p, r );
00194 }
00195
00196
00197 ConstTensor4View ConstTensor6View::operator()
00198 ( Index v, const Range& s, const Range& b,
00199 const Range& p, const Range& r, Index c) const
00200 {
00201 CHECK(v);
00202 CHECK(c);
00203 return ConstTensor4View(mdata + OFFSET(v) + OFFSET(c),
00204 msr, mbr, mpr, mrr,
00205 s, b, p, r );
00206 }
00207
00208
00209 ConstTensor4View ConstTensor6View::operator()
00210 ( const Range& v, const Range& s, const Range& b,
00211 Index p, Index r, const Range& c) const
00212 {
00213 CHECK(p);
00214 CHECK(r);
00215 return ConstTensor4View(mdata + OFFSET(p) + OFFSET(r),
00216 mvr, msr, mbr, mcr,
00217 v, s, b, c );
00218 }
00219
00220
00221 ConstTensor4View ConstTensor6View::operator()
00222 ( const Range& v, const Range& s, Index b,
00223 const Range& p, Index r, const Range& c) const
00224 {
00225 CHECK(b);
00226 CHECK(r);
00227 return ConstTensor4View(mdata + OFFSET(b) + OFFSET(r),
00228 mvr, msr, mpr, mcr,
00229 v, s, p, c );
00230 }
00231
00232
00233 ConstTensor4View ConstTensor6View::operator()
00234 ( const Range& v, Index s, const Range& b,
00235 const Range& p, Index r, const Range& c) const
00236 {
00237 CHECK(s);
00238 CHECK(r);
00239 return ConstTensor4View(mdata + OFFSET(s) + OFFSET(r),
00240 mvr, mbr, mpr, mcr,
00241 v, b, p, c );
00242 }
00243
00244
00245 ConstTensor4View ConstTensor6View::operator()
00246 ( Index v, const Range& s, const Range& b,
00247 const Range& p, Index r, const Range& c) const
00248 {
00249 CHECK(v);
00250 CHECK(r);
00251 return ConstTensor4View(mdata + OFFSET(v) + OFFSET(r),
00252 msr, mbr, mpr, mcr,
00253 s, b, p, c );
00254 }
00255
00256
00257 ConstTensor4View ConstTensor6View::operator()
00258 ( const Range& v, const Range& s, Index b,
00259 Index p, const Range& r, const Range& c) const
00260 {
00261 CHECK(b);
00262 CHECK(p);
00263 return ConstTensor4View(mdata + OFFSET(b) + OFFSET(p),
00264 mvr, msr, mrr, mcr,
00265 v, s, r, c );
00266 }
00267
00268
00269 ConstTensor4View ConstTensor6View::operator()
00270 ( const Range& v, Index s, const Range& b,
00271 Index p, const Range& r, const Range& c) const
00272 {
00273 CHECK(s);
00274 CHECK(p);
00275 return ConstTensor4View(mdata + OFFSET(s) + OFFSET(p),
00276 mvr, mbr, mrr, mcr,
00277 v, b, r, c );
00278 }
00279
00280
00281 ConstTensor4View ConstTensor6View::operator()
00282 ( Index v, const Range& s, const Range& b,
00283 Index p, const Range& r, const Range& c) const
00284 {
00285 CHECK(v);
00286 CHECK(p);
00287 return ConstTensor4View(mdata + OFFSET(v) + OFFSET(p),
00288 msr, mbr, mrr, mcr,
00289 s, b, r, c );
00290 }
00291
00292
00293 ConstTensor4View ConstTensor6View::operator()
00294 ( const Range& v, Index s, Index b,
00295 const Range& p, const Range& r, const Range& c) const
00296 {
00297 CHECK(s);
00298 CHECK(b);
00299 return ConstTensor4View(mdata + OFFSET(s) + OFFSET(b),
00300 mvr, mpr, mrr, mcr,
00301 v, p, r, c );
00302 }
00303
00304
00305 ConstTensor4View ConstTensor6View::operator()
00306 ( Index v, const Range& s, Index b,
00307 const Range& p, const Range& r, const Range& c) const
00308 {
00309 CHECK(v);
00310 CHECK(b);
00311 return ConstTensor4View(mdata + OFFSET(v) + OFFSET(b),
00312 msr, mpr, mrr, mcr,
00313 s, p, r, c );
00314 }
00315
00316
00317 ConstTensor4View ConstTensor6View::operator()
00318 ( Index v, Index s, const Range& b,
00319 const Range& p, const Range& r, const Range& c) const
00320 {
00321 CHECK(v);
00322 CHECK(s);
00323 return ConstTensor4View(mdata + OFFSET(v) + OFFSET(s),
00324 mbr, mpr, mrr, mcr,
00325 b, p, r, c );
00326 }
00327
00328
00329
00330
00331 ConstTensor3View ConstTensor6View::operator()
00332 ( const Range& v, const Range& s, const Range& b,
00333 Index p, Index r, Index c) const
00334 {
00335 CHECK(p);
00336 CHECK(r);
00337 CHECK(c);
00338 return ConstTensor3View(mdata + OFFSET(p) + OFFSET(r) + OFFSET(c),
00339 mvr, msr, mbr,
00340 v, s, b );
00341 }
00342
00343
00344 ConstTensor3View ConstTensor6View::operator()
00345 ( const Range& v, const Range& s, Index b,
00346 const Range& p, Index r, Index c) const
00347 {
00348 CHECK(b);
00349 CHECK(r);
00350 CHECK(c);
00351 return ConstTensor3View(mdata + OFFSET(b) + OFFSET(r) + OFFSET(c),
00352 mvr, msr, mpr,
00353 v, s, p );
00354 }
00355
00356
00357 ConstTensor3View ConstTensor6View::operator()
00358 ( const Range& v, Index s, const Range& b,
00359 const Range& p, Index r, Index c) const
00360 {
00361 CHECK(s);
00362 CHECK(r);
00363 CHECK(c);
00364 return ConstTensor3View(mdata + OFFSET(s) + OFFSET(r) + OFFSET(c),
00365 mvr, mbr, mpr,
00366 v, b, p );
00367 }
00368
00369
00370 ConstTensor3View ConstTensor6View::operator()
00371 ( Index v, const Range& s, const Range& b,
00372 const Range& p, Index r, Index c) const
00373 {
00374 CHECK(v);
00375 CHECK(r);
00376 CHECK(c);
00377 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(r) + OFFSET(c),
00378 msr, mbr, mpr,
00379 s, b, p );
00380 }
00381
00382
00383 ConstTensor3View ConstTensor6View::operator()
00384 ( const Range& v, const Range& s, Index b,
00385 Index p, const Range& r, Index c) const
00386 {
00387 CHECK(b);
00388 CHECK(p);
00389 CHECK(c);
00390 return ConstTensor3View(mdata + OFFSET(b) + OFFSET(p) + OFFSET(c),
00391 mvr, msr, mrr,
00392 v, s, r );
00393 }
00394
00395
00396 ConstTensor3View ConstTensor6View::operator()
00397 ( const Range& v, Index s, const Range& b,
00398 Index p, const Range& r, Index c) const
00399 {
00400 CHECK(s);
00401 CHECK(p);
00402 CHECK(c);
00403 return ConstTensor3View(mdata + OFFSET(s) + OFFSET(p) + OFFSET(c),
00404 mvr, mbr, mrr,
00405 v, b, r );
00406 }
00407
00408
00409 ConstTensor3View ConstTensor6View::operator()
00410 ( Index v, const Range& s, const Range& b,
00411 Index p, const Range& r, Index c) const
00412 {
00413 CHECK(v);
00414 CHECK(p);
00415 CHECK(c);
00416 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(p) + OFFSET(c),
00417 msr, mbr, mrr,
00418 s, b, r );
00419 }
00420
00421
00422 ConstTensor3View ConstTensor6View::operator()
00423 ( const Range& v, Index s, Index b,
00424 const Range& p, const Range& r, Index c) const
00425 {
00426 CHECK(s);
00427 CHECK(b);
00428 CHECK(c);
00429 return ConstTensor3View(mdata + OFFSET(s) + OFFSET(b) + OFFSET(c),
00430 mvr, mpr, mrr,
00431 v, p, r );
00432 }
00433
00434
00435 ConstTensor3View ConstTensor6View::operator()
00436 ( Index v, const Range& s, Index b,
00437 const Range& p, const Range& r, Index c) const
00438 {
00439 CHECK(v);
00440 CHECK(b);
00441 CHECK(c);
00442 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(b) + OFFSET(c),
00443 msr, mpr, mrr,
00444 s, p, r );
00445 }
00446
00447
00448 ConstTensor3View ConstTensor6View::operator()
00449 ( Index v, Index s, const Range& b,
00450 const Range& p, const Range& r, Index c) const
00451 {
00452 CHECK(v);
00453 CHECK(s);
00454 CHECK(c);
00455 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(c),
00456 mbr, mpr, mrr,
00457 b, p, r );
00458 }
00459
00460
00461 ConstTensor3View ConstTensor6View::operator()
00462 ( const Range& v, const Range& s, Index b,
00463 Index p, Index r, const Range& c) const
00464 {
00465 CHECK(b);
00466 CHECK(p);
00467 CHECK(r);
00468 return ConstTensor3View(mdata + OFFSET(b) + OFFSET(p) + OFFSET(r),
00469 mvr, msr, mcr,
00470 v, s, c );
00471 }
00472
00473
00474 ConstTensor3View ConstTensor6View::operator()
00475 ( const Range& v, Index s, const Range& b,
00476 Index p, Index r, const Range& c) const
00477 {
00478 CHECK(s);
00479 CHECK(p);
00480 CHECK(r);
00481 return ConstTensor3View(mdata + OFFSET(s) + OFFSET(p) + OFFSET(r),
00482 mvr, mbr, mcr,
00483 v, b, c );
00484 }
00485
00486
00487 ConstTensor3View ConstTensor6View::operator()
00488 ( Index v, const Range& s, const Range& b,
00489 Index p, Index r, const Range& c) const
00490 {
00491 CHECK(v);
00492 CHECK(p);
00493 CHECK(r);
00494 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(p) + OFFSET(r),
00495 msr, mbr, mcr,
00496 s, b, c );
00497 }
00498
00499
00500 ConstTensor3View ConstTensor6View::operator()
00501 ( const Range& v, Index s, Index b,
00502 const Range& p, Index r, const Range& c) const
00503 {
00504 CHECK(s);
00505 CHECK(b);
00506 CHECK(r);
00507 return ConstTensor3View(mdata + OFFSET(s) + OFFSET(b) + OFFSET(r),
00508 mvr, mpr, mcr,
00509 v, p, c );
00510 }
00511
00512
00513 ConstTensor3View ConstTensor6View::operator()
00514 ( Index v, const Range& s, Index b,
00515 const Range& p, Index r, const Range& c) const
00516 {
00517 CHECK(v);
00518 CHECK(b);
00519 CHECK(r);
00520 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(b) + OFFSET(r),
00521 msr, mpr, mcr,
00522 s, p, c );
00523 }
00524
00525
00526 ConstTensor3View ConstTensor6View::operator()
00527 ( Index v, Index s, const Range& b,
00528 const Range& p, Index r, const Range& c) const
00529 {
00530 CHECK(v);
00531 CHECK(s);
00532 CHECK(r);
00533 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(r),
00534 mbr, mpr, mcr,
00535 b, p, c );
00536 }
00537
00538
00539 ConstTensor3View ConstTensor6View::operator()
00540 ( const Range& v, Index s, Index b,
00541 Index p, const Range& r, const Range& c) const
00542 {
00543 CHECK(s);
00544 CHECK(b);
00545 CHECK(p);
00546 return ConstTensor3View(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p),
00547 mvr, mrr, mcr,
00548 v, r, c );
00549 }
00550
00551
00552 ConstTensor3View ConstTensor6View::operator()
00553 ( Index v, const Range& s, Index b,
00554 Index p, const Range& r, const Range& c) const
00555 {
00556 CHECK(v);
00557 CHECK(b);
00558 CHECK(p);
00559 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p),
00560 msr, mrr, mcr,
00561 s, r, c );
00562 }
00563
00564
00565 ConstTensor3View ConstTensor6View::operator()
00566 ( Index v, Index s, const Range& b,
00567 Index p, const Range& r, const Range& c) const
00568 {
00569 CHECK(v);
00570 CHECK(s);
00571 CHECK(p);
00572 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p),
00573 mbr, mrr, mcr,
00574 b, r, c );
00575 }
00576
00577
00578 ConstTensor3View ConstTensor6View::operator()
00579 ( Index v, Index s, Index b,
00580 const Range& p, const Range& r, const Range& c) const
00581 {
00582 CHECK(v);
00583 CHECK(s);
00584 CHECK(b);
00585 return ConstTensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b),
00586 mpr, mrr, mcr,
00587 p, r, c );
00588 }
00589
00590
00591
00592
00593 ConstMatrixView ConstTensor6View::operator()
00594 ( Index v, Index s, Index b,
00595 Index p, const Range& r, const Range& c) const
00596 {
00597 CHECK(v);
00598 CHECK(s);
00599 CHECK(b);
00600 CHECK(p);
00601 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(p),
00602 mrr, mcr,
00603 r, c );
00604 }
00605
00606
00607 ConstMatrixView ConstTensor6View::operator()
00608 ( Index v, Index s, Index b,
00609 const Range& p, Index r, const Range& c) const
00610 {
00611 CHECK(v);
00612 CHECK(s);
00613 CHECK(b);
00614 CHECK(r);
00615 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(r),
00616 mpr, mcr,
00617 p, c );
00618 }
00619
00620
00621 ConstMatrixView ConstTensor6View::operator()
00622 ( Index v, Index s, const Range& b,
00623 Index p, Index r, const Range& c) const
00624 {
00625 CHECK(v);
00626 CHECK(s);
00627 CHECK(p);
00628 CHECK(r);
00629 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p) + OFFSET(r),
00630 mbr, mcr,
00631 b, c );
00632 }
00633
00634
00635 ConstMatrixView ConstTensor6View::operator()
00636 ( Index v, const Range& s, Index b,
00637 Index p, Index r, const Range& c) const
00638 {
00639 CHECK(v);
00640 CHECK(b);
00641 CHECK(p);
00642 CHECK(r);
00643 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p) + OFFSET(r),
00644 msr, mcr,
00645 s, c );
00646 }
00647
00648
00649 ConstMatrixView ConstTensor6View::operator()
00650 ( const Range& v, Index s, Index b,
00651 Index p, Index r, const Range& c) const
00652 {
00653 CHECK(s);
00654 CHECK(b);
00655 CHECK(p);
00656 CHECK(r);
00657 return ConstMatrixView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(r),
00658 mvr, mcr,
00659 v, c );
00660 }
00661
00662
00663 ConstMatrixView ConstTensor6View::operator()
00664 ( Index v, Index s, Index b,
00665 const Range& p, const Range& r, Index c) const
00666 {
00667 CHECK(v);
00668 CHECK(s);
00669 CHECK(b);
00670 CHECK(c);
00671 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(c),
00672 mpr, mrr,
00673 p, r );
00674 }
00675
00676
00677 ConstMatrixView ConstTensor6View::operator()
00678 ( Index v, Index s, const Range& b,
00679 Index p, const Range& r, Index c) const
00680 {
00681 CHECK(v);
00682 CHECK(s);
00683 CHECK(p);
00684 CHECK(c);
00685 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p) + OFFSET(c),
00686 mbr, mrr,
00687 b, r );
00688 }
00689
00690
00691 ConstMatrixView ConstTensor6View::operator()
00692 ( Index v, const Range& s, Index b,
00693 Index p, const Range& r, Index c) const
00694 {
00695 CHECK(v);
00696 CHECK(b);
00697 CHECK(p);
00698 CHECK(c);
00699 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p) + OFFSET(c),
00700 msr, mrr,
00701 s, r );
00702 }
00703
00704
00705 ConstMatrixView ConstTensor6View::operator()
00706 ( const Range& v, Index s, Index b,
00707 Index p, const Range& r, Index c) const
00708 {
00709 CHECK(s);
00710 CHECK(b);
00711 CHECK(p);
00712 CHECK(c);
00713 return ConstMatrixView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(c),
00714 mvr, mrr,
00715 v, r );
00716 }
00717
00718
00719 ConstMatrixView ConstTensor6View::operator()
00720 ( Index v, Index s, const Range& b,
00721 const Range& p, Index r, Index c) const
00722 {
00723 CHECK(v);
00724 CHECK(s);
00725 CHECK(r);
00726 CHECK(c);
00727 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(r) + OFFSET(c),
00728 mbr, mpr,
00729 b, p );
00730 }
00731
00732
00733 ConstMatrixView ConstTensor6View::operator()
00734 ( Index v, const Range& s, Index b,
00735 const Range& p, Index r, Index c) const
00736 {
00737 CHECK(v);
00738 CHECK(b);
00739 CHECK(r);
00740 CHECK(c);
00741 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(r) + OFFSET(c),
00742 msr, mpr,
00743 s, p );
00744 }
00745
00746
00747 ConstMatrixView ConstTensor6View::operator()
00748 ( const Range& v, Index s, Index b,
00749 const Range& p, Index r, Index c) const
00750 {
00751 CHECK(s);
00752 CHECK(b);
00753 CHECK(r);
00754 CHECK(c);
00755 return ConstMatrixView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(r) + OFFSET(c),
00756 mvr, mpr,
00757 v, p );
00758 }
00759
00760
00761 ConstMatrixView ConstTensor6View::operator()
00762 ( Index v, const Range& s, const Range& b,
00763 Index p, Index r, Index c) const
00764 {
00765 CHECK(v);
00766 CHECK(p);
00767 CHECK(r);
00768 CHECK(c);
00769 return ConstMatrixView(mdata + OFFSET(v) + OFFSET(p) + OFFSET(r) + OFFSET(c),
00770 msr, mbr,
00771 s, b );
00772 }
00773
00774
00775 ConstMatrixView ConstTensor6View::operator()
00776 ( const Range& v, Index s, const Range& b,
00777 Index p, Index r, Index c) const
00778 {
00779 CHECK(s);
00780 CHECK(p);
00781 CHECK(r);
00782 CHECK(c);
00783 return ConstMatrixView(mdata + OFFSET(s) + OFFSET(p) + OFFSET(r) + OFFSET(c),
00784 mvr, mbr,
00785 v, b );
00786 }
00787
00788
00789 ConstMatrixView ConstTensor6View::operator()
00790 ( const Range& v, const Range& s, Index b,
00791 Index p, Index r, Index c) const
00792 {
00793 CHECK(b);
00794 CHECK(p);
00795 CHECK(r);
00796 CHECK(c);
00797 return ConstMatrixView(mdata + OFFSET(b) + OFFSET(p) + OFFSET(r) + OFFSET(c),
00798 mvr, msr,
00799 v, s );
00800 }
00801
00802
00803
00804
00805 ConstVectorView ConstTensor6View::operator()
00806 ( Index v, Index s, Index b,
00807 Index p, Index r, const Range& c) const
00808 {
00809 CHECK(v);
00810 CHECK(s);
00811 CHECK(b);
00812 CHECK(p);
00813 CHECK(r);
00814 return ConstVectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(r),
00815 mcr,
00816 c );
00817 }
00818
00819
00820 ConstVectorView ConstTensor6View::operator()
00821 ( Index v, Index s, Index b,
00822 Index p, const Range& r, Index c) const
00823 {
00824 CHECK(v);
00825 CHECK(s);
00826 CHECK(b);
00827 CHECK(p);
00828 CHECK(c);
00829 return ConstVectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(c),
00830 mrr,
00831 r );
00832 }
00833
00834
00835 ConstVectorView ConstTensor6View::operator()
00836 ( Index v, Index s, Index b,
00837 const Range& p, Index r, Index c) const
00838 {
00839 CHECK(v);
00840 CHECK(s);
00841 CHECK(b);
00842 CHECK(r);
00843 CHECK(c);
00844 return ConstVectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(r) + OFFSET(c),
00845 mpr,
00846 p );
00847 }
00848
00849
00850 ConstVectorView ConstTensor6View::operator()
00851 ( Index v, Index s, const Range& b,
00852 Index p, Index r, Index c) const
00853 {
00854 CHECK(v);
00855 CHECK(s);
00856 CHECK(p);
00857 CHECK(r);
00858 CHECK(c);
00859 return ConstVectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p) + OFFSET(r) + OFFSET(c),
00860 mbr,
00861 b );
00862 }
00863
00864
00865 ConstVectorView ConstTensor6View::operator()
00866 ( Index v, const Range& s, Index b,
00867 Index p, Index r, Index c) const
00868 {
00869 CHECK(v);
00870 CHECK(b);
00871 CHECK(p);
00872 CHECK(r);
00873 CHECK(c);
00874 return ConstVectorView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p) + OFFSET(r) + OFFSET(c),
00875 msr,
00876 s );
00877 }
00878
00879
00880 ConstVectorView ConstTensor6View::operator()
00881 ( const Range& v, Index s, Index b,
00882 Index p, Index r, Index c) const
00883 {
00884 CHECK(s);
00885 CHECK(b);
00886 CHECK(p);
00887 CHECK(r);
00888 CHECK(c);
00889 return ConstVectorView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(r) + OFFSET(c),
00890 mvr,
00891 v );
00892 }
00893
00894
00895
00896
00898 ConstIterator6D ConstTensor6View::begin() const
00899 {
00900 return ConstIterator6D( ConstTensor5View(mdata+mvr.mstart,
00901 msr,
00902 mbr,
00903 mpr,
00904 mrr,
00905 mcr),
00906 mvr.mstride);
00907 }
00908
00910 ConstIterator6D ConstTensor6View::end() const
00911 {
00912 return ConstIterator6D( ConstTensor5View(mdata + mvr.mstart +
00913 (mvr.mextent)*mvr.mstride,
00914 msr,
00915 mbr,
00916 mpr,
00917 mrr,
00918 mcr),
00919 mvr.mstride );
00920 }
00921
00923 ConstTensor6View::ConstTensor6View(const ConstTensor5View& a) :
00924 mvr(0,1,
00925 a.msr.mextent*
00926 a.mbr.mextent*
00927 a.mpr.mextent*
00928 a.mrr.mextent*
00929 a.mcr.mextent),
00930 msr(a.msr),
00931 mbr(a.mbr),
00932 mpr(a.mpr),
00933 mrr(a.mrr),
00934 mcr(a.mcr),
00935 mdata(a.mdata)
00936 {
00937
00938 }
00939
00942 ConstTensor6View::ConstTensor6View() :
00943 mvr(0,0,1), msr(0,0,1), mbr(0,0,1),
00944 mpr(0,0,1), mrr(0,0,1), mcr(0,0,1),
00945 mdata(NULL)
00946 {
00947
00948 }
00949
00954 ConstTensor6View::ConstTensor6View(Numeric *data,
00955 const Range& v,
00956 const Range& s,
00957 const Range& b,
00958 const Range& p,
00959 const Range& r,
00960 const Range& c) :
00961 mvr(v),
00962 msr(s),
00963 mbr(b),
00964 mpr(p),
00965 mrr(r),
00966 mcr(c),
00967 mdata(data)
00968 {
00969
00970 }
00971
00979 ConstTensor6View::ConstTensor6View(Numeric *data,
00980 const Range& pv,
00981 const Range& ps,
00982 const Range& pb,
00983 const Range& pp,
00984 const Range& pr,
00985 const Range& pc,
00986 const Range& nv,
00987 const Range& ns,
00988 const Range& nb,
00989 const Range& np,
00990 const Range& nr,
00991 const Range& nc) :
00992 mvr(pv,nv),
00993 msr(ps,ns),
00994 mbr(pb,nb),
00995 mpr(pp,np),
00996 mrr(pr,nr),
00997 mcr(pc,nc),
00998 mdata(data)
00999 {
01000
01001 }
01002
01006 ostream& operator<<(ostream& os, const ConstTensor6View& v)
01007 {
01008
01009 ConstIterator6D ip=v.begin();
01010 const ConstIterator6D end_page=v.end();
01011
01012 if ( ip!=end_page )
01013 {
01014 os << *ip;
01015 ++ip;
01016 }
01017
01018 for ( ; ip!=end_page; ++ip )
01019 {
01020 os << "\n\n";
01021 os << *ip;
01022 }
01023
01024 return os;
01025 }
01026
01027
01028
01029
01030
01031
01032
01033
01034
01035 ConstTensor6View Tensor6View::operator()
01036 ( const Range& v, const Range& s, const Range& b,
01037 const Range& p, const Range& r, const Range& c) const
01038 {
01039 return ConstTensor6View::operator()(v,s,b,p,r,c);
01040 }
01041
01042
01043
01044
01045 ConstTensor5View Tensor6View::operator()
01046 ( const Range& v, const Range& s, const Range& b,
01047 const Range& p, const Range& r, Index c) const
01048 {
01049 return ConstTensor6View::operator()(v,s,b,p,r,c);
01050 }
01051
01052
01053 ConstTensor5View Tensor6View::operator()
01054 ( const Range& v, const Range& s, const Range& b,
01055 const Range& p, Index r, const Range& c) const
01056 {
01057 return ConstTensor6View::operator()(v,s,b,p,r,c);
01058 }
01059
01060
01061 ConstTensor5View Tensor6View::operator()
01062 ( const Range& v, const Range& s, const Range& b,
01063 Index p, const Range& r, const Range& c) const
01064 {
01065 return ConstTensor6View::operator()(v,s,b,p,r,c);
01066 }
01067
01068
01069 ConstTensor5View Tensor6View::operator()
01070 ( const Range& v, const Range& s, Index b,
01071 const Range& p, const Range& r, const Range& c) const
01072 {
01073 return ConstTensor6View::operator()(v,s,b,p,r,c);
01074 }
01075
01076
01077 ConstTensor5View Tensor6View::operator()
01078 ( const Range& v, Index s, const Range& b,
01079 const Range& p, const Range& r, const Range& c) const
01080 {
01081 return ConstTensor6View::operator()(v,s,b,p,r,c);
01082 }
01083
01084
01085 ConstTensor5View Tensor6View::operator()
01086 ( Index v, const Range& s, const Range& b,
01087 const Range& p, const Range& r, const Range& c) const
01088 {
01089 return ConstTensor6View::operator()(v,s,b,p,r,c);
01090 }
01091
01092
01093
01094
01095 ConstTensor4View Tensor6View::operator()
01096 ( const Range& v, const Range& s, const Range& b,
01097 const Range& p, Index r, Index c) const
01098 {
01099 return ConstTensor6View::operator()(v,s,b,p,r,c);
01100 }
01101
01102
01103 ConstTensor4View Tensor6View::operator()
01104 ( const Range& v, const Range& s, const Range& b,
01105 Index p, const Range& r, Index c) const
01106 {
01107 return ConstTensor6View::operator()(v,s,b,p,r,c);
01108 }
01109
01110
01111 ConstTensor4View Tensor6View::operator()
01112 ( const Range& v, const Range& s, Index b,
01113 const Range& p, const Range& r, Index c) const
01114 {
01115 return ConstTensor6View::operator()(v,s,b,p,r,c);
01116 }
01117
01118
01119 ConstTensor4View Tensor6View::operator()
01120 ( const Range& v, Index s, const Range& b,
01121 const Range& p, const Range& r, Index c) const
01122 {
01123 return ConstTensor6View::operator()(v,s,b,p,r,c);
01124 }
01125
01126
01127 ConstTensor4View Tensor6View::operator()
01128 ( Index v, const Range& s, const Range& b,
01129 const Range& p, const Range& r, Index c) const
01130 {
01131 return ConstTensor6View::operator()(v,s,b,p,r,c);
01132 }
01133
01134
01135 ConstTensor4View Tensor6View::operator()
01136 ( const Range& v, const Range& s, const Range& b,
01137 Index p, Index r, const Range& c) const
01138 {
01139 return ConstTensor6View::operator()(v,s,b,p,r,c);
01140 }
01141
01142
01143 ConstTensor4View Tensor6View::operator()
01144 ( const Range& v, const Range& s, Index b,
01145 const Range& p, Index r, const Range& c) const
01146 {
01147 return ConstTensor6View::operator()(v,s,b,p,r,c);
01148 }
01149
01150
01151 ConstTensor4View Tensor6View::operator()
01152 ( const Range& v, Index s, const Range& b,
01153 const Range& p, Index r, const Range& c) const
01154 {
01155 return ConstTensor6View::operator()(v,s,b,p,r,c);
01156 }
01157
01158
01159 ConstTensor4View Tensor6View::operator()
01160 ( Index v, const Range& s, const Range& b,
01161 const Range& p, Index r, const Range& c) const
01162 {
01163 return ConstTensor6View::operator()(v,s,b,p,r,c);
01164 }
01165
01166
01167 ConstTensor4View Tensor6View::operator()
01168 ( const Range& v, const Range& s, Index b,
01169 Index p, const Range& r, const Range& c) const
01170 {
01171 return ConstTensor6View::operator()(v,s,b,p,r,c);
01172 }
01173
01174
01175 ConstTensor4View Tensor6View::operator()
01176 ( const Range& v, Index s, const Range& b,
01177 Index p, const Range& r, const Range& c) const
01178 {
01179 return ConstTensor6View::operator()(v,s,b,p,r,c);
01180 }
01181
01182
01183 ConstTensor4View Tensor6View::operator()
01184 ( Index v, const Range& s, const Range& b,
01185 Index p, const Range& r, const Range& c) const
01186 {
01187 return ConstTensor6View::operator()(v,s,b,p,r,c);
01188 }
01189
01190
01191 ConstTensor4View Tensor6View::operator()
01192 ( const Range& v, Index s, Index b,
01193 const Range& p, const Range& r, const Range& c) const
01194 {
01195 return ConstTensor6View::operator()(v,s,b,p,r,c);
01196 }
01197
01198
01199 ConstTensor4View Tensor6View::operator()
01200 ( Index v, const Range& s, Index b,
01201 const Range& p, const Range& r, const Range& c) const
01202 {
01203 return ConstTensor6View::operator()(v,s,b,p,r,c);
01204 }
01205
01206
01207 ConstTensor4View Tensor6View::operator()
01208 ( Index v, Index s, const Range& b,
01209 const Range& p, const Range& r, const Range& c) const
01210 {
01211 return ConstTensor6View::operator()(v,s,b,p,r,c);
01212 }
01213
01214
01215
01216
01217 ConstTensor3View Tensor6View::operator()
01218 ( const Range& v, const Range& s, const Range& b,
01219 Index p, Index r, Index c) const
01220 {
01221 return ConstTensor6View::operator()(v,s,b,p,r,c);
01222 }
01223
01224
01225 ConstTensor3View Tensor6View::operator()
01226 ( const Range& v, const Range& s, Index b,
01227 const Range& p, Index r, Index c) const
01228 {
01229 return ConstTensor6View::operator()(v,s,b,p,r,c);
01230 }
01231
01232
01233 ConstTensor3View Tensor6View::operator()
01234 ( const Range& v, Index s, const Range& b,
01235 const Range& p, Index r, Index c) const
01236 {
01237 return ConstTensor6View::operator()(v,s,b,p,r,c);
01238 }
01239
01240
01241 ConstTensor3View Tensor6View::operator()
01242 ( Index v, const Range& s, const Range& b,
01243 const Range& p, Index r, Index c) const
01244 {
01245 return ConstTensor6View::operator()(v,s,b,p,r,c);
01246 }
01247
01248
01249 ConstTensor3View Tensor6View::operator()
01250 ( const Range& v, const Range& s, Index b,
01251 Index p, const Range& r, Index c) const
01252 {
01253 return ConstTensor6View::operator()(v,s,b,p,r,c);
01254 }
01255
01256
01257 ConstTensor3View Tensor6View::operator()
01258 ( const Range& v, Index s, const Range& b,
01259 Index p, const Range& r, Index c) const
01260 {
01261 return ConstTensor6View::operator()(v,s,b,p,r,c);
01262 }
01263
01264
01265 ConstTensor3View Tensor6View::operator()
01266 ( Index v, const Range& s, const Range& b,
01267 Index p, const Range& r, Index c) const
01268 {
01269 return ConstTensor6View::operator()(v,s,b,p,r,c);
01270 }
01271
01272
01273 ConstTensor3View Tensor6View::operator()
01274 ( const Range& v, Index s, Index b,
01275 const Range& p, const Range& r, Index c) const
01276 {
01277 return ConstTensor6View::operator()(v,s,b,p,r,c);
01278 }
01279
01280
01281 ConstTensor3View Tensor6View::operator()
01282 ( Index v, const Range& s, Index b,
01283 const Range& p, const Range& r, Index c) const
01284 {
01285 return ConstTensor6View::operator()(v,s,b,p,r,c);
01286 }
01287
01288
01289 ConstTensor3View Tensor6View::operator()
01290 ( Index v, Index s, const Range& b,
01291 const Range& p, const Range& r, Index c) const
01292 {
01293 return ConstTensor6View::operator()(v,s,b,p,r,c);
01294 }
01295
01296
01297 ConstTensor3View Tensor6View::operator()
01298 ( const Range& v, const Range& s, Index b,
01299 Index p, Index r, const Range& c) const
01300 {
01301 return ConstTensor6View::operator()(v,s,b,p,r,c);
01302 }
01303
01304
01305 ConstTensor3View Tensor6View::operator()
01306 ( const Range& v, Index s, const Range& b,
01307 Index p, Index r, const Range& c) const
01308 {
01309 return ConstTensor6View::operator()(v,s,b,p,r,c);
01310 }
01311
01312
01313 ConstTensor3View Tensor6View::operator()
01314 ( Index v, const Range& s, const Range& b,
01315 Index p, Index r, const Range& c) const
01316 {
01317 return ConstTensor6View::operator()(v,s,b,p,r,c);
01318 }
01319
01320
01321 ConstTensor3View Tensor6View::operator()
01322 ( const Range& v, Index s, Index b,
01323 const Range& p, Index r, const Range& c) const
01324 {
01325 return ConstTensor6View::operator()(v,s,b,p,r,c);
01326 }
01327
01328
01329 ConstTensor3View Tensor6View::operator()
01330 ( Index v, const Range& s, Index b,
01331 const Range& p, Index r, const Range& c) const
01332 {
01333 return ConstTensor6View::operator()(v,s,b,p,r,c);
01334 }
01335
01336
01337 ConstTensor3View Tensor6View::operator()
01338 ( Index v, Index s, const Range& b,
01339 const Range& p, Index r, const Range& c) const
01340 {
01341 return ConstTensor6View::operator()(v,s,b,p,r,c);
01342 }
01343
01344
01345 ConstTensor3View Tensor6View::operator()
01346 ( const Range& v, Index s, Index b,
01347 Index p, const Range& r, const Range& c) const
01348 {
01349 return ConstTensor6View::operator()(v,s,b,p,r,c);
01350 }
01351
01352
01353 ConstTensor3View Tensor6View::operator()
01354 ( Index v, const Range& s, Index b,
01355 Index p, const Range& r, const Range& c) const
01356 {
01357 return ConstTensor6View::operator()(v,s,b,p,r,c);
01358 }
01359
01360
01361 ConstTensor3View Tensor6View::operator()
01362 ( Index v, Index s, const Range& b,
01363 Index p, const Range& r, const Range& c) const
01364 {
01365 return ConstTensor6View::operator()(v,s,b,p,r,c);
01366 }
01367
01368
01369 ConstTensor3View Tensor6View::operator()
01370 ( Index v, Index s, Index b,
01371 const Range& p, const Range& r, const Range& c) const
01372 {
01373 return ConstTensor6View::operator()(v,s,b,p,r,c);
01374 }
01375
01376
01377
01378
01379 ConstMatrixView Tensor6View::operator()
01380 ( Index v, Index s, Index b,
01381 Index p, const Range& r, const Range& c) const
01382 {
01383 return ConstTensor6View::operator()(v,s,b,p,r,c);
01384 }
01385
01386
01387 ConstMatrixView Tensor6View::operator()
01388 ( Index v, Index s, Index b,
01389 const Range& p, Index r, const Range& c) const
01390 {
01391 return ConstTensor6View::operator()(v,s,b,p,r,c);
01392 }
01393
01394
01395 ConstMatrixView Tensor6View::operator()
01396 ( Index v, Index s, const Range& b,
01397 Index p, Index r, const Range& c) const
01398 {
01399 return ConstTensor6View::operator()(v,s,b,p,r,c);
01400 }
01401
01402
01403 ConstMatrixView Tensor6View::operator()
01404 ( Index v, const Range& s, Index b,
01405 Index p, Index r, const Range& c) const
01406 {
01407 return ConstTensor6View::operator()(v,s,b,p,r,c);
01408 }
01409
01410
01411 ConstMatrixView Tensor6View::operator()
01412 ( const Range& v, Index s, Index b,
01413 Index p, Index r, const Range& c) const
01414 {
01415 return ConstTensor6View::operator()(v,s,b,p,r,c);
01416 }
01417
01418
01419 ConstMatrixView Tensor6View::operator()
01420 ( Index v, Index s, Index b,
01421 const Range& p, const Range& r, Index c) const
01422 {
01423 return ConstTensor6View::operator()(v,s,b,p,r,c);
01424 }
01425
01426
01427 ConstMatrixView Tensor6View::operator()
01428 ( Index v, Index s, const Range& b,
01429 Index p, const Range& r, Index c) const
01430 {
01431 return ConstTensor6View::operator()(v,s,b,p,r,c);
01432 }
01433
01434
01435 ConstMatrixView Tensor6View::operator()
01436 ( Index v, const Range& s, Index b,
01437 Index p, const Range& r, Index c) const
01438 {
01439 return ConstTensor6View::operator()(v,s,b,p,r,c);
01440 }
01441
01442
01443 ConstMatrixView Tensor6View::operator()
01444 ( const Range& v, Index s, Index b,
01445 Index p, const Range& r, Index c) const
01446 {
01447 return ConstTensor6View::operator()(v,s,b,p,r,c);
01448 }
01449
01450
01451 ConstMatrixView Tensor6View::operator()
01452 ( Index v, Index s, const Range& b,
01453 const Range& p, Index r, Index c) const
01454 {
01455 return ConstTensor6View::operator()(v,s,b,p,r,c);
01456 }
01457
01458
01459 ConstMatrixView Tensor6View::operator()
01460 ( Index v, const Range& s, Index b,
01461 const Range& p, Index r, Index c) const
01462 {
01463 return ConstTensor6View::operator()(v,s,b,p,r,c);
01464 }
01465
01466
01467 ConstMatrixView Tensor6View::operator()
01468 ( const Range& v, Index s, Index b,
01469 const Range& p, Index r, Index c) const
01470 {
01471 return ConstTensor6View::operator()(v,s,b,p,r,c);
01472 }
01473
01474
01475 ConstMatrixView Tensor6View::operator()
01476 ( Index v, const Range& s, const Range& b,
01477 Index p, Index r, Index c) const
01478 {
01479 return ConstTensor6View::operator()(v,s,b,p,r,c);
01480 }
01481
01482
01483 ConstMatrixView Tensor6View::operator()
01484 ( const Range& v, Index s, const Range& b,
01485 Index p, Index r, Index c) const
01486 {
01487 return ConstTensor6View::operator()(v,s,b,p,r,c);
01488 }
01489
01490
01491 ConstMatrixView Tensor6View::operator()
01492 ( const Range& v, const Range& s, Index b,
01493 Index p, Index r, Index c) const
01494 {
01495 return ConstTensor6View::operator()(v,s,b,p,r,c);
01496 }
01497
01498
01499
01500
01501 ConstVectorView Tensor6View::operator()
01502 ( Index v, Index s, Index b,
01503 Index p, Index r, const Range& c) const
01504 {
01505 return ConstTensor6View::operator()(v,s,b,p,r,c);
01506 }
01507
01508
01509 ConstVectorView Tensor6View::operator()
01510 ( Index v, Index s, Index b,
01511 Index p, const Range& r, Index c) const
01512 {
01513 return ConstTensor6View::operator()(v,s,b,p,r,c);
01514 }
01515
01516
01517 ConstVectorView Tensor6View::operator()
01518 ( Index v, Index s, Index b,
01519 const Range& p, Index r, Index c) const
01520 {
01521 return ConstTensor6View::operator()(v,s,b,p,r,c);
01522 }
01523
01524
01525 ConstVectorView Tensor6View::operator()
01526 ( Index v, Index s, const Range& b,
01527 Index p, Index r, Index c) const
01528 {
01529 return ConstTensor6View::operator()(v,s,b,p,r,c);
01530 }
01531
01532
01533 ConstVectorView Tensor6View::operator()
01534 ( Index v, const Range& s, Index b,
01535 Index p, Index r, Index c) const
01536 {
01537 return ConstTensor6View::operator()(v,s,b,p,r,c);
01538 }
01539
01540
01541 ConstVectorView Tensor6View::operator()
01542 ( const Range& v, Index s, Index b,
01543 Index p, Index r, Index c) const
01544 {
01545 return ConstTensor6View::operator()(v,s,b,p,r,c);
01546 }
01547
01548
01549
01550
01551
01552
01553
01554 Tensor6View Tensor6View::operator()
01555 ( const Range& v, const Range& s, const Range& b,
01556 const Range& p, const Range& r, const Range& c)
01557 {
01558 return Tensor6View(mdata,
01559 mvr, msr, mbr, mpr, mrr, mcr,
01560 v, s, b, p, r, c);
01561 }
01562
01563
01564
01565
01566 Tensor5View Tensor6View::operator()
01567 ( const Range& v, const Range& s, const Range& b,
01568 const Range& p, const Range& r, Index c)
01569 {
01570 CHECK(c);
01571 return Tensor5View(mdata + OFFSET(c),
01572 mvr, msr, mbr, mpr, mrr,
01573 v, s, b, p, r);
01574 }
01575
01576
01577 Tensor5View Tensor6View::operator()
01578 ( const Range& v, const Range& s, const Range& b,
01579 const Range& p, Index r, const Range& c)
01580 {
01581 CHECK(r);
01582 return Tensor5View(mdata + OFFSET(r),
01583 mvr, msr, mbr, mpr, mcr,
01584 v, s, b, p, c);
01585 }
01586
01587
01588 Tensor5View Tensor6View::operator()
01589 ( const Range& v, const Range& s, const Range& b,
01590 Index p, const Range& r, const Range& c)
01591 {
01592 CHECK(p);
01593 return Tensor5View(mdata + OFFSET(p),
01594 mvr, msr, mbr, mrr, mcr,
01595 v, s, b, r, c);
01596 }
01597
01598
01599 Tensor5View Tensor6View::operator()
01600 ( const Range& v, const Range& s, Index b,
01601 const Range& p, const Range& r, const Range& c)
01602 {
01603 CHECK(b);
01604 return Tensor5View(mdata + OFFSET(b),
01605 mvr, msr, mpr, mrr, mcr,
01606 v, s, p, r, c);
01607 }
01608
01609
01610 Tensor5View Tensor6View::operator()
01611 ( const Range& v, Index s, const Range& b,
01612 const Range& p, const Range& r, const Range& c)
01613 {
01614 CHECK(s);
01615 return Tensor5View(mdata + OFFSET(s),
01616 mvr, mbr, mpr, mrr, mcr,
01617 v, b, p, r, c);
01618 }
01619
01620
01621 Tensor5View Tensor6View::operator()
01622 ( Index v, const Range& s, const Range& b,
01623 const Range& p, const Range& r, const Range& c)
01624 {
01625 CHECK(v);
01626 return Tensor5View(mdata + OFFSET(v),
01627 msr, mbr, mpr, mrr, mcr,
01628 s, b, p, r, c);
01629 }
01630
01631
01632
01633
01634 Tensor4View Tensor6View::operator()
01635 ( const Range& v, const Range& s, const Range& b,
01636 const Range& p, Index r, Index c)
01637 {
01638 CHECK(r);
01639 CHECK(c);
01640 return Tensor4View(mdata + OFFSET(r) + OFFSET(c),
01641 mvr, msr, mbr, mpr,
01642 v, s, b, p );
01643 }
01644
01645
01646 Tensor4View Tensor6View::operator()
01647 ( const Range& v, const Range& s, const Range& b,
01648 Index p, const Range& r, Index c)
01649 {
01650 CHECK(p);
01651 CHECK(c);
01652 return Tensor4View(mdata + OFFSET(p) + OFFSET(c),
01653 mvr, msr, mbr, mrr,
01654 v, s, b, r );
01655 }
01656
01657
01658 Tensor4View Tensor6View::operator()
01659 ( const Range& v, const Range& s, Index b,
01660 const Range& p, const Range& r, Index c)
01661 {
01662 CHECK(b);
01663 CHECK(c);
01664 return Tensor4View(mdata + OFFSET(b) + OFFSET(c),
01665 mvr, msr, mpr, mrr,
01666 v, s, p, r );
01667 }
01668
01669
01670 Tensor4View Tensor6View::operator()
01671 ( const Range& v, Index s, const Range& b,
01672 const Range& p, const Range& r, Index c)
01673 {
01674 CHECK(s);
01675 CHECK(c);
01676 return Tensor4View(mdata + OFFSET(s) + OFFSET(c),
01677 mvr, mbr, mpr, mrr,
01678 v, b, p, r );
01679 }
01680
01681
01682 Tensor4View Tensor6View::operator()
01683 ( Index v, const Range& s, const Range& b,
01684 const Range& p, const Range& r, Index c)
01685 {
01686 CHECK(v);
01687 CHECK(c);
01688 return Tensor4View(mdata + OFFSET(v) + OFFSET(c),
01689 msr, mbr, mpr, mrr,
01690 s, b, p, r );
01691 }
01692
01693
01694 Tensor4View Tensor6View::operator()
01695 ( const Range& v, const Range& s, const Range& b,
01696 Index p, Index r, const Range& c)
01697 {
01698 CHECK(p);
01699 CHECK(r);
01700 return Tensor4View(mdata + OFFSET(p) + OFFSET(r),
01701 mvr, msr, mbr, mcr,
01702 v, s, b, c );
01703 }
01704
01705
01706 Tensor4View Tensor6View::operator()
01707 ( const Range& v, const Range& s, Index b,
01708 const Range& p, Index r, const Range& c)
01709 {
01710 CHECK(b);
01711 CHECK(r);
01712 return Tensor4View(mdata + OFFSET(b) + OFFSET(r),
01713 mvr, msr, mpr, mcr,
01714 v, s, p, c );
01715 }
01716
01717
01718 Tensor4View Tensor6View::operator()
01719 ( const Range& v, Index s, const Range& b,
01720 const Range& p, Index r, const Range& c)
01721 {
01722 CHECK(s);
01723 CHECK(r);
01724 return Tensor4View(mdata + OFFSET(s) + OFFSET(r),
01725 mvr, mbr, mpr, mcr,
01726 v, b, p, c );
01727 }
01728
01729
01730 Tensor4View Tensor6View::operator()
01731 ( Index v, const Range& s, const Range& b,
01732 const Range& p, Index r, const Range& c)
01733 {
01734 CHECK(v);
01735 CHECK(r);
01736 return Tensor4View(mdata + OFFSET(v) + OFFSET(r),
01737 msr, mbr, mpr, mcr,
01738 s, b, p, c );
01739 }
01740
01741
01742 Tensor4View Tensor6View::operator()
01743 ( const Range& v, const Range& s, Index b,
01744 Index p, const Range& r, const Range& c)
01745 {
01746 CHECK(b);
01747 CHECK(p);
01748 return Tensor4View(mdata + OFFSET(b) + OFFSET(p),
01749 mvr, msr, mrr, mcr,
01750 v, s, r, c );
01751 }
01752
01753
01754 Tensor4View Tensor6View::operator()
01755 ( const Range& v, Index s, const Range& b,
01756 Index p, const Range& r, const Range& c)
01757 {
01758 CHECK(s);
01759 CHECK(p);
01760 return Tensor4View(mdata + OFFSET(s) + OFFSET(p),
01761 mvr, mbr, mrr, mcr,
01762 v, b, r, c );
01763 }
01764
01765
01766 Tensor4View Tensor6View::operator()
01767 ( Index v, const Range& s, const Range& b,
01768 Index p, const Range& r, const Range& c)
01769 {
01770 CHECK(v);
01771 CHECK(p);
01772 return Tensor4View(mdata + OFFSET(v) + OFFSET(p),
01773 msr, mbr, mrr, mcr,
01774 s, b, r, c );
01775 }
01776
01777
01778 Tensor4View Tensor6View::operator()
01779 ( const Range& v, Index s, Index b,
01780 const Range& p, const Range& r, const Range& c)
01781 {
01782 CHECK(s);
01783 CHECK(b);
01784 return Tensor4View(mdata + OFFSET(s) + OFFSET(b),
01785 mvr, mpr, mrr, mcr,
01786 v, p, r, c );
01787 }
01788
01789
01790 Tensor4View Tensor6View::operator()
01791 ( Index v, const Range& s, Index b,
01792 const Range& p, const Range& r, const Range& c)
01793 {
01794 CHECK(v);
01795 CHECK(b);
01796 return Tensor4View(mdata + OFFSET(v) + OFFSET(b),
01797 msr, mpr, mrr, mcr,
01798 s, p, r, c );
01799 }
01800
01801
01802 Tensor4View Tensor6View::operator()
01803 ( Index v, Index s, const Range& b,
01804 const Range& p, const Range& r, const Range& c)
01805 {
01806 CHECK(v);
01807 CHECK(s);
01808 return Tensor4View(mdata + OFFSET(v) + OFFSET(s),
01809 mbr, mpr, mrr, mcr,
01810 b, p, r, c );
01811 }
01812
01813
01814
01815
01816 Tensor3View Tensor6View::operator()
01817 ( const Range& v, const Range& s, const Range& b,
01818 Index p, Index r, Index c)
01819 {
01820 CHECK(p);
01821 CHECK(r);
01822 CHECK(c);
01823 return Tensor3View(mdata + OFFSET(p) + OFFSET(r) + OFFSET(c),
01824 mvr, msr, mbr,
01825 v, s, b );
01826 }
01827
01828
01829 Tensor3View Tensor6View::operator()
01830 ( const Range& v, const Range& s, Index b,
01831 const Range& p, Index r, Index c)
01832 {
01833 CHECK(b);
01834 CHECK(r);
01835 CHECK(c);
01836 return Tensor3View(mdata + OFFSET(b) + OFFSET(r) + OFFSET(c),
01837 mvr, msr, mpr,
01838 v, s, p );
01839 }
01840
01841
01842 Tensor3View Tensor6View::operator()
01843 ( const Range& v, Index s, const Range& b,
01844 const Range& p, Index r, Index c)
01845 {
01846 CHECK(s);
01847 CHECK(r);
01848 CHECK(c);
01849 return Tensor3View(mdata + OFFSET(s) + OFFSET(r) + OFFSET(c),
01850 mvr, mbr, mpr,
01851 v, b, p );
01852 }
01853
01854
01855 Tensor3View Tensor6View::operator()
01856 ( Index v, const Range& s, const Range& b,
01857 const Range& p, Index r, Index c)
01858 {
01859 CHECK(v);
01860 CHECK(r);
01861 CHECK(c);
01862 return Tensor3View(mdata + OFFSET(v) + OFFSET(r) + OFFSET(c),
01863 msr, mbr, mpr,
01864 s, b, p );
01865 }
01866
01867
01868 Tensor3View Tensor6View::operator()
01869 ( const Range& v, const Range& s, Index b,
01870 Index p, const Range& r, Index c)
01871 {
01872 CHECK(b);
01873 CHECK(p);
01874 CHECK(c);
01875 return Tensor3View(mdata + OFFSET(b) + OFFSET(p) + OFFSET(c),
01876 mvr, msr, mrr,
01877 v, s, r );
01878 }
01879
01880
01881 Tensor3View Tensor6View::operator()
01882 ( const Range& v, Index s, const Range& b,
01883 Index p, const Range& r, Index c)
01884 {
01885 CHECK(s);
01886 CHECK(p);
01887 CHECK(c);
01888 return Tensor3View(mdata + OFFSET(s) + OFFSET(p) + OFFSET(c),
01889 mvr, mbr, mrr,
01890 v, b, r );
01891 }
01892
01893
01894 Tensor3View Tensor6View::operator()
01895 ( Index v, const Range& s, const Range& b,
01896 Index p, const Range& r, Index c)
01897 {
01898 CHECK(v);
01899 CHECK(p);
01900 CHECK(c);
01901 return Tensor3View(mdata + OFFSET(v) + OFFSET(p) + OFFSET(c),
01902 msr, mbr, mrr,
01903 s, b, r );
01904 }
01905
01906
01907 Tensor3View Tensor6View::operator()
01908 ( const Range& v, Index s, Index b,
01909 const Range& p, const Range& r, Index c)
01910 {
01911 CHECK(s);
01912 CHECK(b);
01913 CHECK(c);
01914 return Tensor3View(mdata + OFFSET(s) + OFFSET(b) + OFFSET(c),
01915 mvr, mpr, mrr,
01916 v, p, r );
01917 }
01918
01919
01920 Tensor3View Tensor6View::operator()
01921 ( Index v, const Range& s, Index b,
01922 const Range& p, const Range& r, Index c)
01923 {
01924 CHECK(v);
01925 CHECK(b);
01926 CHECK(c);
01927 return Tensor3View(mdata + OFFSET(v) + OFFSET(b) + OFFSET(c),
01928 msr, mpr, mrr,
01929 s, p, r );
01930 }
01931
01932
01933 Tensor3View Tensor6View::operator()
01934 ( Index v, Index s, const Range& b,
01935 const Range& p, const Range& r, Index c)
01936 {
01937 CHECK(v);
01938 CHECK(s);
01939 CHECK(c);
01940 return Tensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(c),
01941 mbr, mpr, mrr,
01942 b, p, r );
01943 }
01944
01945
01946 Tensor3View Tensor6View::operator()
01947 ( const Range& v, const Range& s, Index b,
01948 Index p, Index r, const Range& c)
01949 {
01950 CHECK(b);
01951 CHECK(p);
01952 CHECK(r);
01953 return Tensor3View(mdata + OFFSET(b) + OFFSET(p) + OFFSET(r),
01954 mvr, msr, mcr,
01955 v, s, c );
01956 }
01957
01958
01959 Tensor3View Tensor6View::operator()
01960 ( const Range& v, Index s, const Range& b,
01961 Index p, Index r, const Range& c)
01962 {
01963 CHECK(s);
01964 CHECK(p);
01965 CHECK(r);
01966 return Tensor3View(mdata + OFFSET(s) + OFFSET(p) + OFFSET(r),
01967 mvr, mbr, mcr,
01968 v, b, c );
01969 }
01970
01971
01972 Tensor3View Tensor6View::operator()
01973 ( Index v, const Range& s, const Range& b,
01974 Index p, Index r, const Range& c)
01975 {
01976 CHECK(v);
01977 CHECK(p);
01978 CHECK(r);
01979 return Tensor3View(mdata + OFFSET(v) + OFFSET(p) + OFFSET(r),
01980 msr, mbr, mcr,
01981 s, b, c );
01982 }
01983
01984
01985 Tensor3View Tensor6View::operator()
01986 ( const Range& v, Index s, Index b,
01987 const Range& p, Index r, const Range& c)
01988 {
01989 CHECK(s);
01990 CHECK(b);
01991 CHECK(r);
01992 return Tensor3View(mdata + OFFSET(s) + OFFSET(b) + OFFSET(r),
01993 mvr, mpr, mcr,
01994 v, p, c );
01995 }
01996
01997
01998 Tensor3View Tensor6View::operator()
01999 ( Index v, const Range& s, Index b,
02000 const Range& p, Index r, const Range& c)
02001 {
02002 CHECK(v);
02003 CHECK(b);
02004 CHECK(r);
02005 return Tensor3View(mdata + OFFSET(v) + OFFSET(b) + OFFSET(r),
02006 msr, mpr, mcr,
02007 s, p, c );
02008 }
02009
02010
02011 Tensor3View Tensor6View::operator()
02012 ( Index v, Index s, const Range& b,
02013 const Range& p, Index r, const Range& c)
02014 {
02015 CHECK(v);
02016 CHECK(s);
02017 CHECK(r);
02018 return Tensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(r),
02019 mbr, mpr, mcr,
02020 b, p, c );
02021 }
02022
02023
02024 Tensor3View Tensor6View::operator()
02025 ( const Range& v, Index s, Index b,
02026 Index p, const Range& r, const Range& c)
02027 {
02028 CHECK(s);
02029 CHECK(b);
02030 CHECK(p);
02031 return Tensor3View(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p),
02032 mvr, mrr, mcr,
02033 v, r, c );
02034 }
02035
02036
02037 Tensor3View Tensor6View::operator()
02038 ( Index v, const Range& s, Index b,
02039 Index p, const Range& r, const Range& c)
02040 {
02041 CHECK(v);
02042 CHECK(b);
02043 CHECK(p);
02044 return Tensor3View(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p),
02045 msr, mrr, mcr,
02046 s, r, c );
02047 }
02048
02049
02050 Tensor3View Tensor6View::operator()
02051 ( Index v, Index s, const Range& b,
02052 Index p, const Range& r, const Range& c)
02053 {
02054 CHECK(v);
02055 CHECK(s);
02056 CHECK(p);
02057 return Tensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p),
02058 mbr, mrr, mcr,
02059 b, r, c );
02060 }
02061
02062
02063 Tensor3View Tensor6View::operator()
02064 ( Index v, Index s, Index b,
02065 const Range& p, const Range& r, const Range& c)
02066 {
02067 CHECK(v);
02068 CHECK(s);
02069 CHECK(b);
02070 return Tensor3View(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b),
02071 mpr, mrr, mcr,
02072 p, r, c );
02073 }
02074
02075
02076
02077
02078 MatrixView Tensor6View::operator()
02079 ( Index v, Index s, Index b,
02080 Index p, const Range& r, const Range& c)
02081 {
02082 CHECK(v);
02083 CHECK(s);
02084 CHECK(b);
02085 CHECK(p);
02086 return MatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(p),
02087 mrr, mcr,
02088 r, c );
02089 }
02090
02091
02092 MatrixView Tensor6View::operator()
02093 ( Index v, Index s, Index b,
02094 const Range& p, Index r, const Range& c)
02095 {
02096 CHECK(v);
02097 CHECK(s);
02098 CHECK(b);
02099 CHECK(r);
02100 return MatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(r),
02101 mpr, mcr,
02102 p, c );
02103 }
02104
02105
02106 MatrixView Tensor6View::operator()
02107 ( Index v, Index s, const Range& b,
02108 Index p, Index r, const Range& c)
02109 {
02110 CHECK(v);
02111 CHECK(s);
02112 CHECK(p);
02113 CHECK(r);
02114 return MatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p) + OFFSET(r),
02115 mbr, mcr,
02116 b, c );
02117 }
02118
02119
02120 MatrixView Tensor6View::operator()
02121 ( Index v, const Range& s, Index b,
02122 Index p, Index r, const Range& c)
02123 {
02124 CHECK(v);
02125 CHECK(b);
02126 CHECK(p);
02127 CHECK(r);
02128 return MatrixView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p) + OFFSET(r),
02129 msr, mcr,
02130 s, c );
02131 }
02132
02133
02134 MatrixView Tensor6View::operator()
02135 ( const Range& v, Index s, Index b,
02136 Index p, Index r, const Range& c)
02137 {
02138 CHECK(s);
02139 CHECK(b);
02140 CHECK(p);
02141 CHECK(r);
02142 return MatrixView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(r),
02143 mvr, mcr,
02144 v, c );
02145 }
02146
02147
02148 MatrixView Tensor6View::operator()
02149 ( Index v, Index s, Index b,
02150 const Range& p, const Range& r, Index c)
02151 {
02152 CHECK(v);
02153 CHECK(s);
02154 CHECK(b);
02155 CHECK(c);
02156 return MatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(c),
02157 mpr, mrr,
02158 p, r );
02159 }
02160
02161
02162 MatrixView Tensor6View::operator()
02163 ( Index v, Index s, const Range& b,
02164 Index p, const Range& r, Index c)
02165 {
02166 CHECK(v);
02167 CHECK(s);
02168 CHECK(p);
02169 CHECK(c);
02170 return MatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p) + OFFSET(c),
02171 mbr, mrr,
02172 b, r );
02173 }
02174
02175
02176 MatrixView Tensor6View::operator()
02177 ( Index v, const Range& s, Index b,
02178 Index p, const Range& r, Index c)
02179 {
02180 CHECK(v);
02181 CHECK(b);
02182 CHECK(p);
02183 CHECK(c);
02184 return MatrixView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p) + OFFSET(c),
02185 msr, mrr,
02186 s, r );
02187 }
02188
02189
02190 MatrixView Tensor6View::operator()
02191 ( const Range& v, Index s, Index b,
02192 Index p, const Range& r, Index c)
02193 {
02194 CHECK(s);
02195 CHECK(b);
02196 CHECK(p);
02197 CHECK(c);
02198 return MatrixView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(c),
02199 mvr, mrr,
02200 v, r );
02201 }
02202
02203
02204 MatrixView Tensor6View::operator()
02205 ( Index v, Index s, const Range& b,
02206 const Range& p, Index r, Index c)
02207 {
02208 CHECK(v);
02209 CHECK(s);
02210 CHECK(r);
02211 CHECK(c);
02212 return MatrixView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(r) + OFFSET(c),
02213 mbr, mpr,
02214 b, p );
02215 }
02216
02217
02218 MatrixView Tensor6View::operator()
02219 ( Index v, const Range& s, Index b,
02220 const Range& p, Index r, Index c)
02221 {
02222 CHECK(v);
02223 CHECK(b);
02224 CHECK(r);
02225 CHECK(c);
02226 return MatrixView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(r) + OFFSET(c),
02227 msr, mpr,
02228 s, p );
02229 }
02230
02231
02232 MatrixView Tensor6View::operator()
02233 ( const Range& v, Index s, Index b,
02234 const Range& p, Index r, Index c)
02235 {
02236 CHECK(s);
02237 CHECK(b);
02238 CHECK(r);
02239 CHECK(c);
02240 return MatrixView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(r) + OFFSET(c),
02241 mvr, mpr,
02242 v, p );
02243 }
02244
02245
02246 MatrixView Tensor6View::operator()
02247 ( Index v, const Range& s, const Range& b,
02248 Index p, Index r, Index c)
02249 {
02250 CHECK(v);
02251 CHECK(p);
02252 CHECK(r);
02253 CHECK(c);
02254 return MatrixView(mdata + OFFSET(v) + OFFSET(p) + OFFSET(r) + OFFSET(c),
02255 msr, mbr,
02256 s, b );
02257 }
02258
02259
02260 MatrixView Tensor6View::operator()
02261 ( const Range& v, Index s, const Range& b,
02262 Index p, Index r, Index c)
02263 {
02264 CHECK(s);
02265 CHECK(p);
02266 CHECK(r);
02267 CHECK(c);
02268 return MatrixView(mdata + OFFSET(s) + OFFSET(p) + OFFSET(r) + OFFSET(c),
02269 mvr, mbr,
02270 v, b );
02271 }
02272
02273
02274 MatrixView Tensor6View::operator()
02275 ( const Range& v, const Range& s, Index b,
02276 Index p, Index r, Index c)
02277 {
02278 CHECK(b);
02279 CHECK(p);
02280 CHECK(r);
02281 CHECK(c);
02282 return MatrixView(mdata + OFFSET(b) + OFFSET(p) + OFFSET(r) + OFFSET(c),
02283 mvr, msr,
02284 v, s );
02285 }
02286
02287
02288
02289
02290 VectorView Tensor6View::operator()
02291 ( Index v, Index s, Index b,
02292 Index p, Index r, const Range& c)
02293 {
02294 CHECK(v);
02295 CHECK(s);
02296 CHECK(b);
02297 CHECK(p);
02298 CHECK(r);
02299 return VectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(r),
02300 mcr,
02301 c );
02302 }
02303
02304
02305 VectorView Tensor6View::operator()
02306 ( Index v, Index s, Index b,
02307 Index p, const Range& r, Index c)
02308 {
02309 CHECK(v);
02310 CHECK(s);
02311 CHECK(b);
02312 CHECK(p);
02313 CHECK(c);
02314 return VectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(c),
02315 mrr,
02316 r );
02317 }
02318
02319
02320 VectorView Tensor6View::operator()
02321 ( Index v, Index s, Index b,
02322 const Range& p, Index r, Index c)
02323 {
02324 CHECK(v);
02325 CHECK(s);
02326 CHECK(b);
02327 CHECK(r);
02328 CHECK(c);
02329 return VectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(b) + OFFSET(r) + OFFSET(c),
02330 mpr,
02331 p );
02332 }
02333
02334
02335 VectorView Tensor6View::operator()
02336 ( Index v, Index s, const Range& b,
02337 Index p, Index r, Index c)
02338 {
02339 CHECK(v);
02340 CHECK(s);
02341 CHECK(p);
02342 CHECK(r);
02343 CHECK(c);
02344 return VectorView(mdata + OFFSET(v) + OFFSET(s) + OFFSET(p) + OFFSET(r) + OFFSET(c),
02345 mbr,
02346 b );
02347 }
02348
02349
02350 VectorView Tensor6View::operator()
02351 ( Index v, const Range& s, Index b,
02352 Index p, Index r, Index c)
02353 {
02354 CHECK(v);
02355 CHECK(b);
02356 CHECK(p);
02357 CHECK(r);
02358 CHECK(c);
02359 return VectorView(mdata + OFFSET(v) + OFFSET(b) + OFFSET(p) + OFFSET(r) + OFFSET(c),
02360 msr,
02361 s );
02362 }
02363
02364
02365 VectorView Tensor6View::operator()
02366 ( const Range& v, Index s, Index b,
02367 Index p, Index r, Index c)
02368 {
02369 CHECK(s);
02370 CHECK(b);
02371 CHECK(p);
02372 CHECK(r);
02373 CHECK(c);
02374 return VectorView(mdata + OFFSET(s) + OFFSET(b) + OFFSET(p) + OFFSET(r) + OFFSET(c),
02375 mvr,
02376 v );
02377 }
02378
02379
02380
02381
02384 ConstIterator6D Tensor6View::begin() const
02385 {
02386 return ConstTensor6View::begin();
02387 }
02388
02390 ConstIterator6D Tensor6View::end() const
02391 {
02392 return ConstTensor6View::end();
02393 }
02394
02396 Iterator6D Tensor6View::begin()
02397 {
02398 return Iterator6D( Tensor5View(mdata+mvr.mstart,
02399 msr,
02400 mbr,
02401 mpr,
02402 mrr,
02403 mcr),
02404 mvr.mstride);
02405 }
02406
02408 Iterator6D Tensor6View::end()
02409 {
02410 return Iterator6D( Tensor5View(mdata + mvr.mstart +
02411 (mvr.mextent)*mvr.mstride,
02412 msr,
02413 mbr,
02414 mpr,
02415 mrr,
02416 mcr),
02417 mvr.mstride );
02418 }
02419
02424 Tensor6View& Tensor6View::operator=(const ConstTensor6View& m)
02425 {
02426
02427 assert(mvr.mextent==m.mvr.mextent);
02428 assert(msr.mextent==m.msr.mextent);
02429 assert(mbr.mextent==m.mbr.mextent);
02430 assert(mpr.mextent==m.mpr.mextent);
02431 assert(mrr.mextent==m.mrr.mextent);
02432 assert(mcr.mextent==m.mcr.mextent);
02433
02434 copy( m.begin(), m.end(), begin() );
02435 return *this;
02436 }
02437
02443 Tensor6View& Tensor6View::operator=(const Tensor6View& m)
02444 {
02445
02446 assert(mvr.mextent==m.mvr.mextent);
02447 assert(msr.mextent==m.msr.mextent);
02448 assert(mbr.mextent==m.mbr.mextent);
02449 assert(mpr.mextent==m.mpr.mextent);
02450 assert(mrr.mextent==m.mrr.mextent);
02451 assert(mcr.mextent==m.mcr.mextent);
02452
02453 copy( m.begin(), m.end(), begin() );
02454 return *this;
02455 }
02456
02460 Tensor6View& Tensor6View::operator=(const Tensor6& m)
02461 {
02462
02463 assert(mvr.mextent==m.mvr.mextent);
02464 assert(msr.mextent==m.msr.mextent);
02465 assert(mbr.mextent==m.mbr.mextent);
02466 assert(mpr.mextent==m.mpr.mextent);
02467 assert(mrr.mextent==m.mrr.mextent);
02468 assert(mcr.mextent==m.mcr.mextent);
02469
02470 copy( m.begin(), m.end(), begin() );
02471 return *this;
02472 }
02473
02476 Tensor6View& Tensor6View::operator=(Numeric x)
02477 {
02478 copy( x, begin(), end() );
02479 return *this;
02480 }
02481
02482
02483
02484
02486 Tensor6View& Tensor6View::operator*=(Numeric x)
02487 {
02488 const Iterator6D ep=end();
02489 for ( Iterator6D p=begin(); p!=ep ; ++p )
02490 {
02491 *p *= x;
02492 }
02493 return *this;
02494 }
02495
02497 Tensor6View& Tensor6View::operator/=(Numeric x)
02498 {
02499 const Iterator6D ep=end();
02500 for ( Iterator6D p=begin(); p!=ep ; ++p )
02501 {
02502 *p /= x;
02503 }
02504 return *this;
02505 }
02506
02508 Tensor6View& Tensor6View::operator+=(Numeric x)
02509 {
02510 const Iterator6D ep=end();
02511 for ( Iterator6D p=begin(); p!=ep ; ++p )
02512 {
02513 *p += x;
02514 }
02515 return *this;
02516 }
02517
02519 Tensor6View& Tensor6View::operator-=(Numeric x)
02520 {
02521 const Iterator6D ep=end();
02522 for ( Iterator6D p=begin(); p!=ep ; ++p )
02523 {
02524 *p -= x;
02525 }
02526 return *this;
02527 }
02528
02530 Tensor6View& Tensor6View::operator*=(const ConstTensor6View& x)
02531 {
02532 assert( nvitrines() == x.nvitrines() );
02533 assert( nshelves() == x.nshelves() );
02534 assert( nbooks() == x.nbooks() );
02535 assert( npages() == x.npages() );
02536 assert( nrows() == x.nrows() );
02537 assert( ncols() == x.ncols() );
02538 ConstIterator6D xp = x.begin();
02539 Iterator6D p = begin();
02540 const Iterator6D ep = end();
02541 for ( ; p!=ep ; ++p,++xp )
02542 {
02543 *p *= *xp;
02544 }
02545 return *this;
02546 }
02547
02549 Tensor6View& Tensor6View::operator/=(const ConstTensor6View& x)
02550 {
02551 assert( nvitrines() == x.nvitrines() );
02552 assert( nshelves() == x.nshelves() );
02553 assert( nbooks() == x.nbooks() );
02554 assert( npages() == x.npages() );
02555 assert( nrows() == x.nrows() );
02556 assert( ncols() == x.ncols() );
02557 ConstIterator6D xp = x.begin();
02558 Iterator6D p = begin();
02559 const Iterator6D ep = end();
02560 for ( ; p!=ep ; ++p,++xp )
02561 {
02562 *p /= *xp;
02563 }
02564 return *this;
02565 }
02566
02568 Tensor6View& Tensor6View::operator+=(const ConstTensor6View& x)
02569 {
02570 assert( nvitrines() == x.nvitrines() );
02571 assert( nshelves() == x.nshelves() );
02572 assert( nbooks() == x.nbooks() );
02573 assert( npages() == x.npages() );
02574 assert( nrows() == x.nrows() );
02575 assert( ncols() == x.ncols() );
02576 ConstIterator6D xp = x.begin();
02577 Iterator6D p = begin();
02578 const Iterator6D ep = end();
02579 for ( ; p!=ep ; ++p,++xp )
02580 {
02581 *p += *xp;
02582 }
02583 return *this;
02584 }
02585
02587 Tensor6View& Tensor6View::operator-=(const ConstTensor6View& x)
02588 {
02589 assert( nvitrines() == x.nvitrines() );
02590 assert( nshelves() == x.nshelves() );
02591 assert( nbooks() == x.nbooks() );
02592 assert( npages() == x.npages() );
02593 assert( nrows() == x.nrows() );
02594 assert( ncols() == x.ncols() );
02595 ConstIterator6D xp = x.begin();
02596 Iterator6D p = begin();
02597 const Iterator6D ep = end();
02598 for ( ; p!=ep ; ++p,++xp )
02599 {
02600 *p -= *xp;
02601 }
02602 return *this;
02603 }
02604
02606 Tensor6View::Tensor6View(const Tensor5View& a) :
02607 ConstTensor6View( a.mdata,
02608 Range(0,1,
02609 a.msr.mextent*
02610 a.mbr.mextent*
02611 a.mpr.mextent*
02612 a.mrr.mextent*
02613 a.mcr.mextent),
02614 a.msr,
02615 a.mbr,
02616 a.mpr,
02617 a.mrr,
02618 a.mcr )
02619 {
02620
02621 }
02622
02625 Tensor6View::Tensor6View() :
02626 ConstTensor6View()
02627 {
02628
02629 }
02630
02634 Tensor6View::Tensor6View(Numeric *data,
02635 const Range& v,
02636 const Range& s,
02637 const Range& b,
02638 const Range& p,
02639 const Range& r,
02640 const Range& c) :
02641 ConstTensor6View(data, v, s, b, p, r, c)
02642 {
02643
02644 }
02645
02668 Tensor6View::Tensor6View(Numeric *data,
02669 const Range& pv,
02670 const Range& ps,
02671 const Range& pb,
02672 const Range& pp,
02673 const Range& pr,
02674 const Range& pc,
02675 const Range& nv,
02676 const Range& ns,
02677 const Range& nb,
02678 const Range& np,
02679 const Range& nr,
02680 const Range& nc) :
02681 ConstTensor6View(data,pv,ps,pb,pp,pr,pc,nv,ns,nb,np,nr,nc)
02682 {
02683
02684 }
02685
02690 void copy(ConstIterator6D origin,
02691 const ConstIterator6D& end,
02692 Iterator6D target)
02693 {
02694 for ( ; origin!=end ; ++origin,++target )
02695 {
02696
02697
02698 copy(origin->begin(),
02699 origin->end(),
02700 target->begin());
02701 }
02702 }
02703
02705 void copy(Numeric x,
02706 Iterator6D target,
02707 const Iterator6D& end)
02708 {
02709 for ( ; target!=end ; ++target )
02710 {
02711
02712
02713 copy(x,target->begin(),target->end());
02714 }
02715 }
02716
02717
02718
02719
02720
02722 Tensor6::Tensor6() :
02723 Tensor6View::Tensor6View()
02724 {
02725
02726
02727
02728
02729 }
02730
02733 Tensor6::Tensor6(Index v, Index s, Index b,
02734 Index p, Index r, Index c) :
02735 Tensor6View( new Numeric[v*s*b*p*r*c],
02736 Range(0,v,s*b*p*r*c),
02737 Range(0,s,b*p*r*c),
02738 Range(0,b,p*r*c),
02739 Range(0,p,r*c),
02740 Range(0,r,c),
02741 Range(0,c))
02742 {
02743
02744 }
02745
02747 Tensor6::Tensor6(Index v, Index s, Index b,
02748 Index p, Index r, Index c, Numeric fill) :
02749 Tensor6View( new Numeric[v*s*b*p*r*c],
02750 Range(0,v,s*b*p*r*c),
02751 Range(0,s,b*p*r*c),
02752 Range(0,b,p*r*c),
02753 Range(0,p,r*c),
02754 Range(0,r,c),
02755 Range(0,c))
02756 {
02757
02758
02759 const Numeric *stop = mdata+v*s*b*p*r*c;
02760 for ( Numeric *x=mdata; x<stop; ++x )
02761 *x = fill;
02762 }
02763
02766 Tensor6::Tensor6(const ConstTensor6View& m) :
02767 Tensor6View( new Numeric[m.nvitrines()*m.nshelves()*m.nbooks()
02768 *m.npages()*m.nrows()*m.ncols()],
02769 Range( 0, m.nvitrines(), m.nshelves()*m.nbooks()*m.npages()*m.nrows()*m.ncols() ),
02770 Range( 0, m.nshelves(), m.nbooks()*m.npages()*m.nrows()*m.ncols() ),
02771 Range( 0, m.nbooks(), m.npages()*m.nrows()*m.ncols() ),
02772 Range( 0, m.npages(), m.nrows()*m.ncols() ),
02773 Range( 0, m.nrows(), m.ncols() ),
02774 Range( 0, m.ncols() ) )
02775 {
02776 copy(m.begin(),m.end(),begin());
02777 }
02778
02781 Tensor6::Tensor6(const Tensor6& m) :
02782 Tensor6View( new Numeric[m.nvitrines()*m.nshelves()*m.nbooks()
02783 *m.npages()*m.nrows()*m.ncols()],
02784 Range( 0, m.nvitrines(), m.nshelves()*m.nbooks()*m.npages()*m.nrows()*m.ncols() ),
02785 Range( 0, m.nshelves(), m.nbooks()*m.npages()*m.nrows()*m.ncols() ),
02786 Range( 0, m.nbooks(), m.npages()*m.nrows()*m.ncols() ),
02787 Range( 0, m.npages(), m.nrows()*m.ncols() ),
02788 Range( 0, m.nrows(), m.ncols() ),
02789 Range( 0, m.ncols() ) )
02790 {
02791
02792
02793
02794
02795
02796 copy(m.begin(),m.end(),begin());
02797 }
02798
02800
02823 Tensor6& Tensor6::operator=(const Tensor6& m)
02824 {
02825
02826
02827
02828 resize( m.mvr.mextent, m.msr.mextent, m.mbr.mextent,
02829 m.mpr.mextent, m.mrr.mextent, m.mcr.mextent );
02830 copy( m.begin(), m.end(), begin() );
02831 return *this;
02832 }
02833
02836 Tensor6& Tensor6::operator=(Numeric x)
02837 {
02838 copy( x, begin(), end() );
02839 return *this;
02840 }
02841
02845 void Tensor6::resize(Index v, Index s, Index b,
02846 Index p, Index r, Index c)
02847 {
02848 assert( 0<=v );
02849 assert( 0<=s );
02850 assert( 0<=b );
02851 assert( 0<=p );
02852 assert( 0<=r );
02853 assert( 0<=c );
02854
02855 if ( mvr.mextent!=v ||
02856 msr.mextent!=s ||
02857 mbr.mextent!=b ||
02858 mpr.mextent!=p ||
02859 mrr.mextent!=r ||
02860 mcr.mextent!=c )
02861 {
02862 delete[] mdata;
02863 mdata = new Numeric[v*s*b*p*r*c];
02864
02865 mvr.mstart = 0;
02866 mvr.mextent = v;
02867 mvr.mstride = s*b*p*r*c;
02868
02869 msr.mstart = 0;
02870 msr.mextent = s;
02871 msr.mstride = b*p*r*c;
02872
02873 mbr.mstart = 0;
02874 mbr.mextent = b;
02875 mbr.mstride = p*r*c;
02876
02877 mpr.mstart = 0;
02878 mpr.mextent = p;
02879 mpr.mstride = r*c;
02880
02881 mrr.mstart = 0;
02882 mrr.mextent = r;
02883 mrr.mstride = c;
02884
02885 mcr.mstart = 0;
02886 mcr.mextent = c;
02887 mcr.mstride = 1;
02888 }
02889 }
02890
02893 Tensor6::~Tensor6()
02894 {
02895
02896
02897 delete[] mdata;
02898 }
02899
02900
02916 void transform( Tensor6View y,
02917 double (&my_func)(double),
02918 ConstTensor6View x )
02919 {
02920
02921 assert( y.nvitrines() == x.nvitrines() );
02922 assert( y.nshelves() == x.nshelves() );
02923 assert( y.nbooks() == x.nbooks() );
02924 assert( y.npages() == x.npages() );
02925 assert( y.nrows() == x.nrows() );
02926 assert( y.ncols() == x.ncols() );
02927
02928 const ConstIterator6D xe = x.end();
02929 ConstIterator6D xi = x.begin();
02930 Iterator6D yi = y.begin();
02931 for ( ; xi!=xe; ++xi, ++yi )
02932 {
02933
02934
02935 transform(*yi,my_func,*xi);
02936 }
02937 }
02938
02940 Numeric max(const ConstTensor6View& x)
02941 {
02942 const ConstIterator6D xe = x.end();
02943 ConstIterator6D xi = x.begin();
02944
02945
02946 Numeric themax = max(*xi);
02947 ++xi;
02948
02949 for ( ; xi!=xe ; ++xi )
02950 {
02951
02952
02953 Numeric maxi = max(*xi);
02954 if ( maxi > themax )
02955 themax = maxi;
02956 }
02957
02958 return themax;
02959 }
02960
02962 Numeric min(const ConstTensor6View& x)
02963 {
02964 const ConstIterator6D xe = x.end();
02965 ConstIterator6D xi = x.begin();
02966
02967
02968 Numeric themin = min(*xi);
02969 ++xi;
02970
02971 for ( ; xi!=xe ; ++xi )
02972 {
02973
02974
02975 Numeric mini = min(*xi);
02976 if ( mini < themin )
02977 themin = mini;
02978 }
02979
02980 return themin;
02981 }
02982
02983
02985
02986 #ifndef NDEBUG
02987
03005 Numeric debug_tensor6view_get_elem (Tensor6View& tv, Index v, Index s, Index b,
03006 Index p, Index r, Index c)
03007 {
03008 return tv(v, s, b, p, r, c);
03009 }
03010
03011 #endif
03013