ARTS  2.2.66
matpackVII.h
Go to the documentation of this file.
1 
2 /* Copyright (C) 2001-2012 Stefan Buehler <sbuehler@ltu.se>
3 
4 This program is free software; you can redistribute it and/or modify it
5 under the terms of the GNU General Public License as published by the
6 Free Software Foundation; either version 2, or (at your option) any
7 later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 USA. */
18 
29 #ifndef matpackVII_h
30 #define matpackVII_h
31 
32 #include "matpackVI.h"
33 
36 class Iterator7D {
37 public:
38  // Constructors:
40  Iterator7D() : msv(), mstride(0) { /* Nothing to do here. */ }
41 
43  Iterator7D(const Tensor6View& x, Index stride) : msv(x), mstride(stride)
44  { /* Nothing to do here. */ }
45 
46  // Operators:
48  Iterator7D& operator++() { msv.mdata += mstride; return *this; }
49 
54  bool operator!=(const Iterator7D& other) const
55  { if ( msv.mdata +
56  msv.mvr.mstart +
57  msv.msr.mstart +
58  msv.mbr.mstart +
59  msv.mpr.mstart +
60  msv.mrr.mstart +
61  msv.mcr.mstart
62  !=
63  other.msv.mdata +
64  other.msv.mvr.mstart +
65  other.msv.msr.mstart +
66  other.msv.mbr.mstart +
67  other.msv.mpr.mstart +
68  other.msv.mrr.mstart +
69  other.msv.mcr.mstart )
70  return true;
71  else
72  return false;
73  }
74 
77  Tensor6View* operator->() { return &msv; }
78 
80  Tensor6View& operator*() { return msv; }
81 
82 private:
87 };
88 
91 public:
92  // Constructors:
94  ConstIterator7D() : msv(), mstride(0) { /* Nothing to do here. */ }
95 
98  : msv(x), mstride(stride)
99  { /* Nothing to do here. */ }
100 
101  // Operators:
103  ConstIterator7D& operator++() { msv.mdata += mstride; return *this; }
104 
109  bool operator!=(const ConstIterator7D& other) const
110  { if ( msv.mdata +
111  msv.mvr.mstart +
112  msv.msr.mstart +
113  msv.mbr.mstart +
114  msv.mpr.mstart +
115  msv.mrr.mstart +
116  msv.mcr.mstart
117  !=
118  other.msv.mdata +
119  other.msv.mvr.mstart +
120  other.msv.msr.mstart +
121  other.msv.mbr.mstart +
122  other.msv.mpr.mstart +
123  other.msv.mrr.mstart +
124  other.msv.mcr.mstart )
125  return true;
126  else
127  return false;
128  }
129 
132  const ConstTensor6View* operator->() const { return &msv; }
133 
135  const ConstTensor6View& operator*() const { return msv; }
136 
137 private:
142 };
143 
144 
145 // Declare class Tensor7:
146 class Tensor7;
147 
148 
163 public:
164  // Member functions:
165  Index nlibraries() const;
166  Index nvitrines() const;
167  Index nshelves() const;
168  Index nbooks() const;
169  Index npages() const;
170  Index nrows() const;
171  Index ncols() const;
172 
173  // Const index operators:
174 
175  // Result 7D (1 combination)
176  // -------
177  ConstTensor7View operator()( const Range& l,
178  const Range& v, const Range& s, const Range& b,
179  const Range& p, const Range& r, const Range& c) const;
180 
181  // Result 6D (7 combinations)
182  // ------|
183  ConstTensor6View operator()( const Range& l,
184  const Range& v, const Range& s, const Range& b,
185  const Range& p, const Range& r, Index c) const;
186  // -----|-
187  ConstTensor6View operator()( const Range& l,
188  const Range& v, const Range& s, const Range& b,
189  const Range& p, Index r, const Range& c) const;
190  // ----|--
191  ConstTensor6View operator()( const Range& l,
192  const Range& v, const Range& s, const Range& b,
193  Index p, const Range& r, const Range& c) const;
194  // ---|---
195  ConstTensor6View operator()( const Range& l,
196  const Range& v, const Range& s, Index b,
197  const Range& p, const Range& r, const Range& c) const;
198  // --|----
199  ConstTensor6View operator()( const Range& l,
200  const Range& v, Index s, const Range& b,
201  const Range& p, const Range& r, const Range& c) const;
202  // -|-----
203  ConstTensor6View operator()( const Range& l,
204  Index v, const Range& s, const Range& b,
205  const Range& p, const Range& r, const Range& c) const;
206  // |------
207  ConstTensor6View operator()( Index l,
208  const Range& v, const Range& s, const Range& b,
209  const Range& p, const Range& r, const Range& c) const;
210 
211  // Result 5D (6+5+4+3+2+1 = 21 combinations)
212  // -----||
213  ConstTensor5View operator()( const Range& l,
214  const Range& v, const Range& s, const Range& b,
215  const Range& p, Index r, Index c) const;
216  // ----|-|
217  ConstTensor5View operator()( const Range& l,
218  const Range& v, const Range& s, const Range& b,
219  Index p, const Range& r, Index c) const;
220  // ---|--|
221  ConstTensor5View operator()( const Range& l,
222  const Range& v, const Range& s, Index b,
223  const Range& p, const Range& r, Index c) const;
224  // --|---|
225  ConstTensor5View operator()( const Range& l,
226  const Range& v, Index s, const Range& b,
227  const Range& p, const Range& r, Index c) const;
228  // -|----|
229  ConstTensor5View operator()( const Range& l,
230  Index v, const Range& s, const Range& b,
231  const Range& p, const Range& r, Index c) const;
232  // |-----|
233  ConstTensor5View operator()( Index l,
234  const Range& v, const Range& s, const Range& b,
235  const Range& p, const Range& r, Index c) const;
236  // ----||-
237  ConstTensor5View operator()( const Range& l,
238  const Range& v, const Range& s, const Range& b,
239  Index p, Index r, const Range& c) const;
240  // ---|-|-
241  ConstTensor5View operator()( const Range& l,
242  const Range& v, const Range& s, Index b,
243  const Range& p, Index r, const Range& c) const;
244  // --|--|-
245  ConstTensor5View operator()( const Range& l,
246  const Range& v, Index s, const Range& b,
247  const Range& p, Index r, const Range& c) const;
248  // -|---|-
249  ConstTensor5View operator()( const Range& l,
250  Index v, const Range& s, const Range& b,
251  const Range& p, Index r, const Range& c) const;
252  // |----|-
253  ConstTensor5View operator()( Index l,
254  const Range& v, const Range& s, const Range& b,
255  const Range& p, Index r, const Range& c) const;
256  // ---||--
257  ConstTensor5View operator()( const Range& l,
258  const Range& v, const Range& s, Index b,
259  Index p, const Range& r, const Range& c) const;
260  // --|-|--
261  ConstTensor5View operator()( const Range& l,
262  const Range& v, Index s, const Range& b,
263  Index p, const Range& r, const Range& c) const;
264  // -|--|--
265  ConstTensor5View operator()( const Range& l,
266  Index v, const Range& s, const Range& b,
267  Index p, const Range& r, const Range& c) const;
268  // |---|--
269  ConstTensor5View operator()( Index l,
270  const Range& v, const Range& s, const Range& b,
271  Index p, const Range& r, const Range& c) const;
272  // --||---
273  ConstTensor5View operator()( const Range& l,
274  const Range& v, Index s, Index b,
275  const Range& p, const Range& r, const Range& c) const;
276  // -|-|---
277  ConstTensor5View operator()( const Range& l,
278  Index v, const Range& s, Index b,
279  const Range& p, const Range& r, const Range& c) const;
280  // |--|---
281  ConstTensor5View operator()( Index l,
282  const Range& v, const Range& s, Index b,
283  const Range& p, const Range& r, const Range& c) const;
284  // -||----
285  ConstTensor5View operator()( const Range& l,
286  Index v, Index s, const Range& b,
287  const Range& p, const Range& r, const Range& c) const;
288  // |-|----
289  ConstTensor5View operator()( Index l,
290  const Range& v, Index s, const Range& b,
291  const Range& p, const Range& r, const Range& c) const;
292  // ||-----
293  ConstTensor5View operator()( Index l,
294  Index v, const Range& s, const Range& b,
295  const Range& p, const Range& r, const Range& c) const;
296 
297  // Result 4D (5+4+3+2+1 +4+3+2+1 +3+2+1 +2+1 +1 = 35 combinations)
298  // ----|||
299  ConstTensor4View operator()( const Range& l,
300  const Range& v, const Range& s, const Range& b,
301  Index p, Index r, Index c) const;
302  // ---|-||
303  ConstTensor4View operator()( const Range& l,
304  const Range& v, const Range& s, Index b,
305  const Range& p, Index r, Index c) const;
306  // --|--||
307  ConstTensor4View operator()( const Range& l,
308  const Range& v, Index s, const Range& b,
309  const Range& p, Index r, Index c) const;
310  // -|---||
311  ConstTensor4View operator()( const Range& l,
312  Index v, const Range& s, const Range& b,
313  const Range& p, Index r, Index c) const;
314  // |----||
315  ConstTensor4View operator()( Index l,
316  const Range& v, const Range& s, const Range& b,
317  const Range& p, Index r, Index c) const;
318  // ---||-|
319  ConstTensor4View operator()( const Range& l,
320  const Range& v, const Range& s, Index b,
321  Index p, const Range& r, Index c) const;
322  // --|-|-|
323  ConstTensor4View operator()( const Range& l,
324  const Range& v, Index s, const Range& b,
325  Index p, const Range& r, Index c) const;
326  // -|--|-|
327  ConstTensor4View operator()( const Range& l,
328  Index v, const Range& s, const Range& b,
329  Index p, const Range& r, Index c) const;
330  // |---|-|
331  ConstTensor4View operator()( Index l,
332  const Range& v, const Range& s, const Range& b,
333  Index p, const Range& r, Index c) const;
334  // --||--|
335  ConstTensor4View operator()( const Range& l,
336  const Range& v, Index s, Index b,
337  const Range& p, const Range& r, Index c) const;
338  // -|-|--|
339  ConstTensor4View operator()( const Range& l,
340  Index v, const Range& s, Index b,
341  const Range& p, const Range& r, Index c) const;
342  // |--|--|
343  ConstTensor4View operator()( Index l,
344  const Range& v, const Range& s, Index b,
345  const Range& p, const Range& r, Index c) const;
346  // -||---|
347  ConstTensor4View operator()( const Range& l,
348  Index v, Index s, const Range& b,
349  const Range& p, const Range& r, Index c) const;
350  // |-|---|
351  ConstTensor4View operator()( Index l,
352  const Range& v, Index s, const Range& b,
353  const Range& p, const Range& r, Index c) const;
354  // ||----|
355  ConstTensor4View operator()( Index l,
356  Index v, const Range& s, const Range& b,
357  const Range& p, const Range& r, Index c) const;
358  // ---|||-
359  ConstTensor4View operator()( const Range& l,
360  const Range& v, const Range& s, Index b,
361  Index p, Index r, const Range& c) const;
362  // --|-||-
363  ConstTensor4View operator()( const Range& l,
364  const Range& v, Index s, const Range& b,
365  Index p, Index r, const Range& c) const;
366  // -|--||-
367  ConstTensor4View operator()( const Range& l,
368  Index v, const Range& s, const Range& b,
369  Index p, Index r, const Range& c) const;
370  // |---||-
371  ConstTensor4View operator()( Index l,
372  const Range& v, const Range& s, const Range& b,
373  Index p, Index r, const Range& c) const;
374  // --||-|-
375  ConstTensor4View operator()( const Range& l,
376  const Range& v, Index s, Index b,
377  const Range& p, Index r, const Range& c) const;
378  // -|-|-|-
379  ConstTensor4View operator()( const Range& l,
380  Index v, const Range& s, Index b,
381  const Range& p, Index r, const Range& c) const;
382  // |--|-|-
383  ConstTensor4View operator()( Index l,
384  const Range& v, const Range& s, Index b,
385  const Range& p, Index r, const Range& c) const;
386  // -||--|-
387  ConstTensor4View operator()( const Range& l,
388  Index v, Index s, const Range& b,
389  const Range& p, Index r, const Range& c) const;
390  // |-|--|-
391  ConstTensor4View operator()( Index l,
392  const Range& v, Index s, const Range& b,
393  const Range& p, Index r, const Range& c) const;
394  // ||---|-
395  ConstTensor4View operator()( Index l,
396  Index v, const Range& s, const Range& b,
397  const Range& p, Index r, const Range& c) const;
398  // --|||--
399  ConstTensor4View operator()( const Range& l,
400  const Range& v, Index s, Index b,
401  Index p, const Range& r, const Range& c) const;
402  // -|-||--
403  ConstTensor4View operator()( const Range& l,
404  Index v, const Range& s, Index b,
405  Index p, const Range& r, const Range& c) const;
406  // |--||--
407  ConstTensor4View operator()( Index l,
408  const Range& v, const Range& s, Index b,
409  Index p, const Range& r, const Range& c) const;
410  // -||-|--
411  ConstTensor4View operator()( const Range& l,
412  Index v, Index s, const Range& b,
413  Index p, const Range& r, const Range& c) const;
414  // |-|-|--
415  ConstTensor4View operator()( Index l,
416  const Range& v, Index s, const Range& b,
417  Index p, const Range& r, const Range& c) const;
418  // ||--|--
419  ConstTensor4View operator()( Index l,
420  Index v, const Range& s, const Range& b,
421  Index p, const Range& r, const Range& c) const;
422  // -|||---
423  ConstTensor4View operator()( const Range& l,
424  Index v, Index s, Index b,
425  const Range& p, const Range& r, const Range& c) const;
426  // |-||---
427  ConstTensor4View operator()( Index l,
428  const Range& v, Index s, Index b,
429  const Range& p, const Range& r, const Range& c) const;
430  // ||-|---
431  ConstTensor4View operator()( Index l,
432  Index v, const Range& s, Index b,
433  const Range& p, const Range& r, const Range& c) const;
434  // |||----
435  ConstTensor4View operator()( Index l,
436  Index v, Index s, const Range& b,
437  const Range& p, const Range& r, const Range& c) const;
438 
439  // Result 3D (5+4+3+2+1 +4+3+2+1 +3+2+1 +2+1 +1 = 35 combinations)
440  // ||||---
441  ConstTensor3View operator()( Index l,
442  Index v, Index s, Index b,
443  const Range& p, const Range& r, const Range& c) const;
444  // |||-|--
445  ConstTensor3View operator()( Index l,
446  Index v, Index s, const Range& b,
447  Index p, const Range& r, const Range& c) const;
448  // ||-||--
449  ConstTensor3View operator()( Index l,
450  Index v, const Range& s, Index b,
451  Index p, const Range& r, const Range& c) const;
452  // |-|||--
453  ConstTensor3View operator()( Index l,
454  const Range& v, Index s, Index b,
455  Index p, const Range& r, const Range& c) const;
456  // -||||--
457  ConstTensor3View operator()( const Range& l,
458  Index v, Index s, Index b,
459  Index p, const Range& r, const Range& c) const;
460  // |||--|-
461  ConstTensor3View operator()( Index l,
462  Index v, Index s, const Range& b,
463  const Range& p, Index r, const Range& c) const;
464  // ||-|-|-
465  ConstTensor3View operator()( Index l,
466  Index v, const Range& s, Index b,
467  const Range& p, Index r, const Range& c) const;
468  // |-||-|-
469  ConstTensor3View operator()( Index l,
470  const Range& v, Index s, Index b,
471  const Range& p, Index r, const Range& c) const;
472  // -|||-|-
473  ConstTensor3View operator()( const Range& l,
474  Index v, Index s, Index b,
475  const Range& p, Index r, const Range& c) const;
476  // ||--||-
477  ConstTensor3View operator()( Index l,
478  Index v, const Range& s, const Range& b,
479  Index p, Index r, const Range& c) const;
480  // |-|-||-
481  ConstTensor3View operator()( Index l,
482  const Range& v, Index s, const Range& b,
483  Index p, Index r, const Range& c) const;
484  // -||-||-
485  ConstTensor3View operator()( const Range& l,
486  Index v, Index s, const Range& b,
487  Index p, Index r, const Range& c) const;
488  // |--|||-
489  ConstTensor3View operator()( Index l,
490  const Range& v, const Range& s, Index b,
491  Index p, Index r, const Range& c) const;
492  // -|-|||-
493  ConstTensor3View operator()( const Range& l,
494  Index v, const Range& s, Index b,
495  Index p, Index r, const Range& c) const;
496  // --||||-
497  ConstTensor3View operator()( const Range& l,
498  const Range& v, Index s, Index b,
499  Index p, Index r, const Range& c) const;
500  // |||---|
501  ConstTensor3View operator()( Index l,
502  Index v, Index s, const Range& b,
503  const Range& p, const Range& r, Index c) const;
504  // ||-|--|
505  ConstTensor3View operator()( Index l,
506  Index v, const Range& s, Index b,
507  const Range& p, const Range& r, Index c) const;
508  // |-||--|
509  ConstTensor3View operator()( Index l,
510  const Range& v, Index s, Index b,
511  const Range& p, const Range& r, Index c) const;
512  // -|||--|
513  ConstTensor3View operator()( const Range& l,
514  Index v, Index s, Index b,
515  const Range& p, const Range& r, Index c) const;
516  // ||--|-|
517  ConstTensor3View operator()( Index l,
518  Index v, const Range& s, const Range& b,
519  Index p, const Range& r, Index c) const;
520  // |-|-|-|
521  ConstTensor3View operator()( Index l,
522  const Range& v, Index s, const Range& b,
523  Index p, const Range& r, Index c) const;
524  // -||-|-|
525  ConstTensor3View operator()( const Range& l,
526  Index v, Index s, const Range& b,
527  Index p, const Range& r, Index c) const;
528  // |--||-|
529  ConstTensor3View operator()( Index l,
530  const Range& v, const Range& s, Index b,
531  Index p, const Range& r, Index c) const;
532  // -|-||-|
533  ConstTensor3View operator()( const Range& l,
534  Index v, const Range& s, Index b,
535  Index p, const Range& r, Index c) const;
536  // --|||-|
537  ConstTensor3View operator()( const Range& l,
538  const Range& v, Index s, Index b,
539  Index p, const Range& r, Index c) const;
540  // ||---||
541  ConstTensor3View operator()( Index l,
542  Index v, const Range& s, const Range& b,
543  const Range& p, Index r, Index c) const;
544  // |-|--||
545  ConstTensor3View operator()( Index l,
546  const Range& v, Index s, const Range& b,
547  const Range& p, Index r, Index c) const;
548  // -||--||
549  ConstTensor3View operator()( const Range& l,
550  Index v, Index s, const Range& b,
551  const Range& p, Index r, Index c) const;
552  // |--|-||
553  ConstTensor3View operator()( Index l,
554  const Range& v, const Range& s, Index b,
555  const Range& p, Index r, Index c) const;
556  // -|-|-||
557  ConstTensor3View operator()( const Range& l,
558  Index v, const Range& s, Index b,
559  const Range& p, Index r, Index c) const;
560  // --||-||
561  ConstTensor3View operator()( const Range& l,
562  const Range& v, Index s, Index b,
563  const Range& p, Index r, Index c) const;
564  // |---|||
565  ConstTensor3View operator()( Index l,
566  const Range& v, const Range& s, const Range& b,
567  Index p, Index r, Index c) const;
568  // -|--|||
569  ConstTensor3View operator()( const Range& l,
570  Index v, const Range& s, const Range& b,
571  Index p, Index r, Index c) const;
572  // --|-|||
573  ConstTensor3View operator()( const Range& l,
574  const Range& v, Index s, const Range& b,
575  Index p, Index r, Index c) const;
576  // ---||||
577  ConstTensor3View operator()( const Range& l,
578  const Range& v, const Range& s, Index b,
579  Index p, Index r, Index c) const;
580 
581  // Result 2D (6+5+4+3+2+1 = 21 combinations)
582  // |||||--
583  ConstMatrixView operator()( Index l,
584  Index v, Index s, Index b,
585  Index p, const Range& r, const Range& c) const;
586  // ||||-|-
587  ConstMatrixView operator()( Index l,
588  Index v, Index s, Index b,
589  const Range& p, Index r, const Range& c) const;
590  // |||-||-
591  ConstMatrixView operator()( Index l,
592  Index v, Index s, const Range& b,
593  Index p, Index r, const Range& c) const;
594  // ||-|||-
595  ConstMatrixView operator()( Index l,
596  Index v, const Range& s, Index b,
597  Index p, Index r, const Range& c) const;
598  // |-||||-
599  ConstMatrixView operator()( Index l,
600  const Range& v, Index s, Index b,
601  Index p, Index r, const Range& c) const;
602  // -|||||-
603  ConstMatrixView operator()( const Range& l,
604  Index v, Index s, Index b,
605  Index p, Index r, const Range& c) const;
606  // ||||--|
607  ConstMatrixView operator()( Index l,
608  Index v, Index s, Index b,
609  const Range& p, const Range& r, Index c) const;
610  // |||-|-|
611  ConstMatrixView operator()( Index l,
612  Index v, Index s, const Range& b,
613  Index p, const Range& r, Index c) const;
614  // ||-||-|
615  ConstMatrixView operator()( Index l,
616  Index v, const Range& s, Index b,
617  Index p, const Range& r, Index c) const;
618  // |-|||-|
619  ConstMatrixView operator()( Index l,
620  const Range& v, Index s, Index b,
621  Index p, const Range& r, Index c) const;
622  // -||||-|
623  ConstMatrixView operator()( const Range& l,
624  Index v, Index s, Index b,
625  Index p, const Range& r, Index c) const;
626  // |||--||
627  ConstMatrixView operator()( Index l,
628  Index v, Index s, const Range& b,
629  const Range& p, Index r, Index c) const;
630  // ||-|-||
631  ConstMatrixView operator()( Index l,
632  Index v, const Range& s, Index b,
633  const Range& p, Index r, Index c) const;
634  // |-||-||
635  ConstMatrixView operator()( Index l,
636  const Range& v, Index s, Index b,
637  const Range& p, Index r, Index c) const;
638  // -|||-||
639  ConstMatrixView operator()( const Range& l,
640  Index v, Index s, Index b,
641  const Range& p, Index r, Index c) const;
642  // ||--|||
643  ConstMatrixView operator()( Index l,
644  Index v, const Range& s, const Range& b,
645  Index p, Index r, Index c) const;
646  // |-|-|||
647  ConstMatrixView operator()( Index l,
648  const Range& v, Index s, const Range& b,
649  Index p, Index r, Index c) const;
650  // -||-|||
651  ConstMatrixView operator()( const Range& l,
652  Index v, Index s, const Range& b,
653  Index p, Index r, Index c) const;
654  // |--||||
655  ConstMatrixView operator()( Index l,
656  const Range& v, const Range& s, Index b,
657  Index p, Index r, Index c) const;
658  // -|-||||
659  ConstMatrixView operator()( const Range& l,
660  Index v, const Range& s, Index b,
661  Index p, Index r, Index c) const;
662  // --|||||
663  ConstMatrixView operator()( const Range& l,
664  const Range& v, Index s, Index b,
665  Index p, Index r, Index c) const;
666 
667  // Result 1D (7 combinations)
668  // ||||||-
669  ConstVectorView operator()( Index l,
670  Index v, Index s, Index b,
671  Index p, Index r, const Range& c) const;
672  // |||||-|
673  ConstVectorView operator()( Index l,
674  Index v, Index s, Index b,
675  Index p, const Range& r, Index c) const;
676  // ||||-||
677  ConstVectorView operator()( Index l,
678  Index v, Index s, Index b,
679  const Range& p, Index r, Index c) const;
680  // |||-|||
681  ConstVectorView operator()( Index l,
682  Index v, Index s, const Range& b,
683  Index p, Index r, Index c) const;
684  // ||-||||
685  ConstVectorView operator()( Index l,
686  Index v, const Range& s, Index b,
687  Index p, Index r, Index c) const;
688  // |-|||||
689  ConstVectorView operator()( Index l,
690  const Range& v, Index s, Index b,
691  Index p, Index r, Index c) const;
692  // -||||||
693  ConstVectorView operator()( const Range& l,
694  Index v, Index s, Index b,
695  Index p, Index r, Index c) const;
696 
697  // Result scalar (1 combination)
698  // |||||||
699  Numeric operator() ( Index l,
700  Index v, Index s, Index b,
701  Index p, Index r, Index c) const
702  { CHECK(l);
703  CHECK(v);
704  CHECK(s);
705  CHECK(b);
706  CHECK(p);
707  CHECK(r);
708  CHECK(c);
709  return get(l, v, s, b, p, r, c);
710  }
711 
713  Numeric get( Index l,
714  Index v, Index s, Index b,
715  Index p, Index r, Index c) const
716  {
717  return *(mdata + OFFSET(l) +
718  OFFSET(v) + OFFSET(s) + OFFSET(b) +
719  OFFSET(p) + OFFSET(r) + OFFSET(c) );
720  }
721 
722 
723  // Functions returning iterators:
724  ConstIterator7D begin() const;
725  ConstIterator7D end() const;
726 
728  virtual ~ConstTensor7View() {}
729 
730  // Friends:
731  friend class Tensor7View;
732 
733  // Special constructor to make a Tensor7 view of a Tensor6.
735 
736 protected:
737  // Constructors:
740  const Range& l,
741  const Range& v, const Range& s, const Range& b,
742  const Range& p, const Range& r, const Range& c);
744  const Range& pl,
745  const Range& pv, const Range& ps, const Range& pb,
746  const Range& pp, const Range& pr, const Range& pc,
747  const Range& nl,
748  const Range& nv, const Range& ns, const Range& nb,
749  const Range& np, const Range& nr, const Range& nc);
750 
751  // Data members:
752  // -------------
769 };
770 
781 public:
782 
783  // Const index operators:
784 
785  // Result 7D (1 combination)
786  // -------
787  ConstTensor7View operator()( const Range& l,
788  const Range& v, const Range& s, const Range& b,
789  const Range& p, const Range& r, const Range& c) const;
790 
791  // Result 6D (7 combinations)
792  // ------|
793  ConstTensor6View operator()( const Range& l,
794  const Range& v, const Range& s, const Range& b,
795  const Range& p, const Range& r, Index c) const;
796  // -----|-
797  ConstTensor6View operator()( const Range& l,
798  const Range& v, const Range& s, const Range& b,
799  const Range& p, Index r, const Range& c) const;
800  // ----|--
801  ConstTensor6View operator()( const Range& l,
802  const Range& v, const Range& s, const Range& b,
803  Index p, const Range& r, const Range& c) const;
804  // ---|---
805  ConstTensor6View operator()( const Range& l,
806  const Range& v, const Range& s, Index b,
807  const Range& p, const Range& r, const Range& c) const;
808  // --|----
809  ConstTensor6View operator()( const Range& l,
810  const Range& v, Index s, const Range& b,
811  const Range& p, const Range& r, const Range& c) const;
812  // -|-----
813  ConstTensor6View operator()( const Range& l,
814  Index v, const Range& s, const Range& b,
815  const Range& p, const Range& r, const Range& c) const;
816  // |------
817  ConstTensor6View operator()( Index l,
818  const Range& v, const Range& s, const Range& b,
819  const Range& p, const Range& r, const Range& c) const;
820 
821  // Result 5D (6+5+4+3+2+1 = 21 combinations)
822  // -----||
823  ConstTensor5View operator()( const Range& l,
824  const Range& v, const Range& s, const Range& b,
825  const Range& p, Index r, Index c) const;
826  // ----|-|
827  ConstTensor5View operator()( const Range& l,
828  const Range& v, const Range& s, const Range& b,
829  Index p, const Range& r, Index c) const;
830  // ---|--|
831  ConstTensor5View operator()( const Range& l,
832  const Range& v, const Range& s, Index b,
833  const Range& p, const Range& r, Index c) const;
834  // --|---|
835  ConstTensor5View operator()( const Range& l,
836  const Range& v, Index s, const Range& b,
837  const Range& p, const Range& r, Index c) const;
838  // -|----|
839  ConstTensor5View operator()( const Range& l,
840  Index v, const Range& s, const Range& b,
841  const Range& p, const Range& r, Index c) const;
842  // |-----|
843  ConstTensor5View operator()( Index l,
844  const Range& v, const Range& s, const Range& b,
845  const Range& p, const Range& r, Index c) const;
846  // ----||-
847  ConstTensor5View operator()( const Range& l,
848  const Range& v, const Range& s, const Range& b,
849  Index p, Index r, const Range& c) const;
850  // ---|-|-
851  ConstTensor5View operator()( const Range& l,
852  const Range& v, const Range& s, Index b,
853  const Range& p, Index r, const Range& c) const;
854  // --|--|-
855  ConstTensor5View operator()( const Range& l,
856  const Range& v, Index s, const Range& b,
857  const Range& p, Index r, const Range& c) const;
858  // -|---|-
859  ConstTensor5View operator()( const Range& l,
860  Index v, const Range& s, const Range& b,
861  const Range& p, Index r, const Range& c) const;
862  // |----|-
863  ConstTensor5View operator()( Index l,
864  const Range& v, const Range& s, const Range& b,
865  const Range& p, Index r, const Range& c) const;
866  // ---||--
867  ConstTensor5View operator()( const Range& l,
868  const Range& v, const Range& s, Index b,
869  Index p, const Range& r, const Range& c) const;
870  // --|-|--
871  ConstTensor5View operator()( const Range& l,
872  const Range& v, Index s, const Range& b,
873  Index p, const Range& r, const Range& c) const;
874  // -|--|--
875  ConstTensor5View operator()( const Range& l,
876  Index v, const Range& s, const Range& b,
877  Index p, const Range& r, const Range& c) const;
878  // |---|--
879  ConstTensor5View operator()( Index l,
880  const Range& v, const Range& s, const Range& b,
881  Index p, const Range& r, const Range& c) const;
882  // --||---
883  ConstTensor5View operator()( const Range& l,
884  const Range& v, Index s, Index b,
885  const Range& p, const Range& r, const Range& c) const;
886  // -|-|---
887  ConstTensor5View operator()( const Range& l,
888  Index v, const Range& s, Index b,
889  const Range& p, const Range& r, const Range& c) const;
890  // |--|---
891  ConstTensor5View operator()( Index l,
892  const Range& v, const Range& s, Index b,
893  const Range& p, const Range& r, const Range& c) const;
894  // -||----
895  ConstTensor5View operator()( const Range& l,
896  Index v, Index s, const Range& b,
897  const Range& p, const Range& r, const Range& c) const;
898  // |-|----
899  ConstTensor5View operator()( Index l,
900  const Range& v, Index s, const Range& b,
901  const Range& p, const Range& r, const Range& c) const;
902  // ||-----
903  ConstTensor5View operator()( Index l,
904  Index v, const Range& s, const Range& b,
905  const Range& p, const Range& r, const Range& c) const;
906 
907  // Result 4D (5+4+3+2+1 +4+3+2+1 +3+2+1 +2+1 +1 = 35 combinations)
908  // ----|||
909  ConstTensor4View operator()( const Range& l,
910  const Range& v, const Range& s, const Range& b,
911  Index p, Index r, Index c) const;
912  // ---|-||
913  ConstTensor4View operator()( const Range& l,
914  const Range& v, const Range& s, Index b,
915  const Range& p, Index r, Index c) const;
916  // --|--||
917  ConstTensor4View operator()( const Range& l,
918  const Range& v, Index s, const Range& b,
919  const Range& p, Index r, Index c) const;
920  // -|---||
921  ConstTensor4View operator()( const Range& l,
922  Index v, const Range& s, const Range& b,
923  const Range& p, Index r, Index c) const;
924  // |----||
925  ConstTensor4View operator()( Index l,
926  const Range& v, const Range& s, const Range& b,
927  const Range& p, Index r, Index c) const;
928  // ---||-|
929  ConstTensor4View operator()( const Range& l,
930  const Range& v, const Range& s, Index b,
931  Index p, const Range& r, Index c) const;
932  // --|-|-|
933  ConstTensor4View operator()( const Range& l,
934  const Range& v, Index s, const Range& b,
935  Index p, const Range& r, Index c) const;
936  // -|--|-|
937  ConstTensor4View operator()( const Range& l,
938  Index v, const Range& s, const Range& b,
939  Index p, const Range& r, Index c) const;
940  // |---|-|
941  ConstTensor4View operator()( Index l,
942  const Range& v, const Range& s, const Range& b,
943  Index p, const Range& r, Index c) const;
944  // --||--|
945  ConstTensor4View operator()( const Range& l,
946  const Range& v, Index s, Index b,
947  const Range& p, const Range& r, Index c) const;
948  // -|-|--|
949  ConstTensor4View operator()( const Range& l,
950  Index v, const Range& s, Index b,
951  const Range& p, const Range& r, Index c) const;
952  // |--|--|
953  ConstTensor4View operator()( Index l,
954  const Range& v, const Range& s, Index b,
955  const Range& p, const Range& r, Index c) const;
956  // -||---|
957  ConstTensor4View operator()( const Range& l,
958  Index v, Index s, const Range& b,
959  const Range& p, const Range& r, Index c) const;
960  // |-|---|
961  ConstTensor4View operator()( Index l,
962  const Range& v, Index s, const Range& b,
963  const Range& p, const Range& r, Index c) const;
964  // ||----|
965  ConstTensor4View operator()( Index l,
966  Index v, const Range& s, const Range& b,
967  const Range& p, const Range& r, Index c) const;
968  // ---|||-
969  ConstTensor4View operator()( const Range& l,
970  const Range& v, const Range& s, Index b,
971  Index p, Index r, const Range& c) const;
972  // --|-||-
973  ConstTensor4View operator()( const Range& l,
974  const Range& v, Index s, const Range& b,
975  Index p, Index r, const Range& c) const;
976  // -|--||-
977  ConstTensor4View operator()( const Range& l,
978  Index v, const Range& s, const Range& b,
979  Index p, Index r, const Range& c) const;
980  // |---||-
981  ConstTensor4View operator()( Index l,
982  const Range& v, const Range& s, const Range& b,
983  Index p, Index r, const Range& c) const;
984  // --||-|-
985  ConstTensor4View operator()( const Range& l,
986  const Range& v, Index s, Index b,
987  const Range& p, Index r, const Range& c) const;
988  // -|-|-|-
989  ConstTensor4View operator()( const Range& l,
990  Index v, const Range& s, Index b,
991  const Range& p, Index r, const Range& c) const;
992  // |--|-|-
993  ConstTensor4View operator()( Index l,
994  const Range& v, const Range& s, Index b,
995  const Range& p, Index r, const Range& c) const;
996  // -||--|-
997  ConstTensor4View operator()( const Range& l,
998  Index v, Index s, const Range& b,
999  const Range& p, Index r, const Range& c) const;
1000  // |-|--|-
1001  ConstTensor4View operator()( Index l,
1002  const Range& v, Index s, const Range& b,
1003  const Range& p, Index r, const Range& c) const;
1004  // ||---|-
1005  ConstTensor4View operator()( Index l,
1006  Index v, const Range& s, const Range& b,
1007  const Range& p, Index r, const Range& c) const;
1008  // --|||--
1009  ConstTensor4View operator()( const Range& l,
1010  const Range& v, Index s, Index b,
1011  Index p, const Range& r, const Range& c) const;
1012  // -|-||--
1013  ConstTensor4View operator()( const Range& l,
1014  Index v, const Range& s, Index b,
1015  Index p, const Range& r, const Range& c) const;
1016  // |--||--
1017  ConstTensor4View operator()( Index l,
1018  const Range& v, const Range& s, Index b,
1019  Index p, const Range& r, const Range& c) const;
1020  // -||-|--
1021  ConstTensor4View operator()( const Range& l,
1022  Index v, Index s, const Range& b,
1023  Index p, const Range& r, const Range& c) const;
1024  // |-|-|--
1025  ConstTensor4View operator()( Index l,
1026  const Range& v, Index s, const Range& b,
1027  Index p, const Range& r, const Range& c) const;
1028  // ||--|--
1029  ConstTensor4View operator()( Index l,
1030  Index v, const Range& s, const Range& b,
1031  Index p, const Range& r, const Range& c) const;
1032  // -|||---
1033  ConstTensor4View operator()( const Range& l,
1034  Index v, Index s, Index b,
1035  const Range& p, const Range& r, const Range& c) const;
1036  // |-||---
1037  ConstTensor4View operator()( Index l,
1038  const Range& v, Index s, Index b,
1039  const Range& p, const Range& r, const Range& c) const;
1040  // ||-|---
1041  ConstTensor4View operator()( Index l,
1042  Index v, const Range& s, Index b,
1043  const Range& p, const Range& r, const Range& c) const;
1044  // |||----
1045  ConstTensor4View operator()( Index l,
1046  Index v, Index s, const Range& b,
1047  const Range& p, const Range& r, const Range& c) const;
1048 
1049  // Result 3D (5+4+3+2+1 +4+3+2+1 +3+2+1 +2+1 +1 = 35 combinations)
1050  // ||||---
1051  ConstTensor3View operator()( Index l,
1052  Index v, Index s, Index b,
1053  const Range& p, const Range& r, const Range& c) const;
1054  // |||-|--
1055  ConstTensor3View operator()( Index l,
1056  Index v, Index s, const Range& b,
1057  Index p, const Range& r, const Range& c) const;
1058  // ||-||--
1059  ConstTensor3View operator()( Index l,
1060  Index v, const Range& s, Index b,
1061  Index p, const Range& r, const Range& c) const;
1062  // |-|||--
1063  ConstTensor3View operator()( Index l,
1064  const Range& v, Index s, Index b,
1065  Index p, const Range& r, const Range& c) const;
1066  // -||||--
1067  ConstTensor3View operator()( const Range& l,
1068  Index v, Index s, Index b,
1069  Index p, const Range& r, const Range& c) const;
1070  // |||--|-
1071  ConstTensor3View operator()( Index l,
1072  Index v, Index s, const Range& b,
1073  const Range& p, Index r, const Range& c) const;
1074  // ||-|-|-
1075  ConstTensor3View operator()( Index l,
1076  Index v, const Range& s, Index b,
1077  const Range& p, Index r, const Range& c) const;
1078  // |-||-|-
1079  ConstTensor3View operator()( Index l,
1080  const Range& v, Index s, Index b,
1081  const Range& p, Index r, const Range& c) const;
1082  // -|||-|-
1083  ConstTensor3View operator()( const Range& l,
1084  Index v, Index s, Index b,
1085  const Range& p, Index r, const Range& c) const;
1086  // ||--||-
1087  ConstTensor3View operator()( Index l,
1088  Index v, const Range& s, const Range& b,
1089  Index p, Index r, const Range& c) const;
1090  // |-|-||-
1091  ConstTensor3View operator()( Index l,
1092  const Range& v, Index s, const Range& b,
1093  Index p, Index r, const Range& c) const;
1094  // -||-||-
1095  ConstTensor3View operator()( const Range& l,
1096  Index v, Index s, const Range& b,
1097  Index p, Index r, const Range& c) const;
1098  // |--|||-
1099  ConstTensor3View operator()( Index l,
1100  const Range& v, const Range& s, Index b,
1101  Index p, Index r, const Range& c) const;
1102  // -|-|||-
1103  ConstTensor3View operator()( const Range& l,
1104  Index v, const Range& s, Index b,
1105  Index p, Index r, const Range& c) const;
1106  // --||||-
1107  ConstTensor3View operator()( const Range& l,
1108  const Range& v, Index s, Index b,
1109  Index p, Index r, const Range& c) const;
1110  // |||---|
1111  ConstTensor3View operator()( Index l,
1112  Index v, Index s, const Range& b,
1113  const Range& p, const Range& r, Index c) const;
1114  // ||-|--|
1115  ConstTensor3View operator()( Index l,
1116  Index v, const Range& s, Index b,
1117  const Range& p, const Range& r, Index c) const;
1118  // |-||--|
1119  ConstTensor3View operator()( Index l,
1120  const Range& v, Index s, Index b,
1121  const Range& p, const Range& r, Index c) const;
1122  // -|||--|
1123  ConstTensor3View operator()( const Range& l,
1124  Index v, Index s, Index b,
1125  const Range& p, const Range& r, Index c) const;
1126  // ||--|-|
1127  ConstTensor3View operator()( Index l,
1128  Index v, const Range& s, const Range& b,
1129  Index p, const Range& r, Index c) const;
1130  // |-|-|-|
1131  ConstTensor3View operator()( Index l,
1132  const Range& v, Index s, const Range& b,
1133  Index p, const Range& r, Index c) const;
1134  // -||-|-|
1135  ConstTensor3View operator()( const Range& l,
1136  Index v, Index s, const Range& b,
1137  Index p, const Range& r, Index c) const;
1138  // |--||-|
1139  ConstTensor3View operator()( Index l,
1140  const Range& v, const Range& s, Index b,
1141  Index p, const Range& r, Index c) const;
1142  // -|-||-|
1143  ConstTensor3View operator()( const Range& l,
1144  Index v, const Range& s, Index b,
1145  Index p, const Range& r, Index c) const;
1146  // --|||-|
1147  ConstTensor3View operator()( const Range& l,
1148  const Range& v, Index s, Index b,
1149  Index p, const Range& r, Index c) const;
1150  // ||---||
1151  ConstTensor3View operator()( Index l,
1152  Index v, const Range& s, const Range& b,
1153  const Range& p, Index r, Index c) const;
1154  // |-|--||
1155  ConstTensor3View operator()( Index l,
1156  const Range& v, Index s, const Range& b,
1157  const Range& p, Index r, Index c) const;
1158  // -||--||
1159  ConstTensor3View operator()( const Range& l,
1160  Index v, Index s, const Range& b,
1161  const Range& p, Index r, Index c) const;
1162  // |--|-||
1163  ConstTensor3View operator()( Index l,
1164  const Range& v, const Range& s, Index b,
1165  const Range& p, Index r, Index c) const;
1166  // -|-|-||
1167  ConstTensor3View operator()( const Range& l,
1168  Index v, const Range& s, Index b,
1169  const Range& p, Index r, Index c) const;
1170  // --||-||
1171  ConstTensor3View operator()( const Range& l,
1172  const Range& v, Index s, Index b,
1173  const Range& p, Index r, Index c) const;
1174  // |---|||
1175  ConstTensor3View operator()( Index l,
1176  const Range& v, const Range& s, const Range& b,
1177  Index p, Index r, Index c) const;
1178  // -|--|||
1179  ConstTensor3View operator()( const Range& l,
1180  Index v, const Range& s, const Range& b,
1181  Index p, Index r, Index c) const;
1182  // --|-|||
1183  ConstTensor3View operator()( const Range& l,
1184  const Range& v, Index s, const Range& b,
1185  Index p, Index r, Index c) const;
1186  // ---||||
1187  ConstTensor3View operator()( const Range& l,
1188  const Range& v, const Range& s, Index b,
1189  Index p, Index r, Index c) const;
1190 
1191  // Result 2D (6+5+4+3+2+1 = 21 combinations)
1192  // |||||--
1193  ConstMatrixView operator()( Index l,
1194  Index v, Index s, Index b,
1195  Index p, const Range& r, const Range& c) const;
1196  // ||||-|-
1197  ConstMatrixView operator()( Index l,
1198  Index v, Index s, Index b,
1199  const Range& p, Index r, const Range& c) const;
1200  // |||-||-
1201  ConstMatrixView operator()( Index l,
1202  Index v, Index s, const Range& b,
1203  Index p, Index r, const Range& c) const;
1204  // ||-|||-
1205  ConstMatrixView operator()( Index l,
1206  Index v, const Range& s, Index b,
1207  Index p, Index r, const Range& c) const;
1208  // |-||||-
1209  ConstMatrixView operator()( Index l,
1210  const Range& v, Index s, Index b,
1211  Index p, Index r, const Range& c) const;
1212  // -|||||-
1213  ConstMatrixView operator()( const Range& l,
1214  Index v, Index s, Index b,
1215  Index p, Index r, const Range& c) const;
1216  // ||||--|
1217  ConstMatrixView operator()( Index l,
1218  Index v, Index s, Index b,
1219  const Range& p, const Range& r, Index c) const;
1220  // |||-|-|
1221  ConstMatrixView operator()( Index l,
1222  Index v, Index s, const Range& b,
1223  Index p, const Range& r, Index c) const;
1224  // ||-||-|
1225  ConstMatrixView operator()( Index l,
1226  Index v, const Range& s, Index b,
1227  Index p, const Range& r, Index c) const;
1228  // |-|||-|
1229  ConstMatrixView operator()( Index l,
1230  const Range& v, Index s, Index b,
1231  Index p, const Range& r, Index c) const;
1232  // -||||-|
1233  ConstMatrixView operator()( const Range& l,
1234  Index v, Index s, Index b,
1235  Index p, const Range& r, Index c) const;
1236  // |||--||
1237  ConstMatrixView operator()( Index l,
1238  Index v, Index s, const Range& b,
1239  const Range& p, Index r, Index c) const;
1240  // ||-|-||
1241  ConstMatrixView operator()( Index l,
1242  Index v, const Range& s, Index b,
1243  const Range& p, Index r, Index c) const;
1244  // |-||-||
1245  ConstMatrixView operator()( Index l,
1246  const Range& v, Index s, Index b,
1247  const Range& p, Index r, Index c) const;
1248  // -|||-||
1249  ConstMatrixView operator()( const Range& l,
1250  Index v, Index s, Index b,
1251  const Range& p, Index r, Index c) const;
1252  // ||--|||
1253  ConstMatrixView operator()( Index l,
1254  Index v, const Range& s, const Range& b,
1255  Index p, Index r, Index c) const;
1256  // |-|-|||
1257  ConstMatrixView operator()( Index l,
1258  const Range& v, Index s, const Range& b,
1259  Index p, Index r, Index c) const;
1260  // -||-|||
1261  ConstMatrixView operator()( const Range& l,
1262  Index v, Index s, const Range& b,
1263  Index p, Index r, Index c) const;
1264  // |--||||
1265  ConstMatrixView operator()( Index l,
1266  const Range& v, const Range& s, Index b,
1267  Index p, Index r, Index c) const;
1268  // -|-||||
1269  ConstMatrixView operator()( const Range& l,
1270  Index v, const Range& s, Index b,
1271  Index p, Index r, Index c) const;
1272  // --|||||
1273  ConstMatrixView operator()( const Range& l,
1274  const Range& v, Index s, Index b,
1275  Index p, Index r, Index c) const;
1276 
1277  // Result 1D (7 combinations)
1278  // ||||||-
1279  ConstVectorView operator()( Index l,
1280  Index v, Index s, Index b,
1281  Index p, Index r, const Range& c) const;
1282  // |||||-|
1283  ConstVectorView operator()( Index l,
1284  Index v, Index s, Index b,
1285  Index p, const Range& r, Index c) const;
1286  // ||||-||
1287  ConstVectorView operator()( Index l,
1288  Index v, Index s, Index b,
1289  const Range& p, Index r, Index c) const;
1290  // |||-|||
1291  ConstVectorView operator()( Index l,
1292  Index v, Index s, const Range& b,
1293  Index p, Index r, Index c) const;
1294  // ||-||||
1295  ConstVectorView operator()( Index l,
1296  Index v, const Range& s, Index b,
1297  Index p, Index r, Index c) const;
1298  // |-|||||
1299  ConstVectorView operator()( Index l,
1300  const Range& v, Index s, Index b,
1301  Index p, Index r, Index c) const;
1302  // -||||||
1303  ConstVectorView operator()( const Range& l,
1304  Index v, Index s, Index b,
1305  Index p, Index r, Index c) const;
1306 
1307  // Result scalar (1 combination)
1308  // |||||||
1309  Numeric operator() ( Index l,
1310  Index v, Index s, Index b,
1311  Index p, Index r, Index c) const
1312  { return ConstTensor7View::operator()(l,v,s,b,p,r,c); }
1313 
1315  Numeric get( Index l,
1316  Index v, Index s, Index b,
1317  Index p, Index r, Index c) const
1318  { return ConstTensor7View::get(l,v,s,b,p,r,c); }
1319 
1320 
1321  // Non-const index operators:
1322 
1323  // Result 7D (1 combination)
1324  // -------
1325  Tensor7View operator()( const Range& l,
1326  const Range& v, const Range& s, const Range& b,
1327  const Range& p, const Range& r, const Range& c);
1328 
1329  // Result 6D (7 combinations)
1330  // ------|
1331  Tensor6View operator()( const Range& l,
1332  const Range& v, const Range& s, const Range& b,
1333  const Range& p, const Range& r, Index c);
1334  // -----|-
1335  Tensor6View operator()( const Range& l,
1336  const Range& v, const Range& s, const Range& b,
1337  const Range& p, Index r, const Range& c);
1338  // ----|--
1339  Tensor6View operator()( const Range& l,
1340  const Range& v, const Range& s, const Range& b,
1341  Index p, const Range& r, const Range& c);
1342  // ---|---
1343  Tensor6View operator()( const Range& l,
1344  const Range& v, const Range& s, Index b,
1345  const Range& p, const Range& r, const Range& c);
1346  // --|----
1347  Tensor6View operator()( const Range& l,
1348  const Range& v, Index s, const Range& b,
1349  const Range& p, const Range& r, const Range& c);
1350  // -|-----
1351  Tensor6View operator()( const Range& l,
1352  Index v, const Range& s, const Range& b,
1353  const Range& p, const Range& r, const Range& c);
1354  // |------
1355  Tensor6View operator()( Index l,
1356  const Range& v, const Range& s, const Range& b,
1357  const Range& p, const Range& r, const Range& c);
1358 
1359  // Result 5D (6+5+4+3+2+1 = 21 combinations)
1360  // -----||
1361  Tensor5View operator()( const Range& l,
1362  const Range& v, const Range& s, const Range& b,
1363  const Range& p, Index r, Index c);
1364  // ----|-|
1365  Tensor5View operator()( const Range& l,
1366  const Range& v, const Range& s, const Range& b,
1367  Index p, const Range& r, Index c);
1368  // ---|--|
1369  Tensor5View operator()( const Range& l,
1370  const Range& v, const Range& s, Index b,
1371  const Range& p, const Range& r, Index c);
1372  // --|---|
1373  Tensor5View operator()( const Range& l,
1374  const Range& v, Index s, const Range& b,
1375  const Range& p, const Range& r, Index c);
1376  // -|----|
1377  Tensor5View operator()( const Range& l,
1378  Index v, const Range& s, const Range& b,
1379  const Range& p, const Range& r, Index c);
1380  // |-----|
1381  Tensor5View operator()( Index l,
1382  const Range& v, const Range& s, const Range& b,
1383  const Range& p, const Range& r, Index c);
1384  // ----||-
1385  Tensor5View operator()( const Range& l,
1386  const Range& v, const Range& s, const Range& b,
1387  Index p, Index r, const Range& c);
1388  // ---|-|-
1389  Tensor5View operator()( const Range& l,
1390  const Range& v, const Range& s, Index b,
1391  const Range& p, Index r, const Range& c);
1392  // --|--|-
1393  Tensor5View operator()( const Range& l,
1394  const Range& v, Index s, const Range& b,
1395  const Range& p, Index r, const Range& c);
1396  // -|---|-
1397  Tensor5View operator()( const Range& l,
1398  Index v, const Range& s, const Range& b,
1399  const Range& p, Index r, const Range& c);
1400  // |----|-
1401  Tensor5View operator()( Index l,
1402  const Range& v, const Range& s, const Range& b,
1403  const Range& p, Index r, const Range& c);
1404  // ---||--
1405  Tensor5View operator()( const Range& l,
1406  const Range& v, const Range& s, Index b,
1407  Index p, const Range& r, const Range& c);
1408  // --|-|--
1409  Tensor5View operator()( const Range& l,
1410  const Range& v, Index s, const Range& b,
1411  Index p, const Range& r, const Range& c);
1412  // -|--|--
1413  Tensor5View operator()( const Range& l,
1414  Index v, const Range& s, const Range& b,
1415  Index p, const Range& r, const Range& c);
1416  // |---|--
1417  Tensor5View operator()( Index l,
1418  const Range& v, const Range& s, const Range& b,
1419  Index p, const Range& r, const Range& c);
1420  // --||---
1421  Tensor5View operator()( const Range& l,
1422  const Range& v, Index s, Index b,
1423  const Range& p, const Range& r, const Range& c);
1424  // -|-|---
1425  Tensor5View operator()( const Range& l,
1426  Index v, const Range& s, Index b,
1427  const Range& p, const Range& r, const Range& c);
1428  // |--|---
1429  Tensor5View operator()( Index l,
1430  const Range& v, const Range& s, Index b,
1431  const Range& p, const Range& r, const Range& c);
1432  // -||----
1433  Tensor5View operator()( const Range& l,
1434  Index v, Index s, const Range& b,
1435  const Range& p, const Range& r, const Range& c);
1436  // |-|----
1437  Tensor5View operator()( Index l,
1438  const Range& v, Index s, const Range& b,
1439  const Range& p, const Range& r, const Range& c);
1440  // ||-----
1441  Tensor5View operator()( Index l,
1442  Index v, const Range& s, const Range& b,
1443  const Range& p, const Range& r, const Range& c);
1444 
1445  // Result 4D (5+4+3+2+1 +4+3+2+1 +3+2+1 +2+1 +1 = 35 combinations)
1446  // ----|||
1447  Tensor4View operator()( const Range& l,
1448  const Range& v, const Range& s, const Range& b,
1449  Index p, Index r, Index c);
1450  // ---|-||
1451  Tensor4View operator()( const Range& l,
1452  const Range& v, const Range& s, Index b,
1453  const Range& p, Index r, Index c);
1454  // --|--||
1455  Tensor4View operator()( const Range& l,
1456  const Range& v, Index s, const Range& b,
1457  const Range& p, Index r, Index c);
1458  // -|---||
1459  Tensor4View operator()( const Range& l,
1460  Index v, const Range& s, const Range& b,
1461  const Range& p, Index r, Index c);
1462  // |----||
1463  Tensor4View operator()( Index l,
1464  const Range& v, const Range& s, const Range& b,
1465  const Range& p, Index r, Index c);
1466  // ---||-|
1467  Tensor4View operator()( const Range& l,
1468  const Range& v, const Range& s, Index b,
1469  Index p, const Range& r, Index c);
1470  // --|-|-|
1471  Tensor4View operator()( const Range& l,
1472  const Range& v, Index s, const Range& b,
1473  Index p, const Range& r, Index c);
1474  // -|--|-|
1475  Tensor4View operator()( const Range& l,
1476  Index v, const Range& s, const Range& b,
1477  Index p, const Range& r, Index c);
1478  // |---|-|
1479  Tensor4View operator()( Index l,
1480  const Range& v, const Range& s, const Range& b,
1481  Index p, const Range& r, Index c);
1482  // --||--|
1483  Tensor4View operator()( const Range& l,
1484  const Range& v, Index s, Index b,
1485  const Range& p, const Range& r, Index c);
1486  // -|-|--|
1487  Tensor4View operator()( const Range& l,
1488  Index v, const Range& s, Index b,
1489  const Range& p, const Range& r, Index c);
1490  // |--|--|
1491  Tensor4View operator()( Index l,
1492  const Range& v, const Range& s, Index b,
1493  const Range& p, const Range& r, Index c);
1494  // -||---|
1495  Tensor4View operator()( const Range& l,
1496  Index v, Index s, const Range& b,
1497  const Range& p, const Range& r, Index c);
1498  // |-|---|
1499  Tensor4View operator()( Index l,
1500  const Range& v, Index s, const Range& b,
1501  const Range& p, const Range& r, Index c);
1502  // ||----|
1503  Tensor4View operator()( Index l,
1504  Index v, const Range& s, const Range& b,
1505  const Range& p, const Range& r, Index c);
1506  // ---|||-
1507  Tensor4View operator()( const Range& l,
1508  const Range& v, const Range& s, Index b,
1509  Index p, Index r, const Range& c);
1510  // --|-||-
1511  Tensor4View operator()( const Range& l,
1512  const Range& v, Index s, const Range& b,
1513  Index p, Index r, const Range& c);
1514  // -|--||-
1515  Tensor4View operator()( const Range& l,
1516  Index v, const Range& s, const Range& b,
1517  Index p, Index r, const Range& c);
1518  // |---||-
1519  Tensor4View operator()( Index l,
1520  const Range& v, const Range& s, const Range& b,
1521  Index p, Index r, const Range& c);
1522  // --||-|-
1523  Tensor4View operator()( const Range& l,
1524  const Range& v, Index s, Index b,
1525  const Range& p, Index r, const Range& c);
1526  // -|-|-|-
1527  Tensor4View operator()( const Range& l,
1528  Index v, const Range& s, Index b,
1529  const Range& p, Index r, const Range& c);
1530  // |--|-|-
1531  Tensor4View operator()( Index l,
1532  const Range& v, const Range& s, Index b,
1533  const Range& p, Index r, const Range& c);
1534  // -||--|-
1535  Tensor4View operator()( const Range& l,
1536  Index v, Index s, const Range& b,
1537  const Range& p, Index r, const Range& c);
1538  // |-|--|-
1539  Tensor4View operator()( Index l,
1540  const Range& v, Index s, const Range& b,
1541  const Range& p, Index r, const Range& c);
1542  // ||---|-
1543  Tensor4View operator()( Index l,
1544  Index v, const Range& s, const Range& b,
1545  const Range& p, Index r, const Range& c);
1546  // --|||--
1547  Tensor4View operator()( const Range& l,
1548  const Range& v, Index s, Index b,
1549  Index p, const Range& r, const Range& c);
1550  // -|-||--
1551  Tensor4View operator()( const Range& l,
1552  Index v, const Range& s, Index b,
1553  Index p, const Range& r, const Range& c);
1554  // |--||--
1555  Tensor4View operator()( Index l,
1556  const Range& v, const Range& s, Index b,
1557  Index p, const Range& r, const Range& c);
1558  // -||-|--
1559  Tensor4View operator()( const Range& l,
1560  Index v, Index s, const Range& b,
1561  Index p, const Range& r, const Range& c);
1562  // |-|-|--
1563  Tensor4View operator()( Index l,
1564  const Range& v, Index s, const Range& b,
1565  Index p, const Range& r, const Range& c);
1566  // ||--|--
1567  Tensor4View operator()( Index l,
1568  Index v, const Range& s, const Range& b,
1569  Index p, const Range& r, const Range& c);
1570  // -|||---
1571  Tensor4View operator()( const Range& l,
1572  Index v, Index s, Index b,
1573  const Range& p, const Range& r, const Range& c);
1574  // |-||---
1575  Tensor4View operator()( Index l,
1576  const Range& v, Index s, Index b,
1577  const Range& p, const Range& r, const Range& c);
1578  // ||-|---
1579  Tensor4View operator()( Index l,
1580  Index v, const Range& s, Index b,
1581  const Range& p, const Range& r, const Range& c);
1582  // |||----
1583  Tensor4View operator()( Index l,
1584  Index v, Index s, const Range& b,
1585  const Range& p, const Range& r, const Range& c);
1586 
1587  // Result 3D (5+4+3+2+1 +4+3+2+1 +3+2+1 +2+1 +1 = 35 combinations)
1588  // ||||---
1589  Tensor3View operator()( Index l,
1590  Index v, Index s, Index b,
1591  const Range& p, const Range& r, const Range& c);
1592  // |||-|--
1593  Tensor3View operator()( Index l,
1594  Index v, Index s, const Range& b,
1595  Index p, const Range& r, const Range& c);
1596  // ||-||--
1597  Tensor3View operator()( Index l,
1598  Index v, const Range& s, Index b,
1599  Index p, const Range& r, const Range& c);
1600  // |-|||--
1601  Tensor3View operator()( Index l,
1602  const Range& v, Index s, Index b,
1603  Index p, const Range& r, const Range& c);
1604  // -||||--
1605  Tensor3View operator()( const Range& l,
1606  Index v, Index s, Index b,
1607  Index p, const Range& r, const Range& c);
1608  // |||--|-
1609  Tensor3View operator()( Index l,
1610  Index v, Index s, const Range& b,
1611  const Range& p, Index r, const Range& c);
1612  // ||-|-|-
1613  Tensor3View operator()( Index l,
1614  Index v, const Range& s, Index b,
1615  const Range& p, Index r, const Range& c);
1616  // |-||-|-
1617  Tensor3View operator()( Index l,
1618  const Range& v, Index s, Index b,
1619  const Range& p, Index r, const Range& c);
1620  // -|||-|-
1621  Tensor3View operator()( const Range& l,
1622  Index v, Index s, Index b,
1623  const Range& p, Index r, const Range& c);
1624  // ||--||-
1625  Tensor3View operator()( Index l,
1626  Index v, const Range& s, const Range& b,
1627  Index p, Index r, const Range& c);
1628  // |-|-||-
1629  Tensor3View operator()( Index l,
1630  const Range& v, Index s, const Range& b,
1631  Index p, Index r, const Range& c);
1632  // -||-||-
1633  Tensor3View operator()( const Range& l,
1634  Index v, Index s, const Range& b,
1635  Index p, Index r, const Range& c);
1636  // |--|||-
1637  Tensor3View operator()( Index l,
1638  const Range& v, const Range& s, Index b,
1639  Index p, Index r, const Range& c);
1640  // -|-|||-
1641  Tensor3View operator()( const Range& l,
1642  Index v, const Range& s, Index b,
1643  Index p, Index r, const Range& c);
1644  // --||||-
1645  Tensor3View operator()( const Range& l,
1646  const Range& v, Index s, Index b,
1647  Index p, Index r, const Range& c);
1648  // |||---|
1649  Tensor3View operator()( Index l,
1650  Index v, Index s, const Range& b,
1651  const Range& p, const Range& r, Index c);
1652  // ||-|--|
1653  Tensor3View operator()( Index l,
1654  Index v, const Range& s, Index b,
1655  const Range& p, const Range& r, Index c);
1656  // |-||--|
1657  Tensor3View operator()( Index l,
1658  const Range& v, Index s, Index b,
1659  const Range& p, const Range& r, Index c);
1660  // -|||--|
1661  Tensor3View operator()( const Range& l,
1662  Index v, Index s, Index b,
1663  const Range& p, const Range& r, Index c);
1664  // ||--|-|
1665  Tensor3View operator()( Index l,
1666  Index v, const Range& s, const Range& b,
1667  Index p, const Range& r, Index c);
1668  // |-|-|-|
1669  Tensor3View operator()( Index l,
1670  const Range& v, Index s, const Range& b,
1671  Index p, const Range& r, Index c);
1672  // -||-|-|
1673  Tensor3View operator()( const Range& l,
1674  Index v, Index s, const Range& b,
1675  Index p, const Range& r, Index c);
1676  // |--||-|
1677  Tensor3View operator()( Index l,
1678  const Range& v, const Range& s, Index b,
1679  Index p, const Range& r, Index c);
1680  // -|-||-|
1681  Tensor3View operator()( const Range& l,
1682  Index v, const Range& s, Index b,
1683  Index p, const Range& r, Index c);
1684  // --|||-|
1685  Tensor3View operator()( const Range& l,
1686  const Range& v, Index s, Index b,
1687  Index p, const Range& r, Index c);
1688  // ||---||
1689  Tensor3View operator()( Index l,
1690  Index v, const Range& s, const Range& b,
1691  const Range& p, Index r, Index c);
1692  // |-|--||
1693  Tensor3View operator()( Index l,
1694  const Range& v, Index s, const Range& b,
1695  const Range& p, Index r, Index c);
1696  // -||--||
1697  Tensor3View operator()( const Range& l,
1698  Index v, Index s, const Range& b,
1699  const Range& p, Index r, Index c);
1700  // |--|-||
1701  Tensor3View operator()( Index l,
1702  const Range& v, const Range& s, Index b,
1703  const Range& p, Index r, Index c);
1704  // -|-|-||
1705  Tensor3View operator()( const Range& l,
1706  Index v, const Range& s, Index b,
1707  const Range& p, Index r, Index c);
1708  // --||-||
1709  Tensor3View operator()( const Range& l,
1710  const Range& v, Index s, Index b,
1711  const Range& p, Index r, Index c);
1712  // |---|||
1713  Tensor3View operator()( Index l,
1714  const Range& v, const Range& s, const Range& b,
1715  Index p, Index r, Index c);
1716  // -|--|||
1717  Tensor3View operator()( const Range& l,
1718  Index v, const Range& s, const Range& b,
1719  Index p, Index r, Index c);
1720  // --|-|||
1721  Tensor3View operator()( const Range& l,
1722  const Range& v, Index s, const Range& b,
1723  Index p, Index r, Index c);
1724  // ---||||
1725  Tensor3View operator()( const Range& l,
1726  const Range& v, const Range& s, Index b,
1727  Index p, Index r, Index c);
1728 
1729  // Result 2D (6+5+4+3+2+1 = 21 combinations)
1730  // |||||--
1731  MatrixView operator()( Index l,
1732  Index v, Index s, Index b,
1733  Index p, const Range& r, const Range& c);
1734  // ||||-|-
1735  MatrixView operator()( Index l,
1736  Index v, Index s, Index b,
1737  const Range& p, Index r, const Range& c);
1738  // |||-||-
1739  MatrixView operator()( Index l,
1740  Index v, Index s, const Range& b,
1741  Index p, Index r, const Range& c);
1742  // ||-|||-
1743  MatrixView operator()( Index l,
1744  Index v, const Range& s, Index b,
1745  Index p, Index r, const Range& c);
1746  // |-||||-
1747  MatrixView operator()( Index l,
1748  const Range& v, Index s, Index b,
1749  Index p, Index r, const Range& c);
1750  // -|||||-
1751  MatrixView operator()( const Range& l,
1752  Index v, Index s, Index b,
1753  Index p, Index r, const Range& c);
1754  // ||||--|
1755  MatrixView operator()( Index l,
1756  Index v, Index s, Index b,
1757  const Range& p, const Range& r, Index c);
1758  // |||-|-|
1759  MatrixView operator()( Index l,
1760  Index v, Index s, const Range& b,
1761  Index p, const Range& r, Index c);
1762  // ||-||-|
1763  MatrixView operator()( Index l,
1764  Index v, const Range& s, Index b,
1765  Index p, const Range& r, Index c);
1766  // |-|||-|
1767  MatrixView operator()( Index l,
1768  const Range& v, Index s, Index b,
1769  Index p, const Range& r, Index c);
1770  // -||||-|
1771  MatrixView operator()( const Range& l,
1772  Index v, Index s, Index b,
1773  Index p, const Range& r, Index c);
1774  // |||--||
1775  MatrixView operator()( Index l,
1776  Index v, Index s, const Range& b,
1777  const Range& p, Index r, Index c);
1778  // ||-|-||
1779  MatrixView operator()( Index l,
1780  Index v, const Range& s, Index b,
1781  const Range& p, Index r, Index c);
1782  // |-||-||
1783  MatrixView operator()( Index l,
1784  const Range& v, Index s, Index b,
1785  const Range& p, Index r, Index c);
1786  // -|||-||
1787  MatrixView operator()( const Range& l,
1788  Index v, Index s, Index b,
1789  const Range& p, Index r, Index c);
1790  // ||--|||
1791  MatrixView operator()( Index l,
1792  Index v, const Range& s, const Range& b,
1793  Index p, Index r, Index c);
1794  // |-|-|||
1795  MatrixView operator()( Index l,
1796  const Range& v, Index s, const Range& b,
1797  Index p, Index r, Index c);
1798  // -||-|||
1799  MatrixView operator()( const Range& l,
1800  Index v, Index s, const Range& b,
1801  Index p, Index r, Index c);
1802  // |--||||
1803  MatrixView operator()( Index l,
1804  const Range& v, const Range& s, Index b,
1805  Index p, Index r, Index c);
1806  // -|-||||
1807  MatrixView operator()( const Range& l,
1808  Index v, const Range& s, Index b,
1809  Index p, Index r, Index c);
1810  // --|||||
1811  MatrixView operator()( const Range& l,
1812  const Range& v, Index s, Index b,
1813  Index p, Index r, Index c);
1814 
1815  // Result 1D (7 combinations)
1816  // ||||||-
1817  VectorView operator()( Index l,
1818  Index v, Index s, Index b,
1819  Index p, Index r, const Range& c);
1820  // |||||-|
1821  VectorView operator()( Index l,
1822  Index v, Index s, Index b,
1823  Index p, const Range& r, Index c);
1824  // ||||-||
1825  VectorView operator()( Index l,
1826  Index v, Index s, Index b,
1827  const Range& p, Index r, Index c);
1828  // |||-|||
1829  VectorView operator()( Index l,
1830  Index v, Index s, const Range& b,
1831  Index p, Index r, Index c);
1832  // ||-||||
1833  VectorView operator()( Index l,
1834  Index v, const Range& s, Index b,
1835  Index p, Index r, Index c);
1836  // |-|||||
1837  VectorView operator()( Index l,
1838  const Range& v, Index s, Index b,
1839  Index p, Index r, Index c);
1840  // -||||||
1841  VectorView operator()( const Range& l,
1842  Index v, Index s, Index b,
1843  Index p, Index r, Index c);
1844 
1845  // Result scalar (1 combination)
1846  // |||||||
1847  Numeric& operator() ( Index l,
1848  Index v, Index s, Index b,
1849  Index p, Index r, Index c)
1850  { CHECK(l);
1851  CHECK(v);
1852  CHECK(s);
1853  CHECK(b);
1854  CHECK(p);
1855  CHECK(r);
1856  CHECK(c);
1857  return get(l, v, s, b, p, r, c);
1858  }
1859 
1861  Numeric& get( Index l,
1862  Index v, Index s, Index b,
1863  Index p, Index r, Index c)
1864  {
1865  return *(mdata + OFFSET(l) +
1866  OFFSET(v) + OFFSET(s) + OFFSET(b) +
1867  OFFSET(p) + OFFSET(r) + OFFSET(c) );
1868  }
1869 
1870 
1871  // Conversion to a plain C-array
1872  const Numeric *get_c_array() const;
1873  Numeric *get_c_array();
1874 
1875  // Functions returning const iterators:
1876  ConstIterator7D begin() const;
1877  ConstIterator7D end() const;
1878  // Functions returning iterators:
1879  Iterator7D begin();
1880  Iterator7D end();
1881 
1882  // Assignment operators:
1883  Tensor7View& operator=(const ConstTensor7View& v);
1884  Tensor7View& operator=(const Tensor7View& v);
1885  Tensor7View& operator=(const Tensor7& v);
1886  Tensor7View& operator=(Numeric x);
1887 
1888  // Other operators:
1889  Tensor7View& operator*=(Numeric x);
1890  Tensor7View& operator/=(Numeric x);
1891  Tensor7View& operator+=(Numeric x);
1892  Tensor7View& operator-=(Numeric x);
1893 
1894  Tensor7View& operator*=(const ConstTensor7View& x);
1895  Tensor7View& operator/=(const ConstTensor7View& x);
1896  Tensor7View& operator+=(const ConstTensor7View& x);
1897  Tensor7View& operator-=(const ConstTensor7View& x);
1898 
1900  virtual ~Tensor7View() {}
1901 
1902  // Friends:
1903 
1904  // Special constructor to make a Tensor7 view of a Tensor6.
1905  Tensor7View(const Tensor6View& a);
1906 
1907 protected:
1908  // Constructors:
1909  Tensor7View();
1910  Tensor7View(Numeric *data,
1911  const Range& l,
1912  const Range& v, const Range& s, const Range& b,
1913  const Range& p, const Range& r, const Range& c);
1914  Tensor7View(Numeric *data,
1915  const Range& pl,
1916  const Range& pv, const Range& ps, const Range& pb,
1917  const Range& pp, const Range& pr, const Range& pc,
1918  const Range& nl,
1919  const Range& nv, const Range& ns, const Range& nb,
1920  const Range& np, const Range& nr, const Range& nc);
1921 };
1922 
1931 class Tensor7 : public Tensor7View {
1932 public:
1933  // Constructors:
1934  Tensor7();
1935  Tensor7(Index l,
1936  Index v, Index s, Index b,
1937  Index p, Index r, Index c);
1938  Tensor7(Index l,
1939  Index v, Index s, Index b,
1940  Index p, Index r, Index c,
1941  Numeric fill);
1942  Tensor7(const ConstTensor7View& v);
1943  Tensor7(const Tensor7& v);
1944 
1945  // Assignment operators:
1946  Tensor7& operator=(Tensor7 x);
1947  Tensor7& operator=(Numeric x);
1948 
1949  // Resize function:
1950  void resize(Index l,
1951  Index v, Index s, Index b,
1952  Index p, Index r, Index c);
1953 
1954  // Swap function:
1955  friend void swap(Tensor7& t1, Tensor7& t2);
1956 
1957  // Destructor:
1958  virtual ~Tensor7();
1959 };
1960 
1961 
1962 // Function declarations:
1963 // ----------------------
1964 
1965 void copy(ConstIterator7D origin,
1966  const ConstIterator7D& end,
1967  Iterator7D target);
1968 
1969 void copy(Numeric x,
1970  Iterator7D target,
1971  const Iterator7D& end);
1972 
1973 void transform( Tensor7View y,
1974  double (&my_func)(double),
1975  ConstTensor7View x );
1976 
1977 Numeric max(const ConstTensor7View& x);
1978 
1979 Numeric min(const ConstTensor7View& x);
1980 
1981 std::ostream& operator<<(std::ostream& os, const ConstTensor7View& v);
1982 
1984 // Helper function for debugging
1985 #ifndef NDEBUG
1986 
1988  Index b, Index p, Index r, Index c);
1989 
1990 #endif
1991 
1993 #endif // matpackVII_h
INDEX Index
The type to use for all integer numbers and indices.
Definition: matpack.h:35
Tensor6View & operator*()
Dereferencing.
Definition: matpackVII.h:80
#define OFFSET(x)
Definition: matpackVI.h:34
void swap(Vector &v1, Vector &v2)
Swaps two objects.
Definition: matpackI.cc:813
The VectorView class.
Definition: matpackI.h:372
The Tensor4View class.
Definition: matpackIV.h:243
Iterator7D(const Tensor6View &x, Index stride)
Explicit constructor.
Definition: matpackVII.h:43
const ConstTensor6View & operator*() const
Dereferencing.
Definition: matpackVII.h:135
A constant view of a Tensor7.
Definition: matpackVII.h:162
The Tensor7View class.
Definition: matpackVII.h:780
Range mcr
The column range of mdata that is actually used.
Definition: matpackVI.h:435
Index mstart
The start index.
Definition: matpackI.h:204
void transform(Tensor7View y, double(&my_func)(double), ConstTensor7View x)
A generic transform function for tensors, which can be used to implement mathematical functions opera...
Definition: matpackVII.cc:5472
ConstIterator7D(const ConstTensor6View &x, Index stride)
Explicit constructor.
Definition: matpackVII.h:97
The MatrixView class.
Definition: matpackI.h:679
A constant view of a Tensor6.
Definition: matpackVI.h:159
Iterator7D()
Default constructor.
Definition: matpackVII.h:40
The range class.
Definition: matpackI.h:148
Numeric min(const ConstTensor7View &x)
Min function, tensor version.
Definition: matpackVII.cc:5519
virtual ~ConstTensor7View()
Destructor.
Definition: matpackVII.h:728
Range msr
The shelf range of mdata that is actually used.
Definition: matpackVI.h:427
Iterator7D & operator++()
Prefix increment operator.
Definition: matpackVII.h:48
The Tensor6View class.
Definition: matpackVI.h:449
The Tensor7 class.
Definition: matpackVII.h:1931
Numeric max(const ConstTensor7View &x)
Max function, tensor version.
Definition: matpackVII.cc:5497
ConstTensor7View operator()(const Range &l, const Range &v, const Range &s, const Range &b, const Range &p, const Range &r, const Range &c) const
Definition: matpackVII.cc:77
A constant view of a Tensor4.
Definition: matpackIV.h:141
Range mbr
The book range of mdata that is actually used.
Definition: matpackVI.h:429
Index mstride
Stride.
Definition: matpackVII.h:141
void copy(ConstIterator7D origin, const ConstIterator7D &end, Iterator7D target)
Copy data between begin and end to target.
Definition: matpackVII.cc:5223
bool operator!=(const ConstIterator7D &other) const
Not equal operator, needed for algorithms like copy.
Definition: matpackVII.h:109
#define CHECK(x)
Implementation of Tensors of Rank 6.
Definition: matpackVI.h:33
The Tensor3View class.
Definition: matpackIII.h:232
Range mrr
The row range of mdata that is actually used.
Definition: matpackVII.h:764
Tensor6View * operator->()
The -> operator is needed, so that we can write i->begin() to get the 1D iterators.
Definition: matpackVII.h:77
Range mcr
The column range of mdata that is actually used.
Definition: matpackVII.h:766
virtual ~Tensor7View()
Destructor.
Definition: matpackVII.h:1900
Range mrr
The row range of mdata that is actually used.
Definition: matpackVI.h:433
A constant view of a Tensor5.
Definition: matpackV.h:152
NUMERIC Numeric
The type to use for all floating point numbers.
Definition: matpack.h:29
ConstTensor7View()
Default constructor.
Definition: matpackVII.cc:1901
bool operator!=(const Iterator7D &other) const
Not equal operator, needed for algorithms like copy.
Definition: matpackVII.h:54
ConstTensor6View msv
Current position.
Definition: matpackVII.h:139
Implementation of Tensors of Rank 7.
Definition: matpackVII.h:36
ConstIterator7D()
Default constructor.
Definition: matpackVII.h:94
The Tensor5View class.
Definition: matpackV.h:276
Numeric * mdata
Pointer to the plain C array that holds the data.
Definition: matpackVI.h:437
std::ostream & operator<<(std::ostream &os, const ConstTensor7View &v)
Output operator.
Definition: matpackVII.cc:1971
Range mvr
The vitrine range of mdata that is actually used.
Definition: matpackVI.h:425
Range msr
The shelf range of mdata that is actually used.
Definition: matpackVII.h:758
Numeric * mdata
Pointer to the plain C array that holds the data.
Definition: matpackVII.h:768
#define ns
Definition: continua.cc:21931
Const version of Iterator7D.
Definition: matpackVII.h:90
Numeric get(Index l, Index v, Index s, Index b, Index p, Index r, Index c) const
Get element implementation without assertions.
Definition: matpackVII.h:713
A constant view of a Tensor3.
Definition: matpackIII.h:139
A constant view of a Vector.
Definition: matpackI.h:292
Numeric debug_tensor7view_get_elem(Tensor7View &tv, Index l, Index v, Index s, Index b, Index p, Index r, Index c)
Helper function to access tensor elements.
Definition: matpackVII.cc:5563
Range mpr
The page range of mdata that is actually used.
Definition: matpackVI.h:431
A constant view of a Matrix.
Definition: matpackI.h:596
ConstIterator7D & operator++()
Prefix increment operator.
Definition: matpackVII.h:103
Range mpr
The page range of mdata that is actually used.
Definition: matpackVII.h:762
Tensor6View msv
Current position.
Definition: matpackVII.h:84
Range mlr
The library range of mdata that is actually used.
Definition: matpackVII.h:754
Index mstride
Stride.
Definition: matpackVII.h:86
Range mbr
The book range of mdata that is actually used.
Definition: matpackVII.h:760
const ConstTensor6View * operator->() const
The -> operator is needed, so that we can write i->begin() to get the 1D iterators.
Definition: matpackVII.h:132
Range mvr
The vitrine range of mdata that is actually used.
Definition: matpackVII.h:756