TR-mbed 1.0
Loading...
Searching...
No Matches
BlockMethods.h
Go to the documentation of this file.
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
5// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
6//
7// This Source Code Form is subject to the terms of the Mozilla
8// Public License v. 2.0. If a copy of the MPL was not distributed
9// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10
11#ifndef EIGEN_PARSED_BY_DOXYGEN
12
14typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, 1, !IsRowMajor> ColXpr;
15typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, 1, !IsRowMajor> ConstColXpr;
17typedef Block<Derived, 1, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> RowXpr;
18typedef const Block<const Derived, 1, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> ConstRowXpr;
20typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, Dynamic, !IsRowMajor> ColsBlockXpr;
21typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, Dynamic, !IsRowMajor> ConstColsBlockXpr;
23typedef Block<Derived, Dynamic, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> RowsBlockXpr;
24typedef const Block<const Derived, Dynamic, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> ConstRowsBlockXpr;
26template<int N> struct NColsBlockXpr { typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, N, !IsRowMajor> Type; };
27template<int N> struct ConstNColsBlockXpr { typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, N, !IsRowMajor> Type; };
29template<int N> struct NRowsBlockXpr { typedef Block<Derived, N, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> Type; };
30template<int N> struct ConstNRowsBlockXpr { typedef const Block<const Derived, N, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> Type; };
32typedef Block<Derived> BlockXpr;
33typedef const Block<const Derived> ConstBlockXpr;
35template<int Rows, int Cols> struct FixedBlockXpr { typedef Block<Derived,Rows,Cols> Type; };
36template<int Rows, int Cols> struct ConstFixedBlockXpr { typedef Block<const Derived,Rows,Cols> Type; };
37
38typedef VectorBlock<Derived> SegmentReturnType;
39typedef const VectorBlock<const Derived> ConstSegmentReturnType;
40template<int Size> struct FixedSegmentReturnType { typedef VectorBlock<Derived, Size> Type; };
41template<int Size> struct ConstFixedSegmentReturnType { typedef const VectorBlock<const Derived, Size> Type; };
42
44typedef Block<Derived,IsRowMajor?1:Dynamic,IsRowMajor?Dynamic:1,true> InnerVectorReturnType;
45typedef Block<const Derived,IsRowMajor?1:Dynamic,IsRowMajor?Dynamic:1,true> ConstInnerVectorReturnType;
46
48typedef Block<Derived,Dynamic,Dynamic,true> InnerVectorsReturnType;
49typedef Block<const Derived,Dynamic,Dynamic,true> ConstInnerVectorsReturnType;
50
51#endif // not EIGEN_PARSED_BY_DOXYGEN
52
89template<typename NRowsType, typename NColsType>
91#ifndef EIGEN_PARSED_BY_DOXYGEN
92typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
93#else
94typename FixedBlockXpr<...,...>::Type
95#endif
96block(Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols)
97{
98 return typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type(
99 derived(), startRow, startCol, internal::get_runtime_value(blockRows), internal::get_runtime_value(blockCols));
100}
101
103template<typename NRowsType, typename NColsType>
105#ifndef EIGEN_PARSED_BY_DOXYGEN
106const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
107#else
108const typename ConstFixedBlockXpr<...,...>::Type
109#endif
110block(Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols) const
111{
112 return typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type(
113 derived(), startRow, startCol, internal::get_runtime_value(blockRows), internal::get_runtime_value(blockCols));
114}
115
116
117
135template<typename NRowsType, typename NColsType>
137#ifndef EIGEN_PARSED_BY_DOXYGEN
138typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
139#else
140typename FixedBlockXpr<...,...>::Type
141#endif
142topRightCorner(NRowsType cRows, NColsType cCols)
143{
144 return typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
145 (derived(), 0, cols() - internal::get_runtime_value(cCols), internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
146}
147
149template<typename NRowsType, typename NColsType>
151#ifndef EIGEN_PARSED_BY_DOXYGEN
152const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
153#else
154const typename ConstFixedBlockXpr<...,...>::Type
155#endif
156topRightCorner(NRowsType cRows, NColsType cCols) const
157{
158 return typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
159 (derived(), 0, cols() - internal::get_runtime_value(cCols), internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
160}
161
174template<int CRows, int CCols>
177{
178 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - CCols);
179}
180
182template<int CRows, int CCols>
185{
186 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - CCols);
187}
188
208template<int CRows, int CCols>
210typename FixedBlockXpr<CRows,CCols>::Type topRightCorner(Index cRows, Index cCols)
211{
212 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - cCols, cRows, cCols);
213}
214
216template<int CRows, int CCols>
218const typename ConstFixedBlockXpr<CRows,CCols>::Type topRightCorner(Index cRows, Index cCols) const
219{
220 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - cCols, cRows, cCols);
221}
222
223
224
242template<typename NRowsType, typename NColsType>
244#ifndef EIGEN_PARSED_BY_DOXYGEN
245typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
246#else
247typename FixedBlockXpr<...,...>::Type
248#endif
249topLeftCorner(NRowsType cRows, NColsType cCols)
250{
251 return typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
252 (derived(), 0, 0, internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
253}
254
256template<typename NRowsType, typename NColsType>
258#ifndef EIGEN_PARSED_BY_DOXYGEN
259const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
260#else
261const typename ConstFixedBlockXpr<...,...>::Type
262#endif
263topLeftCorner(NRowsType cRows, NColsType cCols) const
264{
265 return typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
266 (derived(), 0, 0, internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
267}
268
280template<int CRows, int CCols>
283{
284 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0);
285}
286
288template<int CRows, int CCols>
291{
292 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0);
293}
294
314template<int CRows, int CCols>
316typename FixedBlockXpr<CRows,CCols>::Type topLeftCorner(Index cRows, Index cCols)
317{
318 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0, cRows, cCols);
319}
320
322template<int CRows, int CCols>
324const typename ConstFixedBlockXpr<CRows,CCols>::Type topLeftCorner(Index cRows, Index cCols) const
325{
326 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0, cRows, cCols);
327}
328
329
330
348template<typename NRowsType, typename NColsType>
350#ifndef EIGEN_PARSED_BY_DOXYGEN
351typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
352#else
353typename FixedBlockXpr<...,...>::Type
354#endif
355bottomRightCorner(NRowsType cRows, NColsType cCols)
356{
357 return typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
358 (derived(), rows() - internal::get_runtime_value(cRows), cols() - internal::get_runtime_value(cCols),
359 internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
360}
361
363template<typename NRowsType, typename NColsType>
365#ifndef EIGEN_PARSED_BY_DOXYGEN
366const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
367#else
368const typename ConstFixedBlockXpr<...,...>::Type
369#endif
370bottomRightCorner(NRowsType cRows, NColsType cCols) const
371{
372 return typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
373 (derived(), rows() - internal::get_runtime_value(cRows), cols() - internal::get_runtime_value(cCols),
374 internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
375}
376
388template<int CRows, int CCols>
391{
392 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, cols() - CCols);
393}
394
396template<int CRows, int CCols>
399{
400 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, cols() - CCols);
401}
402
422template<int CRows, int CCols>
424typename FixedBlockXpr<CRows,CCols>::Type bottomRightCorner(Index cRows, Index cCols)
425{
426 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
427}
428
430template<int CRows, int CCols>
432const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomRightCorner(Index cRows, Index cCols) const
433{
434 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
435}
436
437
438
456template<typename NRowsType, typename NColsType>
458#ifndef EIGEN_PARSED_BY_DOXYGEN
459typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
460#else
461typename FixedBlockXpr<...,...>::Type
462#endif
463bottomLeftCorner(NRowsType cRows, NColsType cCols)
464{
465 return typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
466 (derived(), rows() - internal::get_runtime_value(cRows), 0,
467 internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
468}
469
471template<typename NRowsType, typename NColsType>
473#ifndef EIGEN_PARSED_BY_DOXYGEN
474typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
475#else
476typename ConstFixedBlockXpr<...,...>::Type
477#endif
478bottomLeftCorner(NRowsType cRows, NColsType cCols) const
479{
480 return typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
481 (derived(), rows() - internal::get_runtime_value(cRows), 0,
482 internal::get_runtime_value(cRows), internal::get_runtime_value(cCols));
483}
484
496template<int CRows, int CCols>
499{
500 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, 0);
501}
502
504template<int CRows, int CCols>
507{
508 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, 0);
509}
510
530template<int CRows, int CCols>
532typename FixedBlockXpr<CRows,CCols>::Type bottomLeftCorner(Index cRows, Index cCols)
533{
534 return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, 0, cRows, cCols);
535}
536
538template<int CRows, int CCols>
540const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomLeftCorner(Index cRows, Index cCols) const
541{
542 return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, 0, cRows, cCols);
543}
544
545
546
563template<typename NRowsType>
565#ifndef EIGEN_PARSED_BY_DOXYGEN
567#else
568typename NRowsBlockXpr<...>::Type
569#endif
570topRows(NRowsType n)
571{
573 (derived(), 0, 0, internal::get_runtime_value(n), cols());
574}
575
577template<typename NRowsType>
579#ifndef EIGEN_PARSED_BY_DOXYGEN
581#else
582const typename ConstNRowsBlockXpr<...>::Type
583#endif
584topRows(NRowsType n) const
585{
587 (derived(), 0, 0, internal::get_runtime_value(n), cols());
588}
589
605template<int N>
608{
609 return typename NRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
610}
611
613template<int N>
615typename ConstNRowsBlockXpr<N>::Type topRows(Index n = N) const
616{
617 return typename ConstNRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
618}
619
620
621
638template<typename NRowsType>
640#ifndef EIGEN_PARSED_BY_DOXYGEN
642#else
643typename NRowsBlockXpr<...>::Type
644#endif
645bottomRows(NRowsType n)
646{
648 (derived(), rows() - internal::get_runtime_value(n), 0, internal::get_runtime_value(n), cols());
649}
650
652template<typename NRowsType>
654#ifndef EIGEN_PARSED_BY_DOXYGEN
656#else
657const typename ConstNRowsBlockXpr<...>::Type
658#endif
659bottomRows(NRowsType n) const
660{
662 (derived(), rows() - internal::get_runtime_value(n), 0, internal::get_runtime_value(n), cols());
663}
664
680template<int N>
683{
684 return typename NRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
685}
686
688template<int N>
691{
692 return typename ConstNRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
693}
694
695
696
714template<typename NRowsType>
716#ifndef EIGEN_PARSED_BY_DOXYGEN
718#else
719typename NRowsBlockXpr<...>::Type
720#endif
721middleRows(Index startRow, NRowsType n)
722{
724 (derived(), startRow, 0, internal::get_runtime_value(n), cols());
725}
726
728template<typename NRowsType>
730#ifndef EIGEN_PARSED_BY_DOXYGEN
732#else
733const typename ConstNRowsBlockXpr<...>::Type
734#endif
735middleRows(Index startRow, NRowsType n) const
736{
738 (derived(), startRow, 0, internal::get_runtime_value(n), cols());
739}
740
757template<int N>
759typename NRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N)
760{
761 return typename NRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
762}
763
765template<int N>
767typename ConstNRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N) const
768{
769 return typename ConstNRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
770}
771
772
773
790template<typename NColsType>
792#ifndef EIGEN_PARSED_BY_DOXYGEN
794#else
795typename NColsBlockXpr<...>::Type
796#endif
797leftCols(NColsType n)
798{
800 (derived(), 0, 0, rows(), internal::get_runtime_value(n));
801}
802
804template<typename NColsType>
806#ifndef EIGEN_PARSED_BY_DOXYGEN
808#else
809const typename ConstNColsBlockXpr<...>::Type
810#endif
811leftCols(NColsType n) const
812{
814 (derived(), 0, 0, rows(), internal::get_runtime_value(n));
815}
816
832template<int N>
835{
836 return typename NColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
837}
838
840template<int N>
843{
844 return typename ConstNColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
845}
846
847
848
865template<typename NColsType>
867#ifndef EIGEN_PARSED_BY_DOXYGEN
869#else
870typename NColsBlockXpr<...>::Type
871#endif
872rightCols(NColsType n)
873{
875 (derived(), 0, cols() - internal::get_runtime_value(n), rows(), internal::get_runtime_value(n));
876}
877
879template<typename NColsType>
881#ifndef EIGEN_PARSED_BY_DOXYGEN
883#else
884const typename ConstNColsBlockXpr<...>::Type
885#endif
886rightCols(NColsType n) const
887{
889 (derived(), 0, cols() - internal::get_runtime_value(n), rows(), internal::get_runtime_value(n));
890}
891
907template<int N>
910{
911 return typename NColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
912}
913
915template<int N>
918{
919 return typename ConstNColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
920}
921
922
923
941template<typename NColsType>
943#ifndef EIGEN_PARSED_BY_DOXYGEN
945#else
946typename NColsBlockXpr<...>::Type
947#endif
948middleCols(Index startCol, NColsType numCols)
949{
951 (derived(), 0, startCol, rows(), internal::get_runtime_value(numCols));
952}
953
955template<typename NColsType>
957#ifndef EIGEN_PARSED_BY_DOXYGEN
959#else
960const typename ConstNColsBlockXpr<...>::Type
961#endif
962middleCols(Index startCol, NColsType numCols) const
963{
965 (derived(), 0, startCol, rows(), internal::get_runtime_value(numCols));
966}
967
984template<int N>
986typename NColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N)
987{
988 return typename NColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
989}
990
992template<int N>
994typename ConstNColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N) const
995{
996 return typename ConstNColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
997}
998
999
1000
1025template<int NRows, int NCols>
1027typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol)
1028{
1029 return typename FixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol);
1030}
1031
1033template<int NRows, int NCols>
1035const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol) const
1036{
1037 return typename ConstFixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol);
1038}
1039
1071template<int NRows, int NCols>
1073typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol,
1074 Index blockRows, Index blockCols)
1075{
1076 return typename FixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol, blockRows, blockCols);
1077}
1078
1080template<int NRows, int NCols>
1082const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol,
1083 Index blockRows, Index blockCols) const
1084{
1085 return typename ConstFixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol, blockRows, blockCols);
1086}
1087
1098{
1099 return ColXpr(derived(), i);
1100}
1101
1104ConstColXpr col(Index i) const
1105{
1106 return ConstColXpr(derived(), i);
1107}
1108
1119{
1120 return RowXpr(derived(), i);
1121}
1122
1125ConstRowXpr row(Index i) const
1126{
1127 return ConstRowXpr(derived(), i);
1128}
1129
1151template<typename NType>
1153#ifndef EIGEN_PARSED_BY_DOXYGEN
1155#else
1156typename FixedSegmentReturnType<...>::Type
1157#endif
1158segment(Index start, NType n)
1159{
1162 (derived(), start, internal::get_runtime_value(n));
1163}
1164
1165
1167template<typename NType>
1169#ifndef EIGEN_PARSED_BY_DOXYGEN
1171#else
1172const typename ConstFixedSegmentReturnType<...>::Type
1173#endif
1174segment(Index start, NType n) const
1175{
1178 (derived(), start, internal::get_runtime_value(n));
1179}
1180
1201template<typename NType>
1203#ifndef EIGEN_PARSED_BY_DOXYGEN
1205#else
1206typename FixedSegmentReturnType<...>::Type
1207#endif
1208head(NType n)
1209{
1212 (derived(), 0, internal::get_runtime_value(n));
1213}
1214
1216template<typename NType>
1218#ifndef EIGEN_PARSED_BY_DOXYGEN
1220#else
1221const typename ConstFixedSegmentReturnType<...>::Type
1222#endif
1223head(NType n) const
1224{
1227 (derived(), 0, internal::get_runtime_value(n));
1228}
1229
1250template<typename NType>
1252#ifndef EIGEN_PARSED_BY_DOXYGEN
1254#else
1255typename FixedSegmentReturnType<...>::Type
1256#endif
1257tail(NType n)
1258{
1261 (derived(), this->size() - internal::get_runtime_value(n), internal::get_runtime_value(n));
1262}
1263
1265template<typename NType>
1267#ifndef EIGEN_PARSED_BY_DOXYGEN
1269#else
1270const typename ConstFixedSegmentReturnType<...>::Type
1271#endif
1272tail(NType n) const
1273{
1276 (derived(), this->size() - internal::get_runtime_value(n), internal::get_runtime_value(n));
1277}
1278
1295template<int N>
1297typename FixedSegmentReturnType<N>::Type segment(Index start, Index n = N)
1298{
1300 return typename FixedSegmentReturnType<N>::Type(derived(), start, n);
1301}
1302
1304template<int N>
1306typename ConstFixedSegmentReturnType<N>::Type segment(Index start, Index n = N) const
1307{
1309 return typename ConstFixedSegmentReturnType<N>::Type(derived(), start, n);
1310}
1311
1327template<int N>
1330{
1332 return typename FixedSegmentReturnType<N>::Type(derived(), 0, n);
1333}
1334
1336template<int N>
1339{
1341 return typename ConstFixedSegmentReturnType<N>::Type(derived(), 0, n);
1342}
1343
1359template<int N>
1362{
1364 return typename FixedSegmentReturnType<N>::Type(derived(), size() - n);
1365}
1366
1368template<int N>
1371{
1373 return typename ConstFixedSegmentReturnType<N>::Type(derived(), size() - n);
1374}
1375
1381{ return InnerVectorReturnType(derived(), outer); }
1382
1387const ConstInnerVectorReturnType innerVector(Index outer) const
1388{ return ConstInnerVectorReturnType(derived(), outer); }
1389
1395innerVectors(Index outerStart, Index outerSize)
1396{
1397 return Block<Derived,Dynamic,Dynamic,true>(derived(),
1398 IsRowMajor ? outerStart : 0, IsRowMajor ? 0 : outerStart,
1399 IsRowMajor ? outerSize : rows(), IsRowMajor ? cols() : outerSize);
1400
1401}
1402
1408innerVectors(Index outerStart, Index outerSize) const
1409{
1410 return Block<const Derived,Dynamic,Dynamic,true>(derived(),
1411 IsRowMajor ? outerStart : 0, IsRowMajor ? 0 : outerStart,
1412 IsRowMajor ? outerSize : rows(), IsRowMajor ? cols() : outerSize);
1413
1414}
1415
1419template<DirectionType Direction>
1421typename internal::conditional<Direction==Vertical,ColXpr,RowXpr>::type
1423{
1424 return typename internal::conditional<Direction==Vertical,ColXpr,RowXpr>::type(derived(),i);
1425}
1426
1428template<DirectionType Direction>
1430typename internal::conditional<Direction==Vertical,ConstColXpr,ConstRowXpr>::type
1431subVector(Index i) const
1432{
1433 return typename internal::conditional<Direction==Vertical,ConstColXpr,ConstRowXpr>::type(derived(),i);
1434}
1435
1439template<DirectionType Direction>
1441Index subVectors() const
1442{ return (Direction==Vertical)?cols():rows(); }
int n
Definition BiCGSTAB_simple.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ColXpr col(Index i)
This is the const version of col().
Definition BlockMethods.h:1097
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedSegmentReturnType< internal::get_fixed_value< NType >::value >::Type tail(NType n)
Definition BlockMethods.h:1257
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::conditional< Direction==Vertical, ColXpr, RowXpr >::type subVector(Index i)
Definition BlockMethods.h:1422
const Block< const Derived, 1, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > ConstRowXpr
Definition BlockMethods.h:18
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index subVectors() const
Definition BlockMethods.h:1441
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedBlockXpr< CRows, CCols >::Type bottomLeftCorner()
Definition BlockMethods.h:498
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NRowsBlockXpr< internal::get_fixed_value< NRowsType >::value >::Type topRows(NRowsType n)
Definition BlockMethods.h:570
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedSegmentReturnType< internal::get_fixed_value< NType >::value >::Type segment(Index start, NType n)
Definition BlockMethods.h:1158
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NRowsBlockXpr< internal::get_fixed_value< NRowsType >::value >::Type middleRows(Index startRow, NRowsType n)
Definition BlockMethods.h:721
Block< Derived, Dynamic, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > RowsBlockXpr
Definition BlockMethods.h:23
Block< Derived, internal::traits< Derived >::RowsAtCompileTime, Dynamic, !IsRowMajor > ColsBlockXpr
Definition BlockMethods.h:20
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NColsBlockXpr< internal::get_fixed_value< NColsType >::value >::Type rightCols(NColsType n)
Definition BlockMethods.h:872
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NRowsBlockXpr< internal::get_fixed_value< NRowsType >::value >::Type bottomRows(NRowsType n)
Definition BlockMethods.h:645
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NColsBlockXpr< internal::get_fixed_value< NColsType >::value >::Type middleCols(Index startCol, NColsType numCols)
Definition BlockMethods.h:948
Block< Derived, IsRowMajor?1:Dynamic, IsRowMajor?Dynamic:1, true > InnerVectorReturnType
Definition BlockMethods.h:44
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NColsBlockXpr< internal::get_fixed_value< NColsType >::value >::Type leftCols(NColsType n)
Definition BlockMethods.h:797
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedBlockXpr< CRows, CCols >::Type topRightCorner()
Definition BlockMethods.h:176
Block< Derived > BlockXpr
Definition BlockMethods.h:32
const Block< const Derived, internal::traits< Derived >::RowsAtCompileTime, Dynamic, !IsRowMajor > ConstColsBlockXpr
Definition BlockMethods.h:21
Block< const Derived, IsRowMajor?1:Dynamic, IsRowMajor?Dynamic:1, true > ConstInnerVectorReturnType
Definition BlockMethods.h:45
Block< Derived, 1, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > RowXpr
Definition BlockMethods.h:17
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedBlockXpr< CRows, CCols >::Type topLeftCorner()
Definition BlockMethods.h:282
Block< const Derived, Dynamic, Dynamic, true > ConstInnerVectorsReturnType
Definition BlockMethods.h:49
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedBlockXpr< CRows, CCols >::Type bottomRightCorner()
Definition BlockMethods.h:390
VectorBlock< Derived > SegmentReturnType
Definition BlockMethods.h:38
Block< Derived, Dynamic, Dynamic, true > InnerVectorsReturnType
Definition BlockMethods.h:48
const Block< const Derived, Dynamic, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > ConstRowsBlockXpr
Definition BlockMethods.h:24
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE RowXpr row(Index i)
This is the const version of row(). *‍/.
Definition BlockMethods.h:1118
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE InnerVectorsReturnType innerVectors(Index outerStart, Index outerSize)
Definition BlockMethods.h:1395
const Block< const Derived, internal::traits< Derived >::RowsAtCompileTime, 1, !IsRowMajor > ConstColXpr
Definition BlockMethods.h:15
const VectorBlock< const Derived > ConstSegmentReturnType
Definition BlockMethods.h:39
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE InnerVectorReturnType innerVector(Index outer)
Definition BlockMethods.h:1380
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedBlockXpr< internal::get_fixed_value< NRowsType >::value, internal::get_fixed_value< NColsType >::value >::Type block(Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols)
Definition BlockMethods.h:96
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE FixedSegmentReturnType< internal::get_fixed_value< NType >::value >::Type head(NType n)
Definition BlockMethods.h:1208
Block< Derived, internal::traits< Derived >::RowsAtCompileTime, 1, !IsRowMajor > ColXpr
Definition BlockMethods.h:14
const Block< const Derived > ConstBlockXpr
Definition BlockMethods.h:33
#define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND)
Definition DenseBase.h:656
#define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
Definition DenseBase.h:655
#define EIGEN_CONSTEXPR
Definition Macros.h:787
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Definition StaticAssert.h:142
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition benchVecAdd.cpp:17
@ N
Definition constructor.cpp:23
Definition BlockMethods.h:36
Block< const Derived, Rows, Cols > Type
Definition BlockMethods.h:36
Definition BlockMethods.h:41
const VectorBlock< const Derived, Size > Type
Definition BlockMethods.h:41
Definition BlockMethods.h:27
const Block< const Derived, internal::traits< Derived >::RowsAtCompileTime, N, !IsRowMajor > Type
Definition BlockMethods.h:27
Definition BlockMethods.h:30
const Block< const Derived, N, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > Type
Definition BlockMethods.h:30
Definition BlockMethods.h:35
Block< Derived, Rows, Cols > Type
Definition BlockMethods.h:35
Definition BlockMethods.h:40
VectorBlock< Derived, Size > Type
Definition BlockMethods.h:40
Definition BlockMethods.h:26
Block< Derived, internal::traits< Derived >::RowsAtCompileTime, N, !IsRowMajor > Type
Definition BlockMethods.h:26
Definition BlockMethods.h:29
Block< Derived, N, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > Type
Definition BlockMethods.h:29