tomoto 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +8 -10
- data/ext/tomoto/ct.cpp +11 -11
- data/ext/tomoto/dmr.cpp +14 -13
- data/ext/tomoto/dt.cpp +14 -14
- data/ext/tomoto/extconf.rb +7 -5
- data/ext/tomoto/gdmr.cpp +7 -7
- data/ext/tomoto/hdp.cpp +9 -9
- data/ext/tomoto/hlda.cpp +13 -13
- data/ext/tomoto/hpa.cpp +5 -5
- data/ext/tomoto/lda.cpp +42 -39
- data/ext/tomoto/llda.cpp +6 -6
- data/ext/tomoto/mglda.cpp +15 -15
- data/ext/tomoto/pa.cpp +6 -6
- data/ext/tomoto/plda.cpp +6 -6
- data/ext/tomoto/slda.cpp +8 -8
- data/ext/tomoto/{ext.cpp → tomoto.cpp} +8 -8
- data/ext/tomoto/utils.h +16 -70
- data/lib/tomoto/version.rb +1 -1
- data/lib/tomoto.rb +5 -1
- data/vendor/EigenRand/EigenRand/Core.h +10 -10
- data/vendor/EigenRand/EigenRand/Dists/Basic.h +208 -9
- data/vendor/EigenRand/EigenRand/Dists/Discrete.h +52 -31
- data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +9 -8
- data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +28 -21
- data/vendor/EigenRand/EigenRand/EigenRand +11 -6
- data/vendor/EigenRand/EigenRand/Macro.h +13 -7
- data/vendor/EigenRand/EigenRand/MorePacketMath.h +348 -740
- data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +5 -3
- data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +9 -3
- data/vendor/EigenRand/EigenRand/PacketFilter.h +11 -253
- data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +21 -47
- data/vendor/EigenRand/EigenRand/RandUtils.h +50 -344
- data/vendor/EigenRand/EigenRand/arch/AVX/MorePacketMath.h +619 -0
- data/vendor/EigenRand/EigenRand/arch/AVX/PacketFilter.h +149 -0
- data/vendor/EigenRand/EigenRand/arch/AVX/RandUtils.h +228 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/MorePacketMath.h +473 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/PacketFilter.h +142 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/RandUtils.h +126 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/MorePacketMath.h +501 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/PacketFilter.h +133 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/RandUtils.h +120 -0
- data/vendor/EigenRand/EigenRand/doc.h +24 -12
- data/vendor/EigenRand/README.md +57 -4
- data/vendor/eigen/COPYING.APACHE +203 -0
- data/vendor/eigen/COPYING.BSD +1 -1
- data/vendor/eigen/COPYING.MINPACK +51 -52
- data/vendor/eigen/Eigen/Cholesky +0 -1
- data/vendor/eigen/Eigen/Core +112 -265
- data/vendor/eigen/Eigen/Eigenvalues +2 -3
- data/vendor/eigen/Eigen/Geometry +5 -8
- data/vendor/eigen/Eigen/Householder +0 -1
- data/vendor/eigen/Eigen/Jacobi +0 -1
- data/vendor/eigen/Eigen/KLUSupport +41 -0
- data/vendor/eigen/Eigen/LU +2 -5
- data/vendor/eigen/Eigen/OrderingMethods +0 -3
- data/vendor/eigen/Eigen/PaStiXSupport +1 -0
- data/vendor/eigen/Eigen/PardisoSupport +0 -0
- data/vendor/eigen/Eigen/QR +2 -3
- data/vendor/eigen/Eigen/QtAlignedMalloc +0 -1
- data/vendor/eigen/Eigen/SVD +0 -1
- data/vendor/eigen/Eigen/Sparse +0 -2
- data/vendor/eigen/Eigen/SparseCholesky +0 -8
- data/vendor/eigen/Eigen/SparseLU +4 -0
- data/vendor/eigen/Eigen/SparseQR +0 -1
- data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
- data/vendor/eigen/Eigen/src/Cholesky/LLT.h +39 -23
- data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
- data/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
- data/vendor/eigen/Eigen/src/Core/Array.h +99 -11
- data/vendor/eigen/Eigen/src/Core/ArrayBase.h +3 -3
- data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
- data/vendor/eigen/Eigen/src/Core/Assign.h +1 -1
- data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
- data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
- data/vendor/eigen/Eigen/src/Core/BandMatrix.h +16 -16
- data/vendor/eigen/Eigen/src/Core/Block.h +56 -60
- data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
- data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
- data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
- data/vendor/eigen/Eigen/src/Core/CoreIterators.h +5 -0
- data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
- data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
- data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
- data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +14 -10
- data/vendor/eigen/Eigen/src/Core/DenseBase.h +132 -42
- data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
- data/vendor/eigen/Eigen/src/Core/DenseStorage.h +153 -71
- data/vendor/eigen/Eigen/src/Core/Diagonal.h +21 -23
- data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
- data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
- data/vendor/eigen/Eigen/src/Core/Dot.h +10 -10
- data/vendor/eigen/Eigen/src/Core/EigenBase.h +10 -9
- data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
- data/vendor/eigen/Eigen/src/Core/Fuzzy.h +3 -3
- data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
- data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +599 -152
- data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
- data/vendor/eigen/Eigen/src/Core/IO.h +40 -7
- data/vendor/eigen/Eigen/src/Core/IndexedView.h +237 -0
- data/vendor/eigen/Eigen/src/Core/Inverse.h +9 -10
- data/vendor/eigen/Eigen/src/Core/Map.h +7 -7
- data/vendor/eigen/Eigen/src/Core/MapBase.h +10 -3
- data/vendor/eigen/Eigen/src/Core/MathFunctions.h +767 -125
- data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
- data/vendor/eigen/Eigen/src/Core/Matrix.h +131 -25
- data/vendor/eigen/Eigen/src/Core/MatrixBase.h +21 -3
- data/vendor/eigen/Eigen/src/Core/NestByValue.h +25 -50
- data/vendor/eigen/Eigen/src/Core/NoAlias.h +4 -3
- data/vendor/eigen/Eigen/src/Core/NumTraits.h +107 -20
- data/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +3 -31
- data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +152 -59
- data/vendor/eigen/Eigen/src/Core/Product.h +30 -25
- data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +192 -125
- data/vendor/eigen/Eigen/src/Core/Random.h +37 -1
- data/vendor/eigen/Eigen/src/Core/Redux.h +180 -170
- data/vendor/eigen/Eigen/src/Core/Ref.h +121 -23
- data/vendor/eigen/Eigen/src/Core/Replicate.h +8 -8
- data/vendor/eigen/Eigen/src/Core/Reshaped.h +454 -0
- data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
- data/vendor/eigen/Eigen/src/Core/Reverse.h +18 -12
- data/vendor/eigen/Eigen/src/Core/Select.h +8 -6
- data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
- data/vendor/eigen/Eigen/src/Core/Solve.h +14 -14
- data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +16 -16
- data/vendor/eigen/Eigen/src/Core/SolverBase.h +41 -3
- data/vendor/eigen/Eigen/src/Core/StableNorm.h +100 -70
- data/vendor/eigen/Eigen/src/Core/StlIterators.h +463 -0
- data/vendor/eigen/Eigen/src/Core/Stride.h +9 -4
- data/vendor/eigen/Eigen/src/Core/Swap.h +5 -4
- data/vendor/eigen/Eigen/src/Core/Transpose.h +88 -27
- data/vendor/eigen/Eigen/src/Core/Transpositions.h +26 -47
- data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +93 -75
- data/vendor/eigen/Eigen/src/Core/VectorBlock.h +5 -5
- data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
- data/vendor/eigen/Eigen/src/Core/Visitor.h +137 -29
- data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
- data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
- data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
- data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +207 -236
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1482 -495
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
- data/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
- data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
- data/vendor/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- data/vendor/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
- data/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- data/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- data/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
- data/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
- data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
- data/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
- data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
- data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
- data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
- data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
- data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
- data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
- data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
- data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +355 -16
- data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1075 -586
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +49 -24
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +41 -35
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +6 -6
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +4 -2
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
- data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +22 -5
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +53 -30
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +16 -8
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +4 -4
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
- data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +33 -27
- data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +14 -12
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +36 -34
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +8 -4
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
- data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +304 -119
- data/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- data/vendor/eigen/Eigen/src/Core/util/Constants.h +25 -9
- data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +26 -3
- data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +29 -9
- data/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- data/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
- data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
- data/vendor/eigen/Eigen/src/Core/util/Macros.h +709 -246
- data/vendor/eigen/Eigen/src/Core/util/Memory.h +222 -52
- data/vendor/eigen/Eigen/src/Core/util/Meta.h +355 -77
- data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +5 -1
- data/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
- data/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +65 -30
- data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
- data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +7 -4
- data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
- data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
- data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +21 -9
- data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +77 -43
- data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
- data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
- data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
- data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
- data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
- data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
- data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
- data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
- data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +70 -14
- data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
- data/vendor/eigen/Eigen/src/Geometry/Scaling.h +23 -5
- data/vendor/eigen/Eigen/src/Geometry/Transform.h +88 -67
- data/vendor/eigen/Eigen/src/Geometry/Translation.h +6 -12
- data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +1 -1
- data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
- data/vendor/eigen/Eigen/src/Householder/Householder.h +8 -4
- data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
- data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
- data/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- data/vendor/eigen/Eigen/src/LU/Determinant.h +35 -19
- data/vendor/eigen/Eigen/src/LU/FullPivLU.h +29 -43
- data/vendor/eigen/Eigen/src/LU/InverseImpl.h +25 -8
- data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +71 -58
- data/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
- data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
- data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
- data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
- data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
- data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +9 -7
- data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
- data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
- data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
- data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
- data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
- data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +183 -63
- data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
- data/vendor/eigen/Eigen/src/SVD/SVDBase.h +83 -22
- data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
- data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +17 -9
- data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +12 -37
- data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +3 -2
- data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
- data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
- data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
- data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
- data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
- data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
- data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +4 -2
- data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
- data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +126 -11
- data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
- data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
- data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
- data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +5 -2
- data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
- data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
- data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +1 -0
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +162 -12
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
- data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
- data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +2 -12
- data/vendor/eigen/Eigen/src/StlSupport/StdList.h +2 -2
- data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
- data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
- data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
- data/vendor/eigen/Eigen/src/misc/lapacke.h +5 -4
- data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +28 -2
- data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
- data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
- data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
- data/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
- data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
- data/vendor/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
- data/vendor/eigen/README.md +2 -0
- data/vendor/eigen/bench/btl/README +1 -1
- data/vendor/eigen/bench/tensors/README +6 -7
- data/vendor/eigen/ci/README.md +56 -0
- data/vendor/eigen/demos/mix_eigen_and_c/README +1 -1
- data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +213 -158
- data/vendor/eigen/unsupported/README.txt +1 -1
- data/vendor/tomotopy/README.kr.rst +78 -0
- data/vendor/tomotopy/README.rst +75 -0
- data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
- data/vendor/tomotopy/src/Labeling/Phraser.hpp +4 -4
- data/vendor/tomotopy/src/TopicModel/CTModel.hpp +7 -3
- data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +7 -3
- data/vendor/tomotopy/src/TopicModel/DTModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +2 -2
- data/vendor/tomotopy/src/TopicModel/HDP.h +1 -0
- data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +57 -6
- data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +3 -2
- data/vendor/tomotopy/src/TopicModel/LDA.h +3 -3
- data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +5 -5
- data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +50 -19
- data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +6 -2
- data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +3 -2
- data/vendor/tomotopy/src/TopicModel/PAModel.hpp +1 -1
- data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +6 -2
- data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
- data/vendor/tomotopy/src/TopicModel/PTModel.hpp +36 -3
- data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +55 -26
- data/vendor/tomotopy/src/Utils/AliasMethod.hpp +5 -4
- data/vendor/tomotopy/src/Utils/Dictionary.h +2 -2
- data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
- data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +1 -1
- data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +1 -1
- data/vendor/tomotopy/src/Utils/exception.h +6 -0
- data/vendor/tomotopy/src/Utils/math.h +2 -2
- data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
- data/vendor/tomotopy/src/Utils/serializer.hpp +30 -5
- data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
- metadata +64 -18
- data/vendor/eigen/Eigen/CMakeLists.txt +0 -19
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -674
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- data/vendor/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
@@ -40,68 +40,126 @@ typedef const VectorBlock<const Derived> ConstSegmentReturnType;
|
|
40
40
|
template<int Size> struct FixedSegmentReturnType { typedef VectorBlock<Derived, Size> Type; };
|
41
41
|
template<int Size> struct ConstFixedSegmentReturnType { typedef const VectorBlock<const Derived, Size> Type; };
|
42
42
|
|
43
|
+
/// \internal inner-vector
|
44
|
+
typedef Block<Derived,IsRowMajor?1:Dynamic,IsRowMajor?Dynamic:1,true> InnerVectorReturnType;
|
45
|
+
typedef Block<const Derived,IsRowMajor?1:Dynamic,IsRowMajor?Dynamic:1,true> ConstInnerVectorReturnType;
|
46
|
+
|
47
|
+
/// \internal set of inner-vectors
|
48
|
+
typedef Block<Derived,Dynamic,Dynamic,true> InnerVectorsReturnType;
|
49
|
+
typedef Block<const Derived,Dynamic,Dynamic,true> ConstInnerVectorsReturnType;
|
50
|
+
|
43
51
|
#endif // not EIGEN_PARSED_BY_DOXYGEN
|
44
52
|
|
45
|
-
/// \returns
|
53
|
+
/// \returns an expression of a block in \c *this with either dynamic or fixed sizes.
|
46
54
|
///
|
47
|
-
/// \param
|
48
|
-
/// \param
|
49
|
-
/// \param
|
50
|
-
/// \param
|
55
|
+
/// \param startRow the first row in the block
|
56
|
+
/// \param startCol the first column in the block
|
57
|
+
/// \param blockRows number of rows in the block, specified at either run-time or compile-time
|
58
|
+
/// \param blockCols number of columns in the block, specified at either run-time or compile-time
|
59
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
60
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
51
61
|
///
|
52
|
-
/// Example: \include MatrixBase_block_int_int_int_int.cpp
|
62
|
+
/// Example using runtime (aka dynamic) sizes: \include MatrixBase_block_int_int_int_int.cpp
|
53
63
|
/// Output: \verbinclude MatrixBase_block_int_int_int_int.out
|
54
64
|
///
|
55
|
-
/// \
|
65
|
+
/// \newin{3.4}:
|
66
|
+
///
|
67
|
+
/// The number of rows \a blockRows and columns \a blockCols can also be specified at compile-time by passing Eigen::fix<N>,
|
68
|
+
/// or Eigen::fix<N>(n) as arguments. In the later case, \c n plays the role of a runtime fallback value in case \c N equals Eigen::Dynamic.
|
69
|
+
/// Here is an example with a fixed number of rows \c NRows and dynamic number of columns \c cols:
|
70
|
+
/// \code
|
71
|
+
/// mat.block(i,j,fix<NRows>,cols)
|
72
|
+
/// \endcode
|
73
|
+
///
|
74
|
+
/// This function thus fully covers the features offered by the following overloads block<NRows,NCols>(Index, Index),
|
75
|
+
/// and block<NRows,NCols>(Index, Index, Index, Index) that are thus obsolete. Indeed, this generic version avoids
|
76
|
+
/// redundancy, it preserves the argument order, and prevents the need to rely on the template keyword in templated code.
|
77
|
+
///
|
78
|
+
/// but with less redundancy and more consistency as it does not modify the argument order
|
79
|
+
/// and seamlessly enable hybrid fixed/dynamic sizes.
|
80
|
+
///
|
81
|
+
/// \note Even in the case that the returned expression has dynamic size, in the case
|
56
82
|
/// when it is applied to a fixed-size matrix, it inherits a fixed maximal size,
|
57
83
|
/// which means that evaluating it does not cause a dynamic memory allocation.
|
58
84
|
///
|
59
85
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
60
86
|
///
|
61
|
-
/// \sa class Block,
|
87
|
+
/// \sa class Block, fix, fix<N>(int)
|
62
88
|
///
|
63
|
-
|
64
|
-
|
89
|
+
template<typename NRowsType, typename NColsType>
|
90
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
91
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
92
|
+
typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
93
|
+
#else
|
94
|
+
typename FixedBlockXpr<...,...>::Type
|
95
|
+
#endif
|
96
|
+
block(Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols)
|
65
97
|
{
|
66
|
-
return
|
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));
|
67
100
|
}
|
68
101
|
|
69
|
-
/// This is the const version of block(Index,Index,
|
70
|
-
|
71
|
-
|
102
|
+
/// This is the const version of block(Index,Index,NRowsType,NColsType)
|
103
|
+
template<typename NRowsType, typename NColsType>
|
104
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
105
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
106
|
+
const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
107
|
+
#else
|
108
|
+
const typename ConstFixedBlockXpr<...,...>::Type
|
109
|
+
#endif
|
110
|
+
block(Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols) const
|
72
111
|
{
|
73
|
-
return
|
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));
|
74
114
|
}
|
75
115
|
|
76
116
|
|
77
117
|
|
78
|
-
|
79
|
-
/// \returns a dynamic-size expression of a top-right corner of *this.
|
118
|
+
/// \returns a expression of a top-right corner of \c *this with either dynamic or fixed sizes.
|
80
119
|
///
|
81
120
|
/// \param cRows the number of rows in the corner
|
82
121
|
/// \param cCols the number of columns in the corner
|
122
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
123
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
83
124
|
///
|
84
|
-
/// Example: \include MatrixBase_topRightCorner_int_int.cpp
|
125
|
+
/// Example with dynamic sizes: \include MatrixBase_topRightCorner_int_int.cpp
|
85
126
|
/// Output: \verbinclude MatrixBase_topRightCorner_int_int.out
|
86
127
|
///
|
128
|
+
/// The number of rows \a blockRows and columns \a blockCols can also be specified at compile-time by passing Eigen::fix<N>,
|
129
|
+
/// or Eigen::fix<N>(n) as arguments. See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
130
|
+
///
|
87
131
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
88
132
|
///
|
89
|
-
/// \sa
|
133
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
90
134
|
///
|
91
|
-
|
92
|
-
|
135
|
+
template<typename NRowsType, typename NColsType>
|
136
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
137
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
138
|
+
typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
139
|
+
#else
|
140
|
+
typename FixedBlockXpr<...,...>::Type
|
141
|
+
#endif
|
142
|
+
topRightCorner(NRowsType cRows, NColsType cCols)
|
93
143
|
{
|
94
|
-
return
|
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));
|
95
146
|
}
|
96
147
|
|
97
|
-
/// This is the const version of topRightCorner(
|
98
|
-
|
99
|
-
|
148
|
+
/// This is the const version of topRightCorner(NRowsType, NColsType).
|
149
|
+
template<typename NRowsType, typename NColsType>
|
150
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
151
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
152
|
+
const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
153
|
+
#else
|
154
|
+
const typename ConstFixedBlockXpr<...,...>::Type
|
155
|
+
#endif
|
156
|
+
topRightCorner(NRowsType cRows, NColsType cCols) const
|
100
157
|
{
|
101
|
-
return
|
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));
|
102
160
|
}
|
103
161
|
|
104
|
-
/// \returns an expression of a fixed-size top-right corner of *this.
|
162
|
+
/// \returns an expression of a fixed-size top-right corner of \c *this.
|
105
163
|
///
|
106
164
|
/// \tparam CRows the number of rows in the corner
|
107
165
|
/// \tparam CCols the number of columns in the corner
|
@@ -114,21 +172,21 @@ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
|
114
172
|
/// \sa class Block, block<int,int>(Index,Index)
|
115
173
|
///
|
116
174
|
template<int CRows, int CCols>
|
117
|
-
EIGEN_DEVICE_FUNC
|
118
|
-
|
175
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
176
|
+
typename FixedBlockXpr<CRows,CCols>::Type topRightCorner()
|
119
177
|
{
|
120
178
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - CCols);
|
121
179
|
}
|
122
180
|
|
123
181
|
/// This is the const version of topRightCorner<int, int>().
|
124
182
|
template<int CRows, int CCols>
|
125
|
-
EIGEN_DEVICE_FUNC
|
126
|
-
|
183
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
184
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type topRightCorner() const
|
127
185
|
{
|
128
186
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - CCols);
|
129
187
|
}
|
130
188
|
|
131
|
-
/// \returns an expression of a top-right corner of *this.
|
189
|
+
/// \returns an expression of a top-right corner of \c *this.
|
132
190
|
///
|
133
191
|
/// \tparam CRows number of rows in corner as specified at compile-time
|
134
192
|
/// \tparam CCols number of columns in corner as specified at compile-time
|
@@ -148,46 +206,67 @@ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
|
148
206
|
/// \sa class Block
|
149
207
|
///
|
150
208
|
template<int CRows, int CCols>
|
151
|
-
|
209
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
210
|
+
typename FixedBlockXpr<CRows,CCols>::Type topRightCorner(Index cRows, Index cCols)
|
152
211
|
{
|
153
212
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - cCols, cRows, cCols);
|
154
213
|
}
|
155
214
|
|
156
215
|
/// This is the const version of topRightCorner<int, int>(Index, Index).
|
157
216
|
template<int CRows, int CCols>
|
158
|
-
|
217
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
218
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type topRightCorner(Index cRows, Index cCols) const
|
159
219
|
{
|
160
220
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - cCols, cRows, cCols);
|
161
221
|
}
|
162
222
|
|
163
223
|
|
164
224
|
|
165
|
-
/// \returns
|
225
|
+
/// \returns an expression of a top-left corner of \c *this with either dynamic or fixed sizes.
|
166
226
|
///
|
167
227
|
/// \param cRows the number of rows in the corner
|
168
228
|
/// \param cCols the number of columns in the corner
|
229
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
230
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
169
231
|
///
|
170
232
|
/// Example: \include MatrixBase_topLeftCorner_int_int.cpp
|
171
233
|
/// Output: \verbinclude MatrixBase_topLeftCorner_int_int.out
|
172
234
|
///
|
235
|
+
/// The number of rows \a blockRows and columns \a blockCols can also be specified at compile-time by passing Eigen::fix<N>,
|
236
|
+
/// or Eigen::fix<N>(n) as arguments. See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
237
|
+
///
|
173
238
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
174
239
|
///
|
175
|
-
/// \sa
|
240
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
176
241
|
///
|
177
|
-
|
178
|
-
|
242
|
+
template<typename NRowsType, typename NColsType>
|
243
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
244
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
245
|
+
typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
246
|
+
#else
|
247
|
+
typename FixedBlockXpr<...,...>::Type
|
248
|
+
#endif
|
249
|
+
topLeftCorner(NRowsType cRows, NColsType cCols)
|
179
250
|
{
|
180
|
-
return
|
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));
|
181
253
|
}
|
182
254
|
|
183
255
|
/// This is the const version of topLeftCorner(Index, Index).
|
184
|
-
|
185
|
-
|
256
|
+
template<typename NRowsType, typename NColsType>
|
257
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
258
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
259
|
+
const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
260
|
+
#else
|
261
|
+
const typename ConstFixedBlockXpr<...,...>::Type
|
262
|
+
#endif
|
263
|
+
topLeftCorner(NRowsType cRows, NColsType cCols) const
|
186
264
|
{
|
187
|
-
return
|
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));
|
188
267
|
}
|
189
268
|
|
190
|
-
/// \returns an expression of a fixed-size top-left corner of *this.
|
269
|
+
/// \returns an expression of a fixed-size top-left corner of \c *this.
|
191
270
|
///
|
192
271
|
/// The template parameters CRows and CCols are the number of rows and columns in the corner.
|
193
272
|
///
|
@@ -196,24 +275,24 @@ inline const ConstBlockXpr topLeftCorner(Index cRows, Index cCols) const
|
|
196
275
|
///
|
197
276
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
198
277
|
///
|
199
|
-
/// \sa
|
278
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
200
279
|
///
|
201
280
|
template<int CRows, int CCols>
|
202
|
-
EIGEN_DEVICE_FUNC
|
203
|
-
|
281
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
282
|
+
typename FixedBlockXpr<CRows,CCols>::Type topLeftCorner()
|
204
283
|
{
|
205
284
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0);
|
206
285
|
}
|
207
286
|
|
208
287
|
/// This is the const version of topLeftCorner<int, int>().
|
209
288
|
template<int CRows, int CCols>
|
210
|
-
EIGEN_DEVICE_FUNC
|
211
|
-
|
289
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
290
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type topLeftCorner() const
|
212
291
|
{
|
213
292
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0);
|
214
293
|
}
|
215
294
|
|
216
|
-
/// \returns an expression of a top-left corner of *this.
|
295
|
+
/// \returns an expression of a top-left corner of \c *this.
|
217
296
|
///
|
218
297
|
/// \tparam CRows number of rows in corner as specified at compile-time
|
219
298
|
/// \tparam CCols number of columns in corner as specified at compile-time
|
@@ -233,46 +312,69 @@ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
|
233
312
|
/// \sa class Block
|
234
313
|
///
|
235
314
|
template<int CRows, int CCols>
|
236
|
-
|
315
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
316
|
+
typename FixedBlockXpr<CRows,CCols>::Type topLeftCorner(Index cRows, Index cCols)
|
237
317
|
{
|
238
318
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0, cRows, cCols);
|
239
319
|
}
|
240
320
|
|
241
321
|
/// This is the const version of topLeftCorner<int, int>(Index, Index).
|
242
322
|
template<int CRows, int CCols>
|
243
|
-
|
323
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
324
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type topLeftCorner(Index cRows, Index cCols) const
|
244
325
|
{
|
245
326
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0, cRows, cCols);
|
246
327
|
}
|
247
328
|
|
248
329
|
|
249
330
|
|
250
|
-
/// \returns
|
331
|
+
/// \returns an expression of a bottom-right corner of \c *this with either dynamic or fixed sizes.
|
251
332
|
///
|
252
333
|
/// \param cRows the number of rows in the corner
|
253
334
|
/// \param cCols the number of columns in the corner
|
335
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
336
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
254
337
|
///
|
255
338
|
/// Example: \include MatrixBase_bottomRightCorner_int_int.cpp
|
256
339
|
/// Output: \verbinclude MatrixBase_bottomRightCorner_int_int.out
|
257
340
|
///
|
341
|
+
/// The number of rows \a blockRows and columns \a blockCols can also be specified at compile-time by passing Eigen::fix<N>,
|
342
|
+
/// or Eigen::fix<N>(n) as arguments. See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
343
|
+
///
|
258
344
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
259
345
|
///
|
260
|
-
/// \sa
|
346
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
261
347
|
///
|
262
|
-
|
263
|
-
|
348
|
+
template<typename NRowsType, typename NColsType>
|
349
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
350
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
351
|
+
typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
352
|
+
#else
|
353
|
+
typename FixedBlockXpr<...,...>::Type
|
354
|
+
#endif
|
355
|
+
bottomRightCorner(NRowsType cRows, NColsType cCols)
|
264
356
|
{
|
265
|
-
return
|
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));
|
266
360
|
}
|
267
361
|
|
268
|
-
/// This is the const version of bottomRightCorner(
|
269
|
-
|
270
|
-
|
362
|
+
/// This is the const version of bottomRightCorner(NRowsType, NColsType).
|
363
|
+
template<typename NRowsType, typename NColsType>
|
364
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
365
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
366
|
+
const typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
367
|
+
#else
|
368
|
+
const typename ConstFixedBlockXpr<...,...>::Type
|
369
|
+
#endif
|
370
|
+
bottomRightCorner(NRowsType cRows, NColsType cCols) const
|
271
371
|
{
|
272
|
-
return
|
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));
|
273
375
|
}
|
274
376
|
|
275
|
-
/// \returns an expression of a fixed-size bottom-right corner of *this.
|
377
|
+
/// \returns an expression of a fixed-size bottom-right corner of \c *this.
|
276
378
|
///
|
277
379
|
/// The template parameters CRows and CCols are the number of rows and columns in the corner.
|
278
380
|
///
|
@@ -281,24 +383,24 @@ inline const ConstBlockXpr bottomRightCorner(Index cRows, Index cCols) const
|
|
281
383
|
///
|
282
384
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
283
385
|
///
|
284
|
-
/// \sa
|
386
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
285
387
|
///
|
286
388
|
template<int CRows, int CCols>
|
287
|
-
EIGEN_DEVICE_FUNC
|
288
|
-
|
389
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
390
|
+
typename FixedBlockXpr<CRows,CCols>::Type bottomRightCorner()
|
289
391
|
{
|
290
392
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, cols() - CCols);
|
291
393
|
}
|
292
394
|
|
293
395
|
/// This is the const version of bottomRightCorner<int, int>().
|
294
396
|
template<int CRows, int CCols>
|
295
|
-
EIGEN_DEVICE_FUNC
|
296
|
-
|
397
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
398
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomRightCorner() const
|
297
399
|
{
|
298
400
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, cols() - CCols);
|
299
401
|
}
|
300
402
|
|
301
|
-
/// \returns an expression of a bottom-right corner of *this.
|
403
|
+
/// \returns an expression of a bottom-right corner of \c *this.
|
302
404
|
///
|
303
405
|
/// \tparam CRows number of rows in corner as specified at compile-time
|
304
406
|
/// \tparam CCols number of columns in corner as specified at compile-time
|
@@ -318,46 +420,69 @@ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
|
318
420
|
/// \sa class Block
|
319
421
|
///
|
320
422
|
template<int CRows, int CCols>
|
321
|
-
|
423
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
424
|
+
typename FixedBlockXpr<CRows,CCols>::Type bottomRightCorner(Index cRows, Index cCols)
|
322
425
|
{
|
323
426
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
|
324
427
|
}
|
325
428
|
|
326
429
|
/// This is the const version of bottomRightCorner<int, int>(Index, Index).
|
327
430
|
template<int CRows, int CCols>
|
328
|
-
|
431
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
432
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomRightCorner(Index cRows, Index cCols) const
|
329
433
|
{
|
330
434
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
|
331
435
|
}
|
332
436
|
|
333
437
|
|
334
438
|
|
335
|
-
/// \returns
|
439
|
+
/// \returns an expression of a bottom-left corner of \c *this with either dynamic or fixed sizes.
|
336
440
|
///
|
337
441
|
/// \param cRows the number of rows in the corner
|
338
442
|
/// \param cCols the number of columns in the corner
|
443
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
444
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
339
445
|
///
|
340
446
|
/// Example: \include MatrixBase_bottomLeftCorner_int_int.cpp
|
341
447
|
/// Output: \verbinclude MatrixBase_bottomLeftCorner_int_int.out
|
342
448
|
///
|
449
|
+
/// The number of rows \a blockRows and columns \a blockCols can also be specified at compile-time by passing Eigen::fix<N>,
|
450
|
+
/// or Eigen::fix<N>(n) as arguments. See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
451
|
+
///
|
343
452
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
344
453
|
///
|
345
|
-
/// \sa
|
454
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
346
455
|
///
|
347
|
-
|
348
|
-
|
456
|
+
template<typename NRowsType, typename NColsType>
|
457
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
458
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
459
|
+
typename FixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
460
|
+
#else
|
461
|
+
typename FixedBlockXpr<...,...>::Type
|
462
|
+
#endif
|
463
|
+
bottomLeftCorner(NRowsType cRows, NColsType cCols)
|
349
464
|
{
|
350
|
-
return
|
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));
|
351
468
|
}
|
352
469
|
|
353
|
-
/// This is the const version of bottomLeftCorner(
|
354
|
-
|
355
|
-
|
470
|
+
/// This is the const version of bottomLeftCorner(NRowsType, NColsType).
|
471
|
+
template<typename NRowsType, typename NColsType>
|
472
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
473
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
474
|
+
typename ConstFixedBlockXpr<internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>::Type
|
475
|
+
#else
|
476
|
+
typename ConstFixedBlockXpr<...,...>::Type
|
477
|
+
#endif
|
478
|
+
bottomLeftCorner(NRowsType cRows, NColsType cCols) const
|
356
479
|
{
|
357
|
-
return
|
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));
|
358
483
|
}
|
359
484
|
|
360
|
-
/// \returns an expression of a fixed-size bottom-left corner of *this.
|
485
|
+
/// \returns an expression of a fixed-size bottom-left corner of \c *this.
|
361
486
|
///
|
362
487
|
/// The template parameters CRows and CCols are the number of rows and columns in the corner.
|
363
488
|
///
|
@@ -366,24 +491,24 @@ inline const ConstBlockXpr bottomLeftCorner(Index cRows, Index cCols) const
|
|
366
491
|
///
|
367
492
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
368
493
|
///
|
369
|
-
/// \sa
|
494
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
370
495
|
///
|
371
496
|
template<int CRows, int CCols>
|
372
|
-
EIGEN_DEVICE_FUNC
|
373
|
-
|
497
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
498
|
+
typename FixedBlockXpr<CRows,CCols>::Type bottomLeftCorner()
|
374
499
|
{
|
375
500
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, 0);
|
376
501
|
}
|
377
502
|
|
378
503
|
/// This is the const version of bottomLeftCorner<int, int>().
|
379
504
|
template<int CRows, int CCols>
|
380
|
-
EIGEN_DEVICE_FUNC
|
381
|
-
|
505
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
506
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomLeftCorner() const
|
382
507
|
{
|
383
508
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, 0);
|
384
509
|
}
|
385
510
|
|
386
|
-
/// \returns an expression of a bottom-left corner of *this.
|
511
|
+
/// \returns an expression of a bottom-left corner of \c *this.
|
387
512
|
///
|
388
513
|
/// \tparam CRows number of rows in corner as specified at compile-time
|
389
514
|
/// \tparam CCols number of columns in corner as specified at compile-time
|
@@ -403,45 +528,66 @@ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
|
403
528
|
/// \sa class Block
|
404
529
|
///
|
405
530
|
template<int CRows, int CCols>
|
406
|
-
|
531
|
+
EIGEN_STRONG_INLINE
|
532
|
+
typename FixedBlockXpr<CRows,CCols>::Type bottomLeftCorner(Index cRows, Index cCols)
|
407
533
|
{
|
408
534
|
return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, 0, cRows, cCols);
|
409
535
|
}
|
410
536
|
|
411
537
|
/// This is the const version of bottomLeftCorner<int, int>(Index, Index).
|
412
538
|
template<int CRows, int CCols>
|
413
|
-
|
539
|
+
EIGEN_STRONG_INLINE
|
540
|
+
const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomLeftCorner(Index cRows, Index cCols) const
|
414
541
|
{
|
415
542
|
return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, 0, cRows, cCols);
|
416
543
|
}
|
417
544
|
|
418
545
|
|
419
546
|
|
420
|
-
/// \returns a block consisting of the top rows of *this.
|
547
|
+
/// \returns a block consisting of the top rows of \c *this.
|
421
548
|
///
|
422
549
|
/// \param n the number of rows in the block
|
550
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
423
551
|
///
|
424
552
|
/// Example: \include MatrixBase_topRows_int.cpp
|
425
553
|
/// Output: \verbinclude MatrixBase_topRows_int.out
|
426
554
|
///
|
555
|
+
/// The number of rows \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
556
|
+
/// or Eigen::fix<N>(n) as arguments.
|
557
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
558
|
+
///
|
427
559
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
428
560
|
///
|
429
|
-
/// \sa
|
561
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
430
562
|
///
|
431
|
-
|
432
|
-
|
563
|
+
template<typename NRowsType>
|
564
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
565
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
566
|
+
typename NRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
567
|
+
#else
|
568
|
+
typename NRowsBlockXpr<...>::Type
|
569
|
+
#endif
|
570
|
+
topRows(NRowsType n)
|
433
571
|
{
|
434
|
-
return
|
572
|
+
return typename NRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
573
|
+
(derived(), 0, 0, internal::get_runtime_value(n), cols());
|
435
574
|
}
|
436
575
|
|
437
|
-
/// This is the const version of topRows(
|
438
|
-
|
439
|
-
|
576
|
+
/// This is the const version of topRows(NRowsType).
|
577
|
+
template<typename NRowsType>
|
578
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
579
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
580
|
+
const typename ConstNRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
581
|
+
#else
|
582
|
+
const typename ConstNRowsBlockXpr<...>::Type
|
583
|
+
#endif
|
584
|
+
topRows(NRowsType n) const
|
440
585
|
{
|
441
|
-
return
|
586
|
+
return typename ConstNRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
587
|
+
(derived(), 0, 0, internal::get_runtime_value(n), cols());
|
442
588
|
}
|
443
589
|
|
444
|
-
/// \returns a block consisting of the top rows of *this.
|
590
|
+
/// \returns a block consisting of the top rows of \c *this.
|
445
591
|
///
|
446
592
|
/// \tparam N the number of rows in the block as specified at compile-time
|
447
593
|
/// \param n the number of rows in the block as specified at run-time
|
@@ -454,50 +600,69 @@ inline ConstRowsBlockXpr topRows(Index n) const
|
|
454
600
|
///
|
455
601
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
456
602
|
///
|
457
|
-
/// \sa
|
603
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
458
604
|
///
|
459
605
|
template<int N>
|
460
|
-
EIGEN_DEVICE_FUNC
|
461
|
-
|
606
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
607
|
+
typename NRowsBlockXpr<N>::Type topRows(Index n = N)
|
462
608
|
{
|
463
609
|
return typename NRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
|
464
610
|
}
|
465
611
|
|
466
612
|
/// This is the const version of topRows<int>().
|
467
613
|
template<int N>
|
468
|
-
EIGEN_DEVICE_FUNC
|
469
|
-
|
614
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
615
|
+
typename ConstNRowsBlockXpr<N>::Type topRows(Index n = N) const
|
470
616
|
{
|
471
617
|
return typename ConstNRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
|
472
618
|
}
|
473
619
|
|
474
620
|
|
475
621
|
|
476
|
-
/// \returns a block consisting of the bottom rows of *this.
|
622
|
+
/// \returns a block consisting of the bottom rows of \c *this.
|
477
623
|
///
|
478
624
|
/// \param n the number of rows in the block
|
625
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
479
626
|
///
|
480
627
|
/// Example: \include MatrixBase_bottomRows_int.cpp
|
481
628
|
/// Output: \verbinclude MatrixBase_bottomRows_int.out
|
482
629
|
///
|
630
|
+
/// The number of rows \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
631
|
+
/// or Eigen::fix<N>(n) as arguments.
|
632
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
633
|
+
///
|
483
634
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
484
635
|
///
|
485
|
-
/// \sa
|
636
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
486
637
|
///
|
487
|
-
|
488
|
-
|
638
|
+
template<typename NRowsType>
|
639
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
640
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
641
|
+
typename NRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
642
|
+
#else
|
643
|
+
typename NRowsBlockXpr<...>::Type
|
644
|
+
#endif
|
645
|
+
bottomRows(NRowsType n)
|
489
646
|
{
|
490
|
-
return
|
647
|
+
return typename NRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
648
|
+
(derived(), rows() - internal::get_runtime_value(n), 0, internal::get_runtime_value(n), cols());
|
491
649
|
}
|
492
650
|
|
493
|
-
/// This is the const version of bottomRows(
|
494
|
-
|
495
|
-
|
651
|
+
/// This is the const version of bottomRows(NRowsType).
|
652
|
+
template<typename NRowsType>
|
653
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
654
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
655
|
+
const typename ConstNRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
656
|
+
#else
|
657
|
+
const typename ConstNRowsBlockXpr<...>::Type
|
658
|
+
#endif
|
659
|
+
bottomRows(NRowsType n) const
|
496
660
|
{
|
497
|
-
return
|
661
|
+
return typename ConstNRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
662
|
+
(derived(), rows() - internal::get_runtime_value(n), 0, internal::get_runtime_value(n), cols());
|
498
663
|
}
|
499
664
|
|
500
|
-
/// \returns a block consisting of the bottom rows of *this.
|
665
|
+
/// \returns a block consisting of the bottom rows of \c *this.
|
501
666
|
///
|
502
667
|
/// \tparam N the number of rows in the block as specified at compile-time
|
503
668
|
/// \param n the number of rows in the block as specified at run-time
|
@@ -510,51 +675,70 @@ inline ConstRowsBlockXpr bottomRows(Index n) const
|
|
510
675
|
///
|
511
676
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
512
677
|
///
|
513
|
-
/// \sa
|
678
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
514
679
|
///
|
515
680
|
template<int N>
|
516
|
-
EIGEN_DEVICE_FUNC
|
517
|
-
|
681
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
682
|
+
typename NRowsBlockXpr<N>::Type bottomRows(Index n = N)
|
518
683
|
{
|
519
684
|
return typename NRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
|
520
685
|
}
|
521
686
|
|
522
687
|
/// This is the const version of bottomRows<int>().
|
523
688
|
template<int N>
|
524
|
-
EIGEN_DEVICE_FUNC
|
525
|
-
|
689
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
690
|
+
typename ConstNRowsBlockXpr<N>::Type bottomRows(Index n = N) const
|
526
691
|
{
|
527
692
|
return typename ConstNRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
|
528
693
|
}
|
529
694
|
|
530
695
|
|
531
696
|
|
532
|
-
/// \returns a block consisting of a range of rows of *this.
|
697
|
+
/// \returns a block consisting of a range of rows of \c *this.
|
533
698
|
///
|
534
699
|
/// \param startRow the index of the first row in the block
|
535
700
|
/// \param n the number of rows in the block
|
701
|
+
/// \tparam NRowsType the type of the value handling the number of rows in the block, typically Index.
|
536
702
|
///
|
537
703
|
/// Example: \include DenseBase_middleRows_int.cpp
|
538
704
|
/// Output: \verbinclude DenseBase_middleRows_int.out
|
539
705
|
///
|
706
|
+
/// The number of rows \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
707
|
+
/// or Eigen::fix<N>(n) as arguments.
|
708
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
709
|
+
///
|
540
710
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
541
711
|
///
|
542
|
-
/// \sa
|
712
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
543
713
|
///
|
544
|
-
|
545
|
-
|
714
|
+
template<typename NRowsType>
|
715
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
716
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
717
|
+
typename NRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
718
|
+
#else
|
719
|
+
typename NRowsBlockXpr<...>::Type
|
720
|
+
#endif
|
721
|
+
middleRows(Index startRow, NRowsType n)
|
546
722
|
{
|
547
|
-
return
|
723
|
+
return typename NRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
724
|
+
(derived(), startRow, 0, internal::get_runtime_value(n), cols());
|
548
725
|
}
|
549
726
|
|
550
|
-
/// This is the const version of middleRows(Index,
|
551
|
-
|
552
|
-
|
727
|
+
/// This is the const version of middleRows(Index,NRowsType).
|
728
|
+
template<typename NRowsType>
|
729
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
730
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
731
|
+
const typename ConstNRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
732
|
+
#else
|
733
|
+
const typename ConstNRowsBlockXpr<...>::Type
|
734
|
+
#endif
|
735
|
+
middleRows(Index startRow, NRowsType n) const
|
553
736
|
{
|
554
|
-
return
|
737
|
+
return typename ConstNRowsBlockXpr<internal::get_fixed_value<NRowsType>::value>::Type
|
738
|
+
(derived(), startRow, 0, internal::get_runtime_value(n), cols());
|
555
739
|
}
|
556
740
|
|
557
|
-
/// \returns a block consisting of a range of rows of *this.
|
741
|
+
/// \returns a block consisting of a range of rows of \c *this.
|
558
742
|
///
|
559
743
|
/// \tparam N the number of rows in the block as specified at compile-time
|
560
744
|
/// \param startRow the index of the first row in the block
|
@@ -568,50 +752,69 @@ inline ConstRowsBlockXpr middleRows(Index startRow, Index n) const
|
|
568
752
|
///
|
569
753
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
570
754
|
///
|
571
|
-
/// \sa
|
755
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
572
756
|
///
|
573
757
|
template<int N>
|
574
|
-
EIGEN_DEVICE_FUNC
|
575
|
-
|
758
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
759
|
+
typename NRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N)
|
576
760
|
{
|
577
761
|
return typename NRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
|
578
762
|
}
|
579
763
|
|
580
764
|
/// This is the const version of middleRows<int>().
|
581
765
|
template<int N>
|
582
|
-
EIGEN_DEVICE_FUNC
|
583
|
-
|
766
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
767
|
+
typename ConstNRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N) const
|
584
768
|
{
|
585
769
|
return typename ConstNRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
|
586
770
|
}
|
587
771
|
|
588
772
|
|
589
773
|
|
590
|
-
/// \returns a block consisting of the left columns of *this.
|
774
|
+
/// \returns a block consisting of the left columns of \c *this.
|
591
775
|
///
|
592
776
|
/// \param n the number of columns in the block
|
777
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
593
778
|
///
|
594
779
|
/// Example: \include MatrixBase_leftCols_int.cpp
|
595
780
|
/// Output: \verbinclude MatrixBase_leftCols_int.out
|
596
781
|
///
|
782
|
+
/// The number of columns \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
783
|
+
/// or Eigen::fix<N>(n) as arguments.
|
784
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
785
|
+
///
|
597
786
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
598
787
|
///
|
599
|
-
/// \sa
|
788
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
600
789
|
///
|
601
|
-
|
602
|
-
|
790
|
+
template<typename NColsType>
|
791
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
792
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
793
|
+
typename NColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
794
|
+
#else
|
795
|
+
typename NColsBlockXpr<...>::Type
|
796
|
+
#endif
|
797
|
+
leftCols(NColsType n)
|
603
798
|
{
|
604
|
-
return
|
799
|
+
return typename NColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
800
|
+
(derived(), 0, 0, rows(), internal::get_runtime_value(n));
|
605
801
|
}
|
606
802
|
|
607
|
-
/// This is the const version of leftCols(
|
608
|
-
|
609
|
-
|
803
|
+
/// This is the const version of leftCols(NColsType).
|
804
|
+
template<typename NColsType>
|
805
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
806
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
807
|
+
const typename ConstNColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
808
|
+
#else
|
809
|
+
const typename ConstNColsBlockXpr<...>::Type
|
810
|
+
#endif
|
811
|
+
leftCols(NColsType n) const
|
610
812
|
{
|
611
|
-
return
|
813
|
+
return typename ConstNColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
814
|
+
(derived(), 0, 0, rows(), internal::get_runtime_value(n));
|
612
815
|
}
|
613
816
|
|
614
|
-
/// \returns a block consisting of the left columns of *this.
|
817
|
+
/// \returns a block consisting of the left columns of \c *this.
|
615
818
|
///
|
616
819
|
/// \tparam N the number of columns in the block as specified at compile-time
|
617
820
|
/// \param n the number of columns in the block as specified at run-time
|
@@ -624,50 +827,69 @@ inline ConstColsBlockXpr leftCols(Index n) const
|
|
624
827
|
///
|
625
828
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
626
829
|
///
|
627
|
-
/// \sa
|
830
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
628
831
|
///
|
629
832
|
template<int N>
|
630
|
-
EIGEN_DEVICE_FUNC
|
631
|
-
|
833
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
834
|
+
typename NColsBlockXpr<N>::Type leftCols(Index n = N)
|
632
835
|
{
|
633
836
|
return typename NColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
|
634
837
|
}
|
635
838
|
|
636
839
|
/// This is the const version of leftCols<int>().
|
637
840
|
template<int N>
|
638
|
-
EIGEN_DEVICE_FUNC
|
639
|
-
|
841
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
842
|
+
typename ConstNColsBlockXpr<N>::Type leftCols(Index n = N) const
|
640
843
|
{
|
641
844
|
return typename ConstNColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
|
642
845
|
}
|
643
846
|
|
644
847
|
|
645
848
|
|
646
|
-
/// \returns a block consisting of the right columns of *this.
|
849
|
+
/// \returns a block consisting of the right columns of \c *this.
|
647
850
|
///
|
648
851
|
/// \param n the number of columns in the block
|
852
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
649
853
|
///
|
650
854
|
/// Example: \include MatrixBase_rightCols_int.cpp
|
651
855
|
/// Output: \verbinclude MatrixBase_rightCols_int.out
|
652
856
|
///
|
857
|
+
/// The number of columns \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
858
|
+
/// or Eigen::fix<N>(n) as arguments.
|
859
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
860
|
+
///
|
653
861
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
654
862
|
///
|
655
|
-
/// \sa
|
863
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
656
864
|
///
|
657
|
-
|
658
|
-
|
865
|
+
template<typename NColsType>
|
866
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
867
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
868
|
+
typename NColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
869
|
+
#else
|
870
|
+
typename NColsBlockXpr<...>::Type
|
871
|
+
#endif
|
872
|
+
rightCols(NColsType n)
|
659
873
|
{
|
660
|
-
return
|
874
|
+
return typename NColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
875
|
+
(derived(), 0, cols() - internal::get_runtime_value(n), rows(), internal::get_runtime_value(n));
|
661
876
|
}
|
662
877
|
|
663
|
-
/// This is the const version of rightCols(
|
664
|
-
|
665
|
-
|
878
|
+
/// This is the const version of rightCols(NColsType).
|
879
|
+
template<typename NColsType>
|
880
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
881
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
882
|
+
const typename ConstNColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
883
|
+
#else
|
884
|
+
const typename ConstNColsBlockXpr<...>::Type
|
885
|
+
#endif
|
886
|
+
rightCols(NColsType n) const
|
666
887
|
{
|
667
|
-
return
|
888
|
+
return typename ConstNColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
889
|
+
(derived(), 0, cols() - internal::get_runtime_value(n), rows(), internal::get_runtime_value(n));
|
668
890
|
}
|
669
891
|
|
670
|
-
/// \returns a block consisting of the right columns of *this.
|
892
|
+
/// \returns a block consisting of the right columns of \c *this.
|
671
893
|
///
|
672
894
|
/// \tparam N the number of columns in the block as specified at compile-time
|
673
895
|
/// \param n the number of columns in the block as specified at run-time
|
@@ -680,51 +902,70 @@ inline ConstColsBlockXpr rightCols(Index n) const
|
|
680
902
|
///
|
681
903
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
682
904
|
///
|
683
|
-
/// \sa
|
905
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
684
906
|
///
|
685
907
|
template<int N>
|
686
|
-
EIGEN_DEVICE_FUNC
|
687
|
-
|
908
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
909
|
+
typename NColsBlockXpr<N>::Type rightCols(Index n = N)
|
688
910
|
{
|
689
911
|
return typename NColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
|
690
912
|
}
|
691
913
|
|
692
914
|
/// This is the const version of rightCols<int>().
|
693
915
|
template<int N>
|
694
|
-
EIGEN_DEVICE_FUNC
|
695
|
-
|
916
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
917
|
+
typename ConstNColsBlockXpr<N>::Type rightCols(Index n = N) const
|
696
918
|
{
|
697
919
|
return typename ConstNColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
|
698
920
|
}
|
699
921
|
|
700
922
|
|
701
923
|
|
702
|
-
/// \returns a block consisting of a range of columns of *this.
|
924
|
+
/// \returns a block consisting of a range of columns of \c *this.
|
703
925
|
///
|
704
926
|
/// \param startCol the index of the first column in the block
|
705
927
|
/// \param numCols the number of columns in the block
|
928
|
+
/// \tparam NColsType the type of the value handling the number of columns in the block, typically Index.
|
706
929
|
///
|
707
930
|
/// Example: \include DenseBase_middleCols_int.cpp
|
708
931
|
/// Output: \verbinclude DenseBase_middleCols_int.out
|
709
932
|
///
|
933
|
+
/// The number of columns \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
934
|
+
/// or Eigen::fix<N>(n) as arguments.
|
935
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
936
|
+
///
|
710
937
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
711
938
|
///
|
712
|
-
/// \sa
|
939
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
713
940
|
///
|
714
|
-
|
715
|
-
|
941
|
+
template<typename NColsType>
|
942
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
943
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
944
|
+
typename NColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
945
|
+
#else
|
946
|
+
typename NColsBlockXpr<...>::Type
|
947
|
+
#endif
|
948
|
+
middleCols(Index startCol, NColsType numCols)
|
716
949
|
{
|
717
|
-
return
|
950
|
+
return typename NColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
951
|
+
(derived(), 0, startCol, rows(), internal::get_runtime_value(numCols));
|
718
952
|
}
|
719
953
|
|
720
|
-
/// This is the const version of middleCols(Index,
|
721
|
-
|
722
|
-
|
954
|
+
/// This is the const version of middleCols(Index,NColsType).
|
955
|
+
template<typename NColsType>
|
956
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
957
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
958
|
+
const typename ConstNColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
959
|
+
#else
|
960
|
+
const typename ConstNColsBlockXpr<...>::Type
|
961
|
+
#endif
|
962
|
+
middleCols(Index startCol, NColsType numCols) const
|
723
963
|
{
|
724
|
-
return
|
964
|
+
return typename ConstNColsBlockXpr<internal::get_fixed_value<NColsType>::value>::Type
|
965
|
+
(derived(), 0, startCol, rows(), internal::get_runtime_value(numCols));
|
725
966
|
}
|
726
967
|
|
727
|
-
/// \returns a block consisting of a range of columns of *this.
|
968
|
+
/// \returns a block consisting of a range of columns of \c *this.
|
728
969
|
///
|
729
970
|
/// \tparam N the number of columns in the block as specified at compile-time
|
730
971
|
/// \param startCol the index of the first column in the block
|
@@ -738,26 +979,26 @@ inline ConstColsBlockXpr middleCols(Index startCol, Index numCols) const
|
|
738
979
|
///
|
739
980
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
740
981
|
///
|
741
|
-
/// \sa
|
982
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
742
983
|
///
|
743
984
|
template<int N>
|
744
|
-
EIGEN_DEVICE_FUNC
|
745
|
-
|
985
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
986
|
+
typename NColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N)
|
746
987
|
{
|
747
988
|
return typename NColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
|
748
989
|
}
|
749
990
|
|
750
991
|
/// This is the const version of middleCols<int>().
|
751
992
|
template<int N>
|
752
|
-
EIGEN_DEVICE_FUNC
|
753
|
-
|
993
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
994
|
+
typename ConstNColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N) const
|
754
995
|
{
|
755
996
|
return typename ConstNColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
|
756
997
|
}
|
757
998
|
|
758
999
|
|
759
1000
|
|
760
|
-
/// \returns a fixed-size expression of a block
|
1001
|
+
/// \returns a fixed-size expression of a block of \c *this.
|
761
1002
|
///
|
762
1003
|
/// The template parameters \a NRows and \a NCols are the number of
|
763
1004
|
/// rows and columns in the block.
|
@@ -768,29 +1009,35 @@ inline typename ConstNColsBlockXpr<N>::Type middleCols(Index startCol, Index n =
|
|
768
1009
|
/// Example: \include MatrixBase_block_int_int.cpp
|
769
1010
|
/// Output: \verbinclude MatrixBase_block_int_int.out
|
770
1011
|
///
|
1012
|
+
/// \note The usage of of this overload is discouraged from %Eigen 3.4, better used the generic
|
1013
|
+
/// block(Index,Index,NRowsType,NColsType), here is the one-to-one equivalence:
|
1014
|
+
/// \code
|
1015
|
+
/// mat.template block<NRows,NCols>(i,j) <--> mat.block(i,j,fix<NRows>,fix<NCols>)
|
1016
|
+
/// \endcode
|
1017
|
+
///
|
771
1018
|
/// \note since block is a templated member, the keyword template has to be used
|
772
1019
|
/// if the matrix type is also a template parameter: \code m.template block<3,3>(1,1); \endcode
|
773
1020
|
///
|
774
1021
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
775
1022
|
///
|
776
|
-
/// \sa
|
1023
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
777
1024
|
///
|
778
1025
|
template<int NRows, int NCols>
|
779
|
-
EIGEN_DEVICE_FUNC
|
780
|
-
|
1026
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1027
|
+
typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol)
|
781
1028
|
{
|
782
1029
|
return typename FixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol);
|
783
1030
|
}
|
784
1031
|
|
785
1032
|
/// This is the const version of block<>(Index, Index). */
|
786
1033
|
template<int NRows, int NCols>
|
787
|
-
EIGEN_DEVICE_FUNC
|
788
|
-
|
1034
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1035
|
+
const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol) const
|
789
1036
|
{
|
790
1037
|
return typename ConstFixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol);
|
791
1038
|
}
|
792
1039
|
|
793
|
-
/// \returns an expression of a block
|
1040
|
+
/// \returns an expression of a block of \c *this.
|
794
1041
|
///
|
795
1042
|
/// \tparam NRows number of rows in block as specified at compile-time
|
796
1043
|
/// \tparam NCols number of columns in block as specified at compile-time
|
@@ -805,14 +1052,25 @@ inline const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow
|
|
805
1052
|
/// \a NRows is \a Dynamic, and the same for the number of columns.
|
806
1053
|
///
|
807
1054
|
/// Example: \include MatrixBase_template_int_int_block_int_int_int_int.cpp
|
808
|
-
/// Output: \verbinclude MatrixBase_template_int_int_block_int_int_int_int.
|
1055
|
+
/// Output: \verbinclude MatrixBase_template_int_int_block_int_int_int_int.out
|
1056
|
+
///
|
1057
|
+
/// \note The usage of of this overload is discouraged from %Eigen 3.4, better used the generic
|
1058
|
+
/// block(Index,Index,NRowsType,NColsType), here is the one-to-one complete equivalence:
|
1059
|
+
/// \code
|
1060
|
+
/// mat.template block<NRows,NCols>(i,j,rows,cols) <--> mat.block(i,j,fix<NRows>(rows),fix<NCols>(cols))
|
1061
|
+
/// \endcode
|
1062
|
+
/// If we known that, e.g., NRows==Dynamic and NCols!=Dynamic, then the equivalence becomes:
|
1063
|
+
/// \code
|
1064
|
+
/// mat.template block<Dynamic,NCols>(i,j,rows,NCols) <--> mat.block(i,j,rows,fix<NCols>)
|
1065
|
+
/// \endcode
|
809
1066
|
///
|
810
1067
|
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
|
811
1068
|
///
|
812
|
-
/// \sa
|
1069
|
+
/// \sa block(Index,Index,NRowsType,NColsType), class Block
|
813
1070
|
///
|
814
1071
|
template<int NRows, int NCols>
|
815
|
-
|
1072
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1073
|
+
typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol,
|
816
1074
|
Index blockRows, Index blockCols)
|
817
1075
|
{
|
818
1076
|
return typename FixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol, blockRows, blockCols);
|
@@ -820,13 +1078,14 @@ inline typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index sta
|
|
820
1078
|
|
821
1079
|
/// This is the const version of block<>(Index, Index, Index, Index).
|
822
1080
|
template<int NRows, int NCols>
|
823
|
-
|
1081
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1082
|
+
const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol,
|
824
1083
|
Index blockRows, Index blockCols) const
|
825
1084
|
{
|
826
1085
|
return typename ConstFixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol, blockRows, blockCols);
|
827
1086
|
}
|
828
1087
|
|
829
|
-
/// \returns an expression of the \a i-th column of *this. Note that the numbering starts at 0.
|
1088
|
+
/// \returns an expression of the \a i-th column of \c *this. Note that the numbering starts at 0.
|
830
1089
|
///
|
831
1090
|
/// Example: \include MatrixBase_col.cpp
|
832
1091
|
/// Output: \verbinclude MatrixBase_col.out
|
@@ -834,20 +1093,20 @@ inline const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow
|
|
834
1093
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
|
835
1094
|
/**
|
836
1095
|
* \sa row(), class Block */
|
837
|
-
EIGEN_DEVICE_FUNC
|
838
|
-
|
1096
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1097
|
+
ColXpr col(Index i)
|
839
1098
|
{
|
840
1099
|
return ColXpr(derived(), i);
|
841
1100
|
}
|
842
1101
|
|
843
1102
|
/// This is the const version of col().
|
844
|
-
EIGEN_DEVICE_FUNC
|
845
|
-
|
1103
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1104
|
+
ConstColXpr col(Index i) const
|
846
1105
|
{
|
847
1106
|
return ConstColXpr(derived(), i);
|
848
1107
|
}
|
849
1108
|
|
850
|
-
/// \returns an expression of the \a i-th row of *this. Note that the numbering starts at 0.
|
1109
|
+
/// \returns an expression of the \a i-th row of \c *this. Note that the numbering starts at 0.
|
851
1110
|
///
|
852
1111
|
/// Example: \include MatrixBase_row.cpp
|
853
1112
|
/// Output: \verbinclude MatrixBase_row.out
|
@@ -855,109 +1114,166 @@ inline ConstColXpr col(Index i) const
|
|
855
1114
|
EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
|
856
1115
|
/**
|
857
1116
|
* \sa col(), class Block */
|
858
|
-
EIGEN_DEVICE_FUNC
|
859
|
-
|
1117
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1118
|
+
RowXpr row(Index i)
|
860
1119
|
{
|
861
1120
|
return RowXpr(derived(), i);
|
862
1121
|
}
|
863
1122
|
|
864
1123
|
/// This is the const version of row(). */
|
865
|
-
EIGEN_DEVICE_FUNC
|
866
|
-
|
1124
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1125
|
+
ConstRowXpr row(Index i) const
|
867
1126
|
{
|
868
1127
|
return ConstRowXpr(derived(), i);
|
869
1128
|
}
|
870
1129
|
|
871
|
-
/// \returns
|
1130
|
+
/// \returns an expression of a segment (i.e. a vector block) in \c *this with either dynamic or fixed sizes.
|
872
1131
|
///
|
873
1132
|
/// \only_for_vectors
|
874
1133
|
///
|
875
1134
|
/// \param start the first coefficient in the segment
|
876
1135
|
/// \param n the number of coefficients in the segment
|
1136
|
+
/// \tparam NType the type of the value handling the number of coefficients in the segment, typically Index.
|
877
1137
|
///
|
878
1138
|
/// Example: \include MatrixBase_segment_int_int.cpp
|
879
1139
|
/// Output: \verbinclude MatrixBase_segment_int_int.out
|
880
1140
|
///
|
881
|
-
/// \
|
1141
|
+
/// The number of coefficients \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
1142
|
+
/// or Eigen::fix<N>(n) as arguments.
|
1143
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
1144
|
+
///
|
1145
|
+
/// \note Even in the case that the returned expression has dynamic size, in the case
|
882
1146
|
/// when it is applied to a fixed-size vector, it inherits a fixed maximal size,
|
883
1147
|
/// which means that evaluating it does not cause a dynamic memory allocation.
|
884
1148
|
///
|
885
|
-
/// \sa
|
1149
|
+
/// \sa block(Index,Index,NRowsType,NColsType), fix<N>, fix<N>(int), class Block
|
886
1150
|
///
|
887
|
-
|
888
|
-
|
1151
|
+
template<typename NType>
|
1152
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1153
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
1154
|
+
typename FixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1155
|
+
#else
|
1156
|
+
typename FixedSegmentReturnType<...>::Type
|
1157
|
+
#endif
|
1158
|
+
segment(Index start, NType n)
|
889
1159
|
{
|
890
1160
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
891
|
-
return
|
1161
|
+
return typename FixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1162
|
+
(derived(), start, internal::get_runtime_value(n));
|
892
1163
|
}
|
893
1164
|
|
894
1165
|
|
895
|
-
/// This is the const version of segment(Index,
|
896
|
-
|
897
|
-
|
1166
|
+
/// This is the const version of segment(Index,NType).
|
1167
|
+
template<typename NType>
|
1168
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1169
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
1170
|
+
const typename ConstFixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1171
|
+
#else
|
1172
|
+
const typename ConstFixedSegmentReturnType<...>::Type
|
1173
|
+
#endif
|
1174
|
+
segment(Index start, NType n) const
|
898
1175
|
{
|
899
1176
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
900
|
-
return
|
1177
|
+
return typename ConstFixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1178
|
+
(derived(), start, internal::get_runtime_value(n));
|
901
1179
|
}
|
902
1180
|
|
903
|
-
/// \returns
|
1181
|
+
/// \returns an expression of the first coefficients of \c *this with either dynamic or fixed sizes.
|
904
1182
|
///
|
905
1183
|
/// \only_for_vectors
|
906
1184
|
///
|
907
1185
|
/// \param n the number of coefficients in the segment
|
1186
|
+
/// \tparam NType the type of the value handling the number of coefficients in the segment, typically Index.
|
908
1187
|
///
|
909
1188
|
/// Example: \include MatrixBase_start_int.cpp
|
910
1189
|
/// Output: \verbinclude MatrixBase_start_int.out
|
911
1190
|
///
|
912
|
-
/// \
|
1191
|
+
/// The number of coefficients \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
1192
|
+
/// or Eigen::fix<N>(n) as arguments.
|
1193
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
1194
|
+
///
|
1195
|
+
/// \note Even in the case that the returned expression has dynamic size, in the case
|
913
1196
|
/// when it is applied to a fixed-size vector, it inherits a fixed maximal size,
|
914
1197
|
/// which means that evaluating it does not cause a dynamic memory allocation.
|
915
1198
|
///
|
916
1199
|
/// \sa class Block, block(Index,Index)
|
917
1200
|
///
|
918
|
-
|
919
|
-
|
1201
|
+
template<typename NType>
|
1202
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1203
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
1204
|
+
typename FixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1205
|
+
#else
|
1206
|
+
typename FixedSegmentReturnType<...>::Type
|
1207
|
+
#endif
|
1208
|
+
head(NType n)
|
920
1209
|
{
|
921
1210
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
922
|
-
return
|
1211
|
+
return typename FixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1212
|
+
(derived(), 0, internal::get_runtime_value(n));
|
923
1213
|
}
|
924
1214
|
|
925
|
-
/// This is the const version of head(
|
926
|
-
|
927
|
-
|
1215
|
+
/// This is the const version of head(NType).
|
1216
|
+
template<typename NType>
|
1217
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1218
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
1219
|
+
const typename ConstFixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1220
|
+
#else
|
1221
|
+
const typename ConstFixedSegmentReturnType<...>::Type
|
1222
|
+
#endif
|
1223
|
+
head(NType n) const
|
928
1224
|
{
|
929
1225
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
930
|
-
return
|
1226
|
+
return typename ConstFixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1227
|
+
(derived(), 0, internal::get_runtime_value(n));
|
931
1228
|
}
|
932
1229
|
|
933
|
-
/// \returns
|
1230
|
+
/// \returns an expression of a last coefficients of \c *this with either dynamic or fixed sizes.
|
934
1231
|
///
|
935
1232
|
/// \only_for_vectors
|
936
1233
|
///
|
937
1234
|
/// \param n the number of coefficients in the segment
|
1235
|
+
/// \tparam NType the type of the value handling the number of coefficients in the segment, typically Index.
|
938
1236
|
///
|
939
1237
|
/// Example: \include MatrixBase_end_int.cpp
|
940
1238
|
/// Output: \verbinclude MatrixBase_end_int.out
|
941
1239
|
///
|
942
|
-
/// \
|
1240
|
+
/// The number of coefficients \a n can also be specified at compile-time by passing Eigen::fix<N>,
|
1241
|
+
/// or Eigen::fix<N>(n) as arguments.
|
1242
|
+
/// See \link block(Index,Index,NRowsType,NColsType) block() \endlink for the details.
|
1243
|
+
///
|
1244
|
+
/// \note Even in the case that the returned expression has dynamic size, in the case
|
943
1245
|
/// when it is applied to a fixed-size vector, it inherits a fixed maximal size,
|
944
1246
|
/// which means that evaluating it does not cause a dynamic memory allocation.
|
945
1247
|
///
|
946
1248
|
/// \sa class Block, block(Index,Index)
|
947
1249
|
///
|
948
|
-
|
949
|
-
|
1250
|
+
template<typename NType>
|
1251
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1252
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
1253
|
+
typename FixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1254
|
+
#else
|
1255
|
+
typename FixedSegmentReturnType<...>::Type
|
1256
|
+
#endif
|
1257
|
+
tail(NType n)
|
950
1258
|
{
|
951
1259
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
952
|
-
return
|
1260
|
+
return typename FixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1261
|
+
(derived(), this->size() - internal::get_runtime_value(n), internal::get_runtime_value(n));
|
953
1262
|
}
|
954
1263
|
|
955
1264
|
/// This is the const version of tail(Index).
|
956
|
-
|
957
|
-
|
1265
|
+
template<typename NType>
|
1266
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1267
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
1268
|
+
const typename ConstFixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1269
|
+
#else
|
1270
|
+
const typename ConstFixedSegmentReturnType<...>::Type
|
1271
|
+
#endif
|
1272
|
+
tail(NType n) const
|
958
1273
|
{
|
959
1274
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
960
|
-
return
|
1275
|
+
return typename ConstFixedSegmentReturnType<internal::get_fixed_value<NType>::value>::Type
|
1276
|
+
(derived(), this->size() - internal::get_runtime_value(n), internal::get_runtime_value(n));
|
961
1277
|
}
|
962
1278
|
|
963
1279
|
/// \returns a fixed-size expression of a segment (i.e. a vector block) in \c *this
|
@@ -974,11 +1290,11 @@ inline ConstSegmentReturnType tail(Index n) const
|
|
974
1290
|
/// Example: \include MatrixBase_template_int_segment.cpp
|
975
1291
|
/// Output: \verbinclude MatrixBase_template_int_segment.out
|
976
1292
|
///
|
977
|
-
/// \sa class Block
|
1293
|
+
/// \sa segment(Index,NType), class Block
|
978
1294
|
///
|
979
1295
|
template<int N>
|
980
|
-
EIGEN_DEVICE_FUNC
|
981
|
-
|
1296
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1297
|
+
typename FixedSegmentReturnType<N>::Type segment(Index start, Index n = N)
|
982
1298
|
{
|
983
1299
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
984
1300
|
return typename FixedSegmentReturnType<N>::Type(derived(), start, n);
|
@@ -986,14 +1302,14 @@ inline typename FixedSegmentReturnType<N>::Type segment(Index start, Index n = N
|
|
986
1302
|
|
987
1303
|
/// This is the const version of segment<int>(Index).
|
988
1304
|
template<int N>
|
989
|
-
EIGEN_DEVICE_FUNC
|
990
|
-
|
1305
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1306
|
+
typename ConstFixedSegmentReturnType<N>::Type segment(Index start, Index n = N) const
|
991
1307
|
{
|
992
1308
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
993
1309
|
return typename ConstFixedSegmentReturnType<N>::Type(derived(), start, n);
|
994
1310
|
}
|
995
1311
|
|
996
|
-
/// \returns a fixed-size expression of the first coefficients of *this.
|
1312
|
+
/// \returns a fixed-size expression of the first coefficients of \c *this.
|
997
1313
|
///
|
998
1314
|
/// \only_for_vectors
|
999
1315
|
///
|
@@ -1006,11 +1322,11 @@ inline typename ConstFixedSegmentReturnType<N>::Type segment(Index start, Index
|
|
1006
1322
|
/// Example: \include MatrixBase_template_int_start.cpp
|
1007
1323
|
/// Output: \verbinclude MatrixBase_template_int_start.out
|
1008
1324
|
///
|
1009
|
-
/// \sa class Block
|
1325
|
+
/// \sa head(NType), class Block
|
1010
1326
|
///
|
1011
1327
|
template<int N>
|
1012
|
-
EIGEN_DEVICE_FUNC
|
1013
|
-
|
1328
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1329
|
+
typename FixedSegmentReturnType<N>::Type head(Index n = N)
|
1014
1330
|
{
|
1015
1331
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
1016
1332
|
return typename FixedSegmentReturnType<N>::Type(derived(), 0, n);
|
@@ -1018,14 +1334,14 @@ inline typename FixedSegmentReturnType<N>::Type head(Index n = N)
|
|
1018
1334
|
|
1019
1335
|
/// This is the const version of head<int>().
|
1020
1336
|
template<int N>
|
1021
|
-
EIGEN_DEVICE_FUNC
|
1022
|
-
|
1337
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1338
|
+
typename ConstFixedSegmentReturnType<N>::Type head(Index n = N) const
|
1023
1339
|
{
|
1024
1340
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
1025
1341
|
return typename ConstFixedSegmentReturnType<N>::Type(derived(), 0, n);
|
1026
1342
|
}
|
1027
1343
|
|
1028
|
-
/// \returns a fixed-size expression of the last coefficients of *this.
|
1344
|
+
/// \returns a fixed-size expression of the last coefficients of \c *this.
|
1029
1345
|
///
|
1030
1346
|
/// \only_for_vectors
|
1031
1347
|
///
|
@@ -1038,11 +1354,11 @@ inline typename ConstFixedSegmentReturnType<N>::Type head(Index n = N) const
|
|
1038
1354
|
/// Example: \include MatrixBase_template_int_end.cpp
|
1039
1355
|
/// Output: \verbinclude MatrixBase_template_int_end.out
|
1040
1356
|
///
|
1041
|
-
/// \sa class Block
|
1357
|
+
/// \sa tail(NType), class Block
|
1042
1358
|
///
|
1043
1359
|
template<int N>
|
1044
|
-
EIGEN_DEVICE_FUNC
|
1045
|
-
|
1360
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1361
|
+
typename FixedSegmentReturnType<N>::Type tail(Index n = N)
|
1046
1362
|
{
|
1047
1363
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
1048
1364
|
return typename FixedSegmentReturnType<N>::Type(derived(), size() - n);
|
@@ -1050,9 +1366,77 @@ inline typename FixedSegmentReturnType<N>::Type tail(Index n = N)
|
|
1050
1366
|
|
1051
1367
|
/// This is the const version of tail<int>.
|
1052
1368
|
template<int N>
|
1053
|
-
EIGEN_DEVICE_FUNC
|
1054
|
-
|
1369
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1370
|
+
typename ConstFixedSegmentReturnType<N>::Type tail(Index n = N) const
|
1055
1371
|
{
|
1056
1372
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
|
1057
1373
|
return typename ConstFixedSegmentReturnType<N>::Type(derived(), size() - n);
|
1058
1374
|
}
|
1375
|
+
|
1376
|
+
/// \returns the \a outer -th column (resp. row) of the matrix \c *this if \c *this
|
1377
|
+
/// is col-major (resp. row-major).
|
1378
|
+
///
|
1379
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1380
|
+
InnerVectorReturnType innerVector(Index outer)
|
1381
|
+
{ return InnerVectorReturnType(derived(), outer); }
|
1382
|
+
|
1383
|
+
/// \returns the \a outer -th column (resp. row) of the matrix \c *this if \c *this
|
1384
|
+
/// is col-major (resp. row-major). Read-only.
|
1385
|
+
///
|
1386
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1387
|
+
const ConstInnerVectorReturnType innerVector(Index outer) const
|
1388
|
+
{ return ConstInnerVectorReturnType(derived(), outer); }
|
1389
|
+
|
1390
|
+
/// \returns the \a outer -th column (resp. row) of the matrix \c *this if \c *this
|
1391
|
+
/// is col-major (resp. row-major).
|
1392
|
+
///
|
1393
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1394
|
+
InnerVectorsReturnType
|
1395
|
+
innerVectors(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
|
+
|
1403
|
+
/// \returns the \a outer -th column (resp. row) of the matrix \c *this if \c *this
|
1404
|
+
/// is col-major (resp. row-major). Read-only.
|
1405
|
+
///
|
1406
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1407
|
+
const ConstInnerVectorsReturnType
|
1408
|
+
innerVectors(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
|
+
|
1416
|
+
/** \returns the i-th subvector (column or vector) according to the \c Direction
|
1417
|
+
* \sa subVectors()
|
1418
|
+
*/
|
1419
|
+
template<DirectionType Direction>
|
1420
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1421
|
+
typename internal::conditional<Direction==Vertical,ColXpr,RowXpr>::type
|
1422
|
+
subVector(Index i)
|
1423
|
+
{
|
1424
|
+
return typename internal::conditional<Direction==Vertical,ColXpr,RowXpr>::type(derived(),i);
|
1425
|
+
}
|
1426
|
+
|
1427
|
+
/** This is the const version of subVector(Index) */
|
1428
|
+
template<DirectionType Direction>
|
1429
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
1430
|
+
typename internal::conditional<Direction==Vertical,ConstColXpr,ConstRowXpr>::type
|
1431
|
+
subVector(Index i) const
|
1432
|
+
{
|
1433
|
+
return typename internal::conditional<Direction==Vertical,ConstColXpr,ConstRowXpr>::type(derived(),i);
|
1434
|
+
}
|
1435
|
+
|
1436
|
+
/** \returns the number of subvectors (rows or columns) in the direction \c Direction
|
1437
|
+
* \sa subVector(Index)
|
1438
|
+
*/
|
1439
|
+
template<DirectionType Direction>
|
1440
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
1441
|
+
Index subVectors() const
|
1442
|
+
{ return (Direction==Vertical)?cols():rows(); }
|