tomoto 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (420) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +123 -0
  5. data/ext/tomoto/ext.cpp +245 -0
  6. data/ext/tomoto/extconf.rb +28 -0
  7. data/lib/tomoto.rb +12 -0
  8. data/lib/tomoto/ct.rb +11 -0
  9. data/lib/tomoto/hdp.rb +11 -0
  10. data/lib/tomoto/lda.rb +67 -0
  11. data/lib/tomoto/version.rb +3 -0
  12. data/vendor/EigenRand/EigenRand/Core.h +1139 -0
  13. data/vendor/EigenRand/EigenRand/Dists/Basic.h +111 -0
  14. data/vendor/EigenRand/EigenRand/Dists/Discrete.h +877 -0
  15. data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +108 -0
  16. data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +626 -0
  17. data/vendor/EigenRand/EigenRand/EigenRand +19 -0
  18. data/vendor/EigenRand/EigenRand/Macro.h +24 -0
  19. data/vendor/EigenRand/EigenRand/MorePacketMath.h +978 -0
  20. data/vendor/EigenRand/EigenRand/PacketFilter.h +286 -0
  21. data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +624 -0
  22. data/vendor/EigenRand/EigenRand/RandUtils.h +413 -0
  23. data/vendor/EigenRand/EigenRand/doc.h +220 -0
  24. data/vendor/EigenRand/LICENSE +21 -0
  25. data/vendor/EigenRand/README.md +288 -0
  26. data/vendor/eigen/COPYING.BSD +26 -0
  27. data/vendor/eigen/COPYING.GPL +674 -0
  28. data/vendor/eigen/COPYING.LGPL +502 -0
  29. data/vendor/eigen/COPYING.MINPACK +52 -0
  30. data/vendor/eigen/COPYING.MPL2 +373 -0
  31. data/vendor/eigen/COPYING.README +18 -0
  32. data/vendor/eigen/Eigen/CMakeLists.txt +19 -0
  33. data/vendor/eigen/Eigen/Cholesky +46 -0
  34. data/vendor/eigen/Eigen/CholmodSupport +48 -0
  35. data/vendor/eigen/Eigen/Core +537 -0
  36. data/vendor/eigen/Eigen/Dense +7 -0
  37. data/vendor/eigen/Eigen/Eigen +2 -0
  38. data/vendor/eigen/Eigen/Eigenvalues +61 -0
  39. data/vendor/eigen/Eigen/Geometry +62 -0
  40. data/vendor/eigen/Eigen/Householder +30 -0
  41. data/vendor/eigen/Eigen/IterativeLinearSolvers +48 -0
  42. data/vendor/eigen/Eigen/Jacobi +33 -0
  43. data/vendor/eigen/Eigen/LU +50 -0
  44. data/vendor/eigen/Eigen/MetisSupport +35 -0
  45. data/vendor/eigen/Eigen/OrderingMethods +73 -0
  46. data/vendor/eigen/Eigen/PaStiXSupport +48 -0
  47. data/vendor/eigen/Eigen/PardisoSupport +35 -0
  48. data/vendor/eigen/Eigen/QR +51 -0
  49. data/vendor/eigen/Eigen/QtAlignedMalloc +40 -0
  50. data/vendor/eigen/Eigen/SPQRSupport +34 -0
  51. data/vendor/eigen/Eigen/SVD +51 -0
  52. data/vendor/eigen/Eigen/Sparse +36 -0
  53. data/vendor/eigen/Eigen/SparseCholesky +45 -0
  54. data/vendor/eigen/Eigen/SparseCore +69 -0
  55. data/vendor/eigen/Eigen/SparseLU +46 -0
  56. data/vendor/eigen/Eigen/SparseQR +37 -0
  57. data/vendor/eigen/Eigen/StdDeque +27 -0
  58. data/vendor/eigen/Eigen/StdList +26 -0
  59. data/vendor/eigen/Eigen/StdVector +27 -0
  60. data/vendor/eigen/Eigen/SuperLUSupport +64 -0
  61. data/vendor/eigen/Eigen/UmfPackSupport +40 -0
  62. data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +673 -0
  63. data/vendor/eigen/Eigen/src/Cholesky/LLT.h +542 -0
  64. data/vendor/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  65. data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +639 -0
  66. data/vendor/eigen/Eigen/src/Core/Array.h +329 -0
  67. data/vendor/eigen/Eigen/src/Core/ArrayBase.h +226 -0
  68. data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +209 -0
  69. data/vendor/eigen/Eigen/src/Core/Assign.h +90 -0
  70. data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +935 -0
  71. data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +178 -0
  72. data/vendor/eigen/Eigen/src/Core/BandMatrix.h +353 -0
  73. data/vendor/eigen/Eigen/src/Core/Block.h +452 -0
  74. data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +164 -0
  75. data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +160 -0
  76. data/vendor/eigen/Eigen/src/Core/ConditionEstimator.h +175 -0
  77. data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +1688 -0
  78. data/vendor/eigen/Eigen/src/Core/CoreIterators.h +127 -0
  79. data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +184 -0
  80. data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +866 -0
  81. data/vendor/eigen/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  82. data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  83. data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +128 -0
  84. data/vendor/eigen/Eigen/src/Core/DenseBase.h +611 -0
  85. data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +681 -0
  86. data/vendor/eigen/Eigen/src/Core/DenseStorage.h +570 -0
  87. data/vendor/eigen/Eigen/src/Core/Diagonal.h +260 -0
  88. data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +343 -0
  89. data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +28 -0
  90. data/vendor/eigen/Eigen/src/Core/Dot.h +318 -0
  91. data/vendor/eigen/Eigen/src/Core/EigenBase.h +159 -0
  92. data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +146 -0
  93. data/vendor/eigen/Eigen/src/Core/Fuzzy.h +155 -0
  94. data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +455 -0
  95. data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +593 -0
  96. data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +187 -0
  97. data/vendor/eigen/Eigen/src/Core/IO.h +225 -0
  98. data/vendor/eigen/Eigen/src/Core/Inverse.h +118 -0
  99. data/vendor/eigen/Eigen/src/Core/Map.h +171 -0
  100. data/vendor/eigen/Eigen/src/Core/MapBase.h +303 -0
  101. data/vendor/eigen/Eigen/src/Core/MathFunctions.h +1415 -0
  102. data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +101 -0
  103. data/vendor/eigen/Eigen/src/Core/Matrix.h +459 -0
  104. data/vendor/eigen/Eigen/src/Core/MatrixBase.h +529 -0
  105. data/vendor/eigen/Eigen/src/Core/NestByValue.h +110 -0
  106. data/vendor/eigen/Eigen/src/Core/NoAlias.h +108 -0
  107. data/vendor/eigen/Eigen/src/Core/NumTraits.h +248 -0
  108. data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +633 -0
  109. data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +1035 -0
  110. data/vendor/eigen/Eigen/src/Core/Product.h +186 -0
  111. data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +1112 -0
  112. data/vendor/eigen/Eigen/src/Core/Random.h +182 -0
  113. data/vendor/eigen/Eigen/src/Core/Redux.h +505 -0
  114. data/vendor/eigen/Eigen/src/Core/Ref.h +283 -0
  115. data/vendor/eigen/Eigen/src/Core/Replicate.h +142 -0
  116. data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +117 -0
  117. data/vendor/eigen/Eigen/src/Core/Reverse.h +211 -0
  118. data/vendor/eigen/Eigen/src/Core/Select.h +162 -0
  119. data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +352 -0
  120. data/vendor/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  121. data/vendor/eigen/Eigen/src/Core/Solve.h +188 -0
  122. data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +235 -0
  123. data/vendor/eigen/Eigen/src/Core/SolverBase.h +130 -0
  124. data/vendor/eigen/Eigen/src/Core/StableNorm.h +221 -0
  125. data/vendor/eigen/Eigen/src/Core/Stride.h +111 -0
  126. data/vendor/eigen/Eigen/src/Core/Swap.h +67 -0
  127. data/vendor/eigen/Eigen/src/Core/Transpose.h +403 -0
  128. data/vendor/eigen/Eigen/src/Core/Transpositions.h +407 -0
  129. data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +983 -0
  130. data/vendor/eigen/Eigen/src/Core/VectorBlock.h +96 -0
  131. data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +695 -0
  132. data/vendor/eigen/Eigen/src/Core/Visitor.h +273 -0
  133. data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +451 -0
  134. data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +439 -0
  135. data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +637 -0
  136. data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +51 -0
  137. data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +391 -0
  138. data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1316 -0
  139. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +430 -0
  140. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +322 -0
  141. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +1061 -0
  142. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +103 -0
  143. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +674 -0
  144. data/vendor/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +91 -0
  145. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +333 -0
  146. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +1124 -0
  147. data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +212 -0
  148. data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +29 -0
  149. data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +49 -0
  150. data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +490 -0
  151. data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +91 -0
  152. data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +760 -0
  153. data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +471 -0
  154. data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +562 -0
  155. data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +895 -0
  156. data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +77 -0
  157. data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +397 -0
  158. data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +137 -0
  159. data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +945 -0
  160. data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +168 -0
  161. data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +475 -0
  162. data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +188 -0
  163. data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +136 -0
  164. data/vendor/eigen/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  165. data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +792 -0
  166. data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2156 -0
  167. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +492 -0
  168. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +311 -0
  169. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  170. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +122 -0
  171. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +619 -0
  172. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  173. data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +163 -0
  174. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +521 -0
  175. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +287 -0
  176. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +260 -0
  177. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  178. data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  179. data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +93 -0
  180. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +466 -0
  181. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +315 -0
  182. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  183. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  184. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +335 -0
  185. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +163 -0
  186. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +145 -0
  187. data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +398 -0
  188. data/vendor/eigen/Eigen/src/Core/util/Constants.h +547 -0
  189. data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +83 -0
  190. data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +302 -0
  191. data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +130 -0
  192. data/vendor/eigen/Eigen/src/Core/util/Macros.h +1001 -0
  193. data/vendor/eigen/Eigen/src/Core/util/Memory.h +993 -0
  194. data/vendor/eigen/Eigen/src/Core/util/Meta.h +534 -0
  195. data/vendor/eigen/Eigen/src/Core/util/NonMPL2.h +3 -0
  196. data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +27 -0
  197. data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +218 -0
  198. data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +821 -0
  199. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  200. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +459 -0
  201. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  202. data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  203. data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  204. data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  205. data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  206. data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  207. data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +654 -0
  208. data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +546 -0
  209. data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  210. data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +870 -0
  211. data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  212. data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +556 -0
  213. data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +392 -0
  214. data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +247 -0
  215. data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +114 -0
  216. data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +497 -0
  217. data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +282 -0
  218. data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +234 -0
  219. data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +195 -0
  220. data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +814 -0
  221. data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +199 -0
  222. data/vendor/eigen/Eigen/src/Geometry/RotationBase.h +206 -0
  223. data/vendor/eigen/Eigen/src/Geometry/Scaling.h +170 -0
  224. data/vendor/eigen/Eigen/src/Geometry/Transform.h +1542 -0
  225. data/vendor/eigen/Eigen/src/Geometry/Translation.h +208 -0
  226. data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +166 -0
  227. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +161 -0
  228. data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +103 -0
  229. data/vendor/eigen/Eigen/src/Householder/Householder.h +172 -0
  230. data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +470 -0
  231. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  232. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +228 -0
  233. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +246 -0
  234. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +400 -0
  235. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +462 -0
  236. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +394 -0
  237. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +216 -0
  238. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +115 -0
  239. data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +462 -0
  240. data/vendor/eigen/Eigen/src/LU/Determinant.h +101 -0
  241. data/vendor/eigen/Eigen/src/LU/FullPivLU.h +891 -0
  242. data/vendor/eigen/Eigen/src/LU/InverseImpl.h +415 -0
  243. data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +611 -0
  244. data/vendor/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  245. data/vendor/eigen/Eigen/src/LU/arch/Inverse_SSE.h +338 -0
  246. data/vendor/eigen/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  247. data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +445 -0
  248. data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +1843 -0
  249. data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +157 -0
  250. data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  251. data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +543 -0
  252. data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +653 -0
  253. data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  254. data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +562 -0
  255. data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +676 -0
  256. data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +409 -0
  257. data/vendor/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  258. data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +313 -0
  259. data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +1246 -0
  260. data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +804 -0
  261. data/vendor/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  262. data/vendor/eigen/Eigen/src/SVD/SVDBase.h +315 -0
  263. data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  264. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +689 -0
  265. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +199 -0
  266. data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +377 -0
  267. data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +258 -0
  268. data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  269. data/vendor/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  270. data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +216 -0
  271. data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +603 -0
  272. data/vendor/eigen/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  273. data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +341 -0
  274. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +726 -0
  275. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +148 -0
  276. data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +320 -0
  277. data/vendor/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  278. data/vendor/eigen/Eigen/src/SparseCore/SparseDot.h +98 -0
  279. data/vendor/eigen/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  280. data/vendor/eigen/Eigen/src/SparseCore/SparseMap.h +305 -0
  281. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +1403 -0
  282. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +405 -0
  283. data/vendor/eigen/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  284. data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +169 -0
  285. data/vendor/eigen/Eigen/src/SparseCore/SparseRedux.h +49 -0
  286. data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +397 -0
  287. data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +656 -0
  288. data/vendor/eigen/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  289. data/vendor/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  290. data/vendor/eigen/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  291. data/vendor/eigen/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  292. data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +178 -0
  293. data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +478 -0
  294. data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +253 -0
  295. data/vendor/eigen/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  296. data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +773 -0
  297. data/vendor/eigen/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  298. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  299. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  300. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +301 -0
  301. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  302. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  303. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  304. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  305. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  306. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  307. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  308. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  309. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  310. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  311. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  312. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  313. data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +745 -0
  314. data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +126 -0
  315. data/vendor/eigen/Eigen/src/StlSupport/StdList.h +106 -0
  316. data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +131 -0
  317. data/vendor/eigen/Eigen/src/StlSupport/details.h +84 -0
  318. data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +1027 -0
  319. data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +506 -0
  320. data/vendor/eigen/Eigen/src/misc/Image.h +82 -0
  321. data/vendor/eigen/Eigen/src/misc/Kernel.h +79 -0
  322. data/vendor/eigen/Eigen/src/misc/RealSvd2x2.h +55 -0
  323. data/vendor/eigen/Eigen/src/misc/blas.h +440 -0
  324. data/vendor/eigen/Eigen/src/misc/lapack.h +152 -0
  325. data/vendor/eigen/Eigen/src/misc/lapacke.h +16291 -0
  326. data/vendor/eigen/Eigen/src/misc/lapacke_mangling.h +17 -0
  327. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +332 -0
  328. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +552 -0
  329. data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +1058 -0
  330. data/vendor/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  331. data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +163 -0
  332. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  333. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +85 -0
  334. data/vendor/eigen/README.md +3 -0
  335. data/vendor/eigen/bench/README.txt +55 -0
  336. data/vendor/eigen/bench/btl/COPYING +340 -0
  337. data/vendor/eigen/bench/btl/README +154 -0
  338. data/vendor/eigen/bench/tensors/README +21 -0
  339. data/vendor/eigen/blas/README.txt +6 -0
  340. data/vendor/eigen/demos/mandelbrot/README +10 -0
  341. data/vendor/eigen/demos/mix_eigen_and_c/README +9 -0
  342. data/vendor/eigen/demos/opengl/README +13 -0
  343. data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +1760 -0
  344. data/vendor/eigen/unsupported/README.txt +50 -0
  345. data/vendor/tomotopy/LICENSE +21 -0
  346. data/vendor/tomotopy/README.kr.rst +375 -0
  347. data/vendor/tomotopy/README.rst +382 -0
  348. data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +362 -0
  349. data/vendor/tomotopy/src/Labeling/FoRelevance.h +88 -0
  350. data/vendor/tomotopy/src/Labeling/Labeler.h +50 -0
  351. data/vendor/tomotopy/src/TopicModel/CT.h +37 -0
  352. data/vendor/tomotopy/src/TopicModel/CTModel.cpp +13 -0
  353. data/vendor/tomotopy/src/TopicModel/CTModel.hpp +293 -0
  354. data/vendor/tomotopy/src/TopicModel/DMR.h +51 -0
  355. data/vendor/tomotopy/src/TopicModel/DMRModel.cpp +13 -0
  356. data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +374 -0
  357. data/vendor/tomotopy/src/TopicModel/DT.h +65 -0
  358. data/vendor/tomotopy/src/TopicModel/DTM.h +22 -0
  359. data/vendor/tomotopy/src/TopicModel/DTModel.cpp +15 -0
  360. data/vendor/tomotopy/src/TopicModel/DTModel.hpp +572 -0
  361. data/vendor/tomotopy/src/TopicModel/GDMR.h +37 -0
  362. data/vendor/tomotopy/src/TopicModel/GDMRModel.cpp +14 -0
  363. data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +485 -0
  364. data/vendor/tomotopy/src/TopicModel/HDP.h +74 -0
  365. data/vendor/tomotopy/src/TopicModel/HDPModel.cpp +13 -0
  366. data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +592 -0
  367. data/vendor/tomotopy/src/TopicModel/HLDA.h +40 -0
  368. data/vendor/tomotopy/src/TopicModel/HLDAModel.cpp +13 -0
  369. data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +681 -0
  370. data/vendor/tomotopy/src/TopicModel/HPA.h +27 -0
  371. data/vendor/tomotopy/src/TopicModel/HPAModel.cpp +21 -0
  372. data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +588 -0
  373. data/vendor/tomotopy/src/TopicModel/LDA.h +144 -0
  374. data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +442 -0
  375. data/vendor/tomotopy/src/TopicModel/LDAModel.cpp +13 -0
  376. data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +1058 -0
  377. data/vendor/tomotopy/src/TopicModel/LLDA.h +45 -0
  378. data/vendor/tomotopy/src/TopicModel/LLDAModel.cpp +13 -0
  379. data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +203 -0
  380. data/vendor/tomotopy/src/TopicModel/MGLDA.h +63 -0
  381. data/vendor/tomotopy/src/TopicModel/MGLDAModel.cpp +17 -0
  382. data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +558 -0
  383. data/vendor/tomotopy/src/TopicModel/PA.h +43 -0
  384. data/vendor/tomotopy/src/TopicModel/PAModel.cpp +13 -0
  385. data/vendor/tomotopy/src/TopicModel/PAModel.hpp +467 -0
  386. data/vendor/tomotopy/src/TopicModel/PLDA.h +17 -0
  387. data/vendor/tomotopy/src/TopicModel/PLDAModel.cpp +13 -0
  388. data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +214 -0
  389. data/vendor/tomotopy/src/TopicModel/SLDA.h +54 -0
  390. data/vendor/tomotopy/src/TopicModel/SLDAModel.cpp +17 -0
  391. data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +456 -0
  392. data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +692 -0
  393. data/vendor/tomotopy/src/Utils/AliasMethod.hpp +169 -0
  394. data/vendor/tomotopy/src/Utils/Dictionary.h +80 -0
  395. data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +181 -0
  396. data/vendor/tomotopy/src/Utils/LBFGS.h +202 -0
  397. data/vendor/tomotopy/src/Utils/LBFGS/LineSearchBacktracking.h +120 -0
  398. data/vendor/tomotopy/src/Utils/LBFGS/LineSearchBracketing.h +122 -0
  399. data/vendor/tomotopy/src/Utils/LBFGS/Param.h +213 -0
  400. data/vendor/tomotopy/src/Utils/LUT.hpp +82 -0
  401. data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +69 -0
  402. data/vendor/tomotopy/src/Utils/PolyaGamma.hpp +200 -0
  403. data/vendor/tomotopy/src/Utils/PolyaGammaHybrid.hpp +672 -0
  404. data/vendor/tomotopy/src/Utils/ThreadPool.hpp +150 -0
  405. data/vendor/tomotopy/src/Utils/Trie.hpp +220 -0
  406. data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +94 -0
  407. data/vendor/tomotopy/src/Utils/Utils.hpp +337 -0
  408. data/vendor/tomotopy/src/Utils/avx_gamma.h +46 -0
  409. data/vendor/tomotopy/src/Utils/avx_mathfun.h +736 -0
  410. data/vendor/tomotopy/src/Utils/exception.h +28 -0
  411. data/vendor/tomotopy/src/Utils/math.h +281 -0
  412. data/vendor/tomotopy/src/Utils/rtnorm.hpp +2690 -0
  413. data/vendor/tomotopy/src/Utils/sample.hpp +192 -0
  414. data/vendor/tomotopy/src/Utils/serializer.hpp +695 -0
  415. data/vendor/tomotopy/src/Utils/slp.hpp +131 -0
  416. data/vendor/tomotopy/src/Utils/sse_gamma.h +48 -0
  417. data/vendor/tomotopy/src/Utils/sse_mathfun.h +710 -0
  418. data/vendor/tomotopy/src/Utils/text.hpp +49 -0
  419. data/vendor/tomotopy/src/Utils/tvector.hpp +543 -0
  420. metadata +531 -0
@@ -0,0 +1,1058 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
6
+ //
7
+ // This Source Code Form is subject to the terms of the Mozilla
8
+ // Public License v. 2.0. If a copy of the MPL was not distributed
9
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10
+
11
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
12
+
13
+ /// \internal expression type of a column */
14
+ typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, 1, !IsRowMajor> ColXpr;
15
+ typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, 1, !IsRowMajor> ConstColXpr;
16
+ /// \internal expression type of a row */
17
+ typedef Block<Derived, 1, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> RowXpr;
18
+ typedef const Block<const Derived, 1, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> ConstRowXpr;
19
+ /// \internal expression type of a block of whole columns */
20
+ typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, Dynamic, !IsRowMajor> ColsBlockXpr;
21
+ typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, Dynamic, !IsRowMajor> ConstColsBlockXpr;
22
+ /// \internal expression type of a block of whole rows */
23
+ typedef Block<Derived, Dynamic, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> RowsBlockXpr;
24
+ typedef const Block<const Derived, Dynamic, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> ConstRowsBlockXpr;
25
+ /// \internal expression type of a block of whole columns */
26
+ template<int N> struct NColsBlockXpr { typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, N, !IsRowMajor> Type; };
27
+ template<int N> struct ConstNColsBlockXpr { typedef const Block<const Derived, internal::traits<Derived>::RowsAtCompileTime, N, !IsRowMajor> Type; };
28
+ /// \internal expression type of a block of whole rows */
29
+ template<int N> struct NRowsBlockXpr { typedef Block<Derived, N, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> Type; };
30
+ template<int N> struct ConstNRowsBlockXpr { typedef const Block<const Derived, N, internal::traits<Derived>::ColsAtCompileTime, IsRowMajor> Type; };
31
+ /// \internal expression of a block */
32
+ typedef Block<Derived> BlockXpr;
33
+ typedef const Block<const Derived> ConstBlockXpr;
34
+ /// \internal expression of a block of fixed sizes */
35
+ template<int Rows, int Cols> struct FixedBlockXpr { typedef Block<Derived,Rows,Cols> Type; };
36
+ template<int Rows, int Cols> struct ConstFixedBlockXpr { typedef Block<const Derived,Rows,Cols> Type; };
37
+
38
+ typedef VectorBlock<Derived> SegmentReturnType;
39
+ typedef const VectorBlock<const Derived> ConstSegmentReturnType;
40
+ template<int Size> struct FixedSegmentReturnType { typedef VectorBlock<Derived, Size> Type; };
41
+ template<int Size> struct ConstFixedSegmentReturnType { typedef const VectorBlock<const Derived, Size> Type; };
42
+
43
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
44
+
45
+ /// \returns a dynamic-size expression of a block in *this.
46
+ ///
47
+ /// \param startRow the first row in the block
48
+ /// \param startCol the first column in the block
49
+ /// \param blockRows the number of rows in the block
50
+ /// \param blockCols the number of columns in the block
51
+ ///
52
+ /// Example: \include MatrixBase_block_int_int_int_int.cpp
53
+ /// Output: \verbinclude MatrixBase_block_int_int_int_int.out
54
+ ///
55
+ /// \note Even though the returned expression has dynamic size, in the case
56
+ /// when it is applied to a fixed-size matrix, it inherits a fixed maximal size,
57
+ /// which means that evaluating it does not cause a dynamic memory allocation.
58
+ ///
59
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
60
+ ///
61
+ /// \sa class Block, block(Index,Index)
62
+ ///
63
+ EIGEN_DEVICE_FUNC
64
+ inline BlockXpr block(Index startRow, Index startCol, Index blockRows, Index blockCols)
65
+ {
66
+ return BlockXpr(derived(), startRow, startCol, blockRows, blockCols);
67
+ }
68
+
69
+ /// This is the const version of block(Index,Index,Index,Index). */
70
+ EIGEN_DEVICE_FUNC
71
+ inline const ConstBlockXpr block(Index startRow, Index startCol, Index blockRows, Index blockCols) const
72
+ {
73
+ return ConstBlockXpr(derived(), startRow, startCol, blockRows, blockCols);
74
+ }
75
+
76
+
77
+
78
+
79
+ /// \returns a dynamic-size expression of a top-right corner of *this.
80
+ ///
81
+ /// \param cRows the number of rows in the corner
82
+ /// \param cCols the number of columns in the corner
83
+ ///
84
+ /// Example: \include MatrixBase_topRightCorner_int_int.cpp
85
+ /// Output: \verbinclude MatrixBase_topRightCorner_int_int.out
86
+ ///
87
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
88
+ ///
89
+ /// \sa class Block, block(Index,Index,Index,Index)
90
+ ///
91
+ EIGEN_DEVICE_FUNC
92
+ inline BlockXpr topRightCorner(Index cRows, Index cCols)
93
+ {
94
+ return BlockXpr(derived(), 0, cols() - cCols, cRows, cCols);
95
+ }
96
+
97
+ /// This is the const version of topRightCorner(Index, Index).
98
+ EIGEN_DEVICE_FUNC
99
+ inline const ConstBlockXpr topRightCorner(Index cRows, Index cCols) const
100
+ {
101
+ return ConstBlockXpr(derived(), 0, cols() - cCols, cRows, cCols);
102
+ }
103
+
104
+ /// \returns an expression of a fixed-size top-right corner of *this.
105
+ ///
106
+ /// \tparam CRows the number of rows in the corner
107
+ /// \tparam CCols the number of columns in the corner
108
+ ///
109
+ /// Example: \include MatrixBase_template_int_int_topRightCorner.cpp
110
+ /// Output: \verbinclude MatrixBase_template_int_int_topRightCorner.out
111
+ ///
112
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
113
+ ///
114
+ /// \sa class Block, block<int,int>(Index,Index)
115
+ ///
116
+ template<int CRows, int CCols>
117
+ EIGEN_DEVICE_FUNC
118
+ inline typename FixedBlockXpr<CRows,CCols>::Type topRightCorner()
119
+ {
120
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - CCols);
121
+ }
122
+
123
+ /// This is the const version of topRightCorner<int, int>().
124
+ template<int CRows, int CCols>
125
+ EIGEN_DEVICE_FUNC
126
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type topRightCorner() const
127
+ {
128
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - CCols);
129
+ }
130
+
131
+ /// \returns an expression of a top-right corner of *this.
132
+ ///
133
+ /// \tparam CRows number of rows in corner as specified at compile-time
134
+ /// \tparam CCols number of columns in corner as specified at compile-time
135
+ /// \param cRows number of rows in corner as specified at run-time
136
+ /// \param cCols number of columns in corner as specified at run-time
137
+ ///
138
+ /// This function is mainly useful for corners where the number of rows is specified at compile-time
139
+ /// and the number of columns is specified at run-time, or vice versa. The compile-time and run-time
140
+ /// information should not contradict. In other words, \a cRows should equal \a CRows unless
141
+ /// \a CRows is \a Dynamic, and the same for the number of columns.
142
+ ///
143
+ /// Example: \include MatrixBase_template_int_int_topRightCorner_int_int.cpp
144
+ /// Output: \verbinclude MatrixBase_template_int_int_topRightCorner_int_int.out
145
+ ///
146
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
147
+ ///
148
+ /// \sa class Block
149
+ ///
150
+ template<int CRows, int CCols>
151
+ inline typename FixedBlockXpr<CRows,CCols>::Type topRightCorner(Index cRows, Index cCols)
152
+ {
153
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - cCols, cRows, cCols);
154
+ }
155
+
156
+ /// This is the const version of topRightCorner<int, int>(Index, Index).
157
+ template<int CRows, int CCols>
158
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type topRightCorner(Index cRows, Index cCols) const
159
+ {
160
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, cols() - cCols, cRows, cCols);
161
+ }
162
+
163
+
164
+
165
+ /// \returns a dynamic-size expression of a top-left corner of *this.
166
+ ///
167
+ /// \param cRows the number of rows in the corner
168
+ /// \param cCols the number of columns in the corner
169
+ ///
170
+ /// Example: \include MatrixBase_topLeftCorner_int_int.cpp
171
+ /// Output: \verbinclude MatrixBase_topLeftCorner_int_int.out
172
+ ///
173
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
174
+ ///
175
+ /// \sa class Block, block(Index,Index,Index,Index)
176
+ ///
177
+ EIGEN_DEVICE_FUNC
178
+ inline BlockXpr topLeftCorner(Index cRows, Index cCols)
179
+ {
180
+ return BlockXpr(derived(), 0, 0, cRows, cCols);
181
+ }
182
+
183
+ /// This is the const version of topLeftCorner(Index, Index).
184
+ EIGEN_DEVICE_FUNC
185
+ inline const ConstBlockXpr topLeftCorner(Index cRows, Index cCols) const
186
+ {
187
+ return ConstBlockXpr(derived(), 0, 0, cRows, cCols);
188
+ }
189
+
190
+ /// \returns an expression of a fixed-size top-left corner of *this.
191
+ ///
192
+ /// The template parameters CRows and CCols are the number of rows and columns in the corner.
193
+ ///
194
+ /// Example: \include MatrixBase_template_int_int_topLeftCorner.cpp
195
+ /// Output: \verbinclude MatrixBase_template_int_int_topLeftCorner.out
196
+ ///
197
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
198
+ ///
199
+ /// \sa class Block, block(Index,Index,Index,Index)
200
+ ///
201
+ template<int CRows, int CCols>
202
+ EIGEN_DEVICE_FUNC
203
+ inline typename FixedBlockXpr<CRows,CCols>::Type topLeftCorner()
204
+ {
205
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0);
206
+ }
207
+
208
+ /// This is the const version of topLeftCorner<int, int>().
209
+ template<int CRows, int CCols>
210
+ EIGEN_DEVICE_FUNC
211
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type topLeftCorner() const
212
+ {
213
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0);
214
+ }
215
+
216
+ /// \returns an expression of a top-left corner of *this.
217
+ ///
218
+ /// \tparam CRows number of rows in corner as specified at compile-time
219
+ /// \tparam CCols number of columns in corner as specified at compile-time
220
+ /// \param cRows number of rows in corner as specified at run-time
221
+ /// \param cCols number of columns in corner as specified at run-time
222
+ ///
223
+ /// This function is mainly useful for corners where the number of rows is specified at compile-time
224
+ /// and the number of columns is specified at run-time, or vice versa. The compile-time and run-time
225
+ /// information should not contradict. In other words, \a cRows should equal \a CRows unless
226
+ /// \a CRows is \a Dynamic, and the same for the number of columns.
227
+ ///
228
+ /// Example: \include MatrixBase_template_int_int_topLeftCorner_int_int.cpp
229
+ /// Output: \verbinclude MatrixBase_template_int_int_topLeftCorner_int_int.out
230
+ ///
231
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
232
+ ///
233
+ /// \sa class Block
234
+ ///
235
+ template<int CRows, int CCols>
236
+ inline typename FixedBlockXpr<CRows,CCols>::Type topLeftCorner(Index cRows, Index cCols)
237
+ {
238
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0, cRows, cCols);
239
+ }
240
+
241
+ /// This is the const version of topLeftCorner<int, int>(Index, Index).
242
+ template<int CRows, int CCols>
243
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type topLeftCorner(Index cRows, Index cCols) const
244
+ {
245
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), 0, 0, cRows, cCols);
246
+ }
247
+
248
+
249
+
250
+ /// \returns a dynamic-size expression of a bottom-right corner of *this.
251
+ ///
252
+ /// \param cRows the number of rows in the corner
253
+ /// \param cCols the number of columns in the corner
254
+ ///
255
+ /// Example: \include MatrixBase_bottomRightCorner_int_int.cpp
256
+ /// Output: \verbinclude MatrixBase_bottomRightCorner_int_int.out
257
+ ///
258
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
259
+ ///
260
+ /// \sa class Block, block(Index,Index,Index,Index)
261
+ ///
262
+ EIGEN_DEVICE_FUNC
263
+ inline BlockXpr bottomRightCorner(Index cRows, Index cCols)
264
+ {
265
+ return BlockXpr(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
266
+ }
267
+
268
+ /// This is the const version of bottomRightCorner(Index, Index).
269
+ EIGEN_DEVICE_FUNC
270
+ inline const ConstBlockXpr bottomRightCorner(Index cRows, Index cCols) const
271
+ {
272
+ return ConstBlockXpr(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
273
+ }
274
+
275
+ /// \returns an expression of a fixed-size bottom-right corner of *this.
276
+ ///
277
+ /// The template parameters CRows and CCols are the number of rows and columns in the corner.
278
+ ///
279
+ /// Example: \include MatrixBase_template_int_int_bottomRightCorner.cpp
280
+ /// Output: \verbinclude MatrixBase_template_int_int_bottomRightCorner.out
281
+ ///
282
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
283
+ ///
284
+ /// \sa class Block, block(Index,Index,Index,Index)
285
+ ///
286
+ template<int CRows, int CCols>
287
+ EIGEN_DEVICE_FUNC
288
+ inline typename FixedBlockXpr<CRows,CCols>::Type bottomRightCorner()
289
+ {
290
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, cols() - CCols);
291
+ }
292
+
293
+ /// This is the const version of bottomRightCorner<int, int>().
294
+ template<int CRows, int CCols>
295
+ EIGEN_DEVICE_FUNC
296
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomRightCorner() const
297
+ {
298
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, cols() - CCols);
299
+ }
300
+
301
+ /// \returns an expression of a bottom-right corner of *this.
302
+ ///
303
+ /// \tparam CRows number of rows in corner as specified at compile-time
304
+ /// \tparam CCols number of columns in corner as specified at compile-time
305
+ /// \param cRows number of rows in corner as specified at run-time
306
+ /// \param cCols number of columns in corner as specified at run-time
307
+ ///
308
+ /// This function is mainly useful for corners where the number of rows is specified at compile-time
309
+ /// and the number of columns is specified at run-time, or vice versa. The compile-time and run-time
310
+ /// information should not contradict. In other words, \a cRows should equal \a CRows unless
311
+ /// \a CRows is \a Dynamic, and the same for the number of columns.
312
+ ///
313
+ /// Example: \include MatrixBase_template_int_int_bottomRightCorner_int_int.cpp
314
+ /// Output: \verbinclude MatrixBase_template_int_int_bottomRightCorner_int_int.out
315
+ ///
316
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
317
+ ///
318
+ /// \sa class Block
319
+ ///
320
+ template<int CRows, int CCols>
321
+ inline typename FixedBlockXpr<CRows,CCols>::Type bottomRightCorner(Index cRows, Index cCols)
322
+ {
323
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
324
+ }
325
+
326
+ /// This is the const version of bottomRightCorner<int, int>(Index, Index).
327
+ template<int CRows, int CCols>
328
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomRightCorner(Index cRows, Index cCols) const
329
+ {
330
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
331
+ }
332
+
333
+
334
+
335
+ /// \returns a dynamic-size expression of a bottom-left corner of *this.
336
+ ///
337
+ /// \param cRows the number of rows in the corner
338
+ /// \param cCols the number of columns in the corner
339
+ ///
340
+ /// Example: \include MatrixBase_bottomLeftCorner_int_int.cpp
341
+ /// Output: \verbinclude MatrixBase_bottomLeftCorner_int_int.out
342
+ ///
343
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
344
+ ///
345
+ /// \sa class Block, block(Index,Index,Index,Index)
346
+ ///
347
+ EIGEN_DEVICE_FUNC
348
+ inline BlockXpr bottomLeftCorner(Index cRows, Index cCols)
349
+ {
350
+ return BlockXpr(derived(), rows() - cRows, 0, cRows, cCols);
351
+ }
352
+
353
+ /// This is the const version of bottomLeftCorner(Index, Index).
354
+ EIGEN_DEVICE_FUNC
355
+ inline const ConstBlockXpr bottomLeftCorner(Index cRows, Index cCols) const
356
+ {
357
+ return ConstBlockXpr(derived(), rows() - cRows, 0, cRows, cCols);
358
+ }
359
+
360
+ /// \returns an expression of a fixed-size bottom-left corner of *this.
361
+ ///
362
+ /// The template parameters CRows and CCols are the number of rows and columns in the corner.
363
+ ///
364
+ /// Example: \include MatrixBase_template_int_int_bottomLeftCorner.cpp
365
+ /// Output: \verbinclude MatrixBase_template_int_int_bottomLeftCorner.out
366
+ ///
367
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
368
+ ///
369
+ /// \sa class Block, block(Index,Index,Index,Index)
370
+ ///
371
+ template<int CRows, int CCols>
372
+ EIGEN_DEVICE_FUNC
373
+ inline typename FixedBlockXpr<CRows,CCols>::Type bottomLeftCorner()
374
+ {
375
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, 0);
376
+ }
377
+
378
+ /// This is the const version of bottomLeftCorner<int, int>().
379
+ template<int CRows, int CCols>
380
+ EIGEN_DEVICE_FUNC
381
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomLeftCorner() const
382
+ {
383
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - CRows, 0);
384
+ }
385
+
386
+ /// \returns an expression of a bottom-left corner of *this.
387
+ ///
388
+ /// \tparam CRows number of rows in corner as specified at compile-time
389
+ /// \tparam CCols number of columns in corner as specified at compile-time
390
+ /// \param cRows number of rows in corner as specified at run-time
391
+ /// \param cCols number of columns in corner as specified at run-time
392
+ ///
393
+ /// This function is mainly useful for corners where the number of rows is specified at compile-time
394
+ /// and the number of columns is specified at run-time, or vice versa. The compile-time and run-time
395
+ /// information should not contradict. In other words, \a cRows should equal \a CRows unless
396
+ /// \a CRows is \a Dynamic, and the same for the number of columns.
397
+ ///
398
+ /// Example: \include MatrixBase_template_int_int_bottomLeftCorner_int_int.cpp
399
+ /// Output: \verbinclude MatrixBase_template_int_int_bottomLeftCorner_int_int.out
400
+ ///
401
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
402
+ ///
403
+ /// \sa class Block
404
+ ///
405
+ template<int CRows, int CCols>
406
+ inline typename FixedBlockXpr<CRows,CCols>::Type bottomLeftCorner(Index cRows, Index cCols)
407
+ {
408
+ return typename FixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, 0, cRows, cCols);
409
+ }
410
+
411
+ /// This is the const version of bottomLeftCorner<int, int>(Index, Index).
412
+ template<int CRows, int CCols>
413
+ inline const typename ConstFixedBlockXpr<CRows,CCols>::Type bottomLeftCorner(Index cRows, Index cCols) const
414
+ {
415
+ return typename ConstFixedBlockXpr<CRows,CCols>::Type(derived(), rows() - cRows, 0, cRows, cCols);
416
+ }
417
+
418
+
419
+
420
+ /// \returns a block consisting of the top rows of *this.
421
+ ///
422
+ /// \param n the number of rows in the block
423
+ ///
424
+ /// Example: \include MatrixBase_topRows_int.cpp
425
+ /// Output: \verbinclude MatrixBase_topRows_int.out
426
+ ///
427
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
428
+ ///
429
+ /// \sa class Block, block(Index,Index,Index,Index)
430
+ ///
431
+ EIGEN_DEVICE_FUNC
432
+ inline RowsBlockXpr topRows(Index n)
433
+ {
434
+ return RowsBlockXpr(derived(), 0, 0, n, cols());
435
+ }
436
+
437
+ /// This is the const version of topRows(Index).
438
+ EIGEN_DEVICE_FUNC
439
+ inline ConstRowsBlockXpr topRows(Index n) const
440
+ {
441
+ return ConstRowsBlockXpr(derived(), 0, 0, n, cols());
442
+ }
443
+
444
+ /// \returns a block consisting of the top rows of *this.
445
+ ///
446
+ /// \tparam N the number of rows in the block as specified at compile-time
447
+ /// \param n the number of rows in the block as specified at run-time
448
+ ///
449
+ /// The compile-time and run-time information should not contradict. In other words,
450
+ /// \a n should equal \a N unless \a N is \a Dynamic.
451
+ ///
452
+ /// Example: \include MatrixBase_template_int_topRows.cpp
453
+ /// Output: \verbinclude MatrixBase_template_int_topRows.out
454
+ ///
455
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
456
+ ///
457
+ /// \sa class Block, block(Index,Index,Index,Index)
458
+ ///
459
+ template<int N>
460
+ EIGEN_DEVICE_FUNC
461
+ inline typename NRowsBlockXpr<N>::Type topRows(Index n = N)
462
+ {
463
+ return typename NRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
464
+ }
465
+
466
+ /// This is the const version of topRows<int>().
467
+ template<int N>
468
+ EIGEN_DEVICE_FUNC
469
+ inline typename ConstNRowsBlockXpr<N>::Type topRows(Index n = N) const
470
+ {
471
+ return typename ConstNRowsBlockXpr<N>::Type(derived(), 0, 0, n, cols());
472
+ }
473
+
474
+
475
+
476
+ /// \returns a block consisting of the bottom rows of *this.
477
+ ///
478
+ /// \param n the number of rows in the block
479
+ ///
480
+ /// Example: \include MatrixBase_bottomRows_int.cpp
481
+ /// Output: \verbinclude MatrixBase_bottomRows_int.out
482
+ ///
483
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
484
+ ///
485
+ /// \sa class Block, block(Index,Index,Index,Index)
486
+ ///
487
+ EIGEN_DEVICE_FUNC
488
+ inline RowsBlockXpr bottomRows(Index n)
489
+ {
490
+ return RowsBlockXpr(derived(), rows() - n, 0, n, cols());
491
+ }
492
+
493
+ /// This is the const version of bottomRows(Index).
494
+ EIGEN_DEVICE_FUNC
495
+ inline ConstRowsBlockXpr bottomRows(Index n) const
496
+ {
497
+ return ConstRowsBlockXpr(derived(), rows() - n, 0, n, cols());
498
+ }
499
+
500
+ /// \returns a block consisting of the bottom rows of *this.
501
+ ///
502
+ /// \tparam N the number of rows in the block as specified at compile-time
503
+ /// \param n the number of rows in the block as specified at run-time
504
+ ///
505
+ /// The compile-time and run-time information should not contradict. In other words,
506
+ /// \a n should equal \a N unless \a N is \a Dynamic.
507
+ ///
508
+ /// Example: \include MatrixBase_template_int_bottomRows.cpp
509
+ /// Output: \verbinclude MatrixBase_template_int_bottomRows.out
510
+ ///
511
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
512
+ ///
513
+ /// \sa class Block, block(Index,Index,Index,Index)
514
+ ///
515
+ template<int N>
516
+ EIGEN_DEVICE_FUNC
517
+ inline typename NRowsBlockXpr<N>::Type bottomRows(Index n = N)
518
+ {
519
+ return typename NRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
520
+ }
521
+
522
+ /// This is the const version of bottomRows<int>().
523
+ template<int N>
524
+ EIGEN_DEVICE_FUNC
525
+ inline typename ConstNRowsBlockXpr<N>::Type bottomRows(Index n = N) const
526
+ {
527
+ return typename ConstNRowsBlockXpr<N>::Type(derived(), rows() - n, 0, n, cols());
528
+ }
529
+
530
+
531
+
532
+ /// \returns a block consisting of a range of rows of *this.
533
+ ///
534
+ /// \param startRow the index of the first row in the block
535
+ /// \param n the number of rows in the block
536
+ ///
537
+ /// Example: \include DenseBase_middleRows_int.cpp
538
+ /// Output: \verbinclude DenseBase_middleRows_int.out
539
+ ///
540
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
541
+ ///
542
+ /// \sa class Block, block(Index,Index,Index,Index)
543
+ ///
544
+ EIGEN_DEVICE_FUNC
545
+ inline RowsBlockXpr middleRows(Index startRow, Index n)
546
+ {
547
+ return RowsBlockXpr(derived(), startRow, 0, n, cols());
548
+ }
549
+
550
+ /// This is the const version of middleRows(Index,Index).
551
+ EIGEN_DEVICE_FUNC
552
+ inline ConstRowsBlockXpr middleRows(Index startRow, Index n) const
553
+ {
554
+ return ConstRowsBlockXpr(derived(), startRow, 0, n, cols());
555
+ }
556
+
557
+ /// \returns a block consisting of a range of rows of *this.
558
+ ///
559
+ /// \tparam N the number of rows in the block as specified at compile-time
560
+ /// \param startRow the index of the first row in the block
561
+ /// \param n the number of rows in the block as specified at run-time
562
+ ///
563
+ /// The compile-time and run-time information should not contradict. In other words,
564
+ /// \a n should equal \a N unless \a N is \a Dynamic.
565
+ ///
566
+ /// Example: \include DenseBase_template_int_middleRows.cpp
567
+ /// Output: \verbinclude DenseBase_template_int_middleRows.out
568
+ ///
569
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
570
+ ///
571
+ /// \sa class Block, block(Index,Index,Index,Index)
572
+ ///
573
+ template<int N>
574
+ EIGEN_DEVICE_FUNC
575
+ inline typename NRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N)
576
+ {
577
+ return typename NRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
578
+ }
579
+
580
+ /// This is the const version of middleRows<int>().
581
+ template<int N>
582
+ EIGEN_DEVICE_FUNC
583
+ inline typename ConstNRowsBlockXpr<N>::Type middleRows(Index startRow, Index n = N) const
584
+ {
585
+ return typename ConstNRowsBlockXpr<N>::Type(derived(), startRow, 0, n, cols());
586
+ }
587
+
588
+
589
+
590
+ /// \returns a block consisting of the left columns of *this.
591
+ ///
592
+ /// \param n the number of columns in the block
593
+ ///
594
+ /// Example: \include MatrixBase_leftCols_int.cpp
595
+ /// Output: \verbinclude MatrixBase_leftCols_int.out
596
+ ///
597
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
598
+ ///
599
+ /// \sa class Block, block(Index,Index,Index,Index)
600
+ ///
601
+ EIGEN_DEVICE_FUNC
602
+ inline ColsBlockXpr leftCols(Index n)
603
+ {
604
+ return ColsBlockXpr(derived(), 0, 0, rows(), n);
605
+ }
606
+
607
+ /// This is the const version of leftCols(Index).
608
+ EIGEN_DEVICE_FUNC
609
+ inline ConstColsBlockXpr leftCols(Index n) const
610
+ {
611
+ return ConstColsBlockXpr(derived(), 0, 0, rows(), n);
612
+ }
613
+
614
+ /// \returns a block consisting of the left columns of *this.
615
+ ///
616
+ /// \tparam N the number of columns in the block as specified at compile-time
617
+ /// \param n the number of columns in the block as specified at run-time
618
+ ///
619
+ /// The compile-time and run-time information should not contradict. In other words,
620
+ /// \a n should equal \a N unless \a N is \a Dynamic.
621
+ ///
622
+ /// Example: \include MatrixBase_template_int_leftCols.cpp
623
+ /// Output: \verbinclude MatrixBase_template_int_leftCols.out
624
+ ///
625
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
626
+ ///
627
+ /// \sa class Block, block(Index,Index,Index,Index)
628
+ ///
629
+ template<int N>
630
+ EIGEN_DEVICE_FUNC
631
+ inline typename NColsBlockXpr<N>::Type leftCols(Index n = N)
632
+ {
633
+ return typename NColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
634
+ }
635
+
636
+ /// This is the const version of leftCols<int>().
637
+ template<int N>
638
+ EIGEN_DEVICE_FUNC
639
+ inline typename ConstNColsBlockXpr<N>::Type leftCols(Index n = N) const
640
+ {
641
+ return typename ConstNColsBlockXpr<N>::Type(derived(), 0, 0, rows(), n);
642
+ }
643
+
644
+
645
+
646
+ /// \returns a block consisting of the right columns of *this.
647
+ ///
648
+ /// \param n the number of columns in the block
649
+ ///
650
+ /// Example: \include MatrixBase_rightCols_int.cpp
651
+ /// Output: \verbinclude MatrixBase_rightCols_int.out
652
+ ///
653
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
654
+ ///
655
+ /// \sa class Block, block(Index,Index,Index,Index)
656
+ ///
657
+ EIGEN_DEVICE_FUNC
658
+ inline ColsBlockXpr rightCols(Index n)
659
+ {
660
+ return ColsBlockXpr(derived(), 0, cols() - n, rows(), n);
661
+ }
662
+
663
+ /// This is the const version of rightCols(Index).
664
+ EIGEN_DEVICE_FUNC
665
+ inline ConstColsBlockXpr rightCols(Index n) const
666
+ {
667
+ return ConstColsBlockXpr(derived(), 0, cols() - n, rows(), n);
668
+ }
669
+
670
+ /// \returns a block consisting of the right columns of *this.
671
+ ///
672
+ /// \tparam N the number of columns in the block as specified at compile-time
673
+ /// \param n the number of columns in the block as specified at run-time
674
+ ///
675
+ /// The compile-time and run-time information should not contradict. In other words,
676
+ /// \a n should equal \a N unless \a N is \a Dynamic.
677
+ ///
678
+ /// Example: \include MatrixBase_template_int_rightCols.cpp
679
+ /// Output: \verbinclude MatrixBase_template_int_rightCols.out
680
+ ///
681
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
682
+ ///
683
+ /// \sa class Block, block(Index,Index,Index,Index)
684
+ ///
685
+ template<int N>
686
+ EIGEN_DEVICE_FUNC
687
+ inline typename NColsBlockXpr<N>::Type rightCols(Index n = N)
688
+ {
689
+ return typename NColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
690
+ }
691
+
692
+ /// This is the const version of rightCols<int>().
693
+ template<int N>
694
+ EIGEN_DEVICE_FUNC
695
+ inline typename ConstNColsBlockXpr<N>::Type rightCols(Index n = N) const
696
+ {
697
+ return typename ConstNColsBlockXpr<N>::Type(derived(), 0, cols() - n, rows(), n);
698
+ }
699
+
700
+
701
+
702
+ /// \returns a block consisting of a range of columns of *this.
703
+ ///
704
+ /// \param startCol the index of the first column in the block
705
+ /// \param numCols the number of columns in the block
706
+ ///
707
+ /// Example: \include DenseBase_middleCols_int.cpp
708
+ /// Output: \verbinclude DenseBase_middleCols_int.out
709
+ ///
710
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
711
+ ///
712
+ /// \sa class Block, block(Index,Index,Index,Index)
713
+ ///
714
+ EIGEN_DEVICE_FUNC
715
+ inline ColsBlockXpr middleCols(Index startCol, Index numCols)
716
+ {
717
+ return ColsBlockXpr(derived(), 0, startCol, rows(), numCols);
718
+ }
719
+
720
+ /// This is the const version of middleCols(Index,Index).
721
+ EIGEN_DEVICE_FUNC
722
+ inline ConstColsBlockXpr middleCols(Index startCol, Index numCols) const
723
+ {
724
+ return ConstColsBlockXpr(derived(), 0, startCol, rows(), numCols);
725
+ }
726
+
727
+ /// \returns a block consisting of a range of columns of *this.
728
+ ///
729
+ /// \tparam N the number of columns in the block as specified at compile-time
730
+ /// \param startCol the index of the first column in the block
731
+ /// \param n the number of columns in the block as specified at run-time
732
+ ///
733
+ /// The compile-time and run-time information should not contradict. In other words,
734
+ /// \a n should equal \a N unless \a N is \a Dynamic.
735
+ ///
736
+ /// Example: \include DenseBase_template_int_middleCols.cpp
737
+ /// Output: \verbinclude DenseBase_template_int_middleCols.out
738
+ ///
739
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
740
+ ///
741
+ /// \sa class Block, block(Index,Index,Index,Index)
742
+ ///
743
+ template<int N>
744
+ EIGEN_DEVICE_FUNC
745
+ inline typename NColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N)
746
+ {
747
+ return typename NColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
748
+ }
749
+
750
+ /// This is the const version of middleCols<int>().
751
+ template<int N>
752
+ EIGEN_DEVICE_FUNC
753
+ inline typename ConstNColsBlockXpr<N>::Type middleCols(Index startCol, Index n = N) const
754
+ {
755
+ return typename ConstNColsBlockXpr<N>::Type(derived(), 0, startCol, rows(), n);
756
+ }
757
+
758
+
759
+
760
+ /// \returns a fixed-size expression of a block in *this.
761
+ ///
762
+ /// The template parameters \a NRows and \a NCols are the number of
763
+ /// rows and columns in the block.
764
+ ///
765
+ /// \param startRow the first row in the block
766
+ /// \param startCol the first column in the block
767
+ ///
768
+ /// Example: \include MatrixBase_block_int_int.cpp
769
+ /// Output: \verbinclude MatrixBase_block_int_int.out
770
+ ///
771
+ /// \note since block is a templated member, the keyword template has to be used
772
+ /// if the matrix type is also a template parameter: \code m.template block<3,3>(1,1); \endcode
773
+ ///
774
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
775
+ ///
776
+ /// \sa class Block, block(Index,Index,Index,Index)
777
+ ///
778
+ template<int NRows, int NCols>
779
+ EIGEN_DEVICE_FUNC
780
+ inline typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol)
781
+ {
782
+ return typename FixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol);
783
+ }
784
+
785
+ /// This is the const version of block<>(Index, Index). */
786
+ template<int NRows, int NCols>
787
+ EIGEN_DEVICE_FUNC
788
+ inline const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol) const
789
+ {
790
+ return typename ConstFixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol);
791
+ }
792
+
793
+ /// \returns an expression of a block in *this.
794
+ ///
795
+ /// \tparam NRows number of rows in block as specified at compile-time
796
+ /// \tparam NCols number of columns in block as specified at compile-time
797
+ /// \param startRow the first row in the block
798
+ /// \param startCol the first column in the block
799
+ /// \param blockRows number of rows in block as specified at run-time
800
+ /// \param blockCols number of columns in block as specified at run-time
801
+ ///
802
+ /// This function is mainly useful for blocks where the number of rows is specified at compile-time
803
+ /// and the number of columns is specified at run-time, or vice versa. The compile-time and run-time
804
+ /// information should not contradict. In other words, \a blockRows should equal \a NRows unless
805
+ /// \a NRows is \a Dynamic, and the same for the number of columns.
806
+ ///
807
+ /// Example: \include MatrixBase_template_int_int_block_int_int_int_int.cpp
808
+ /// Output: \verbinclude MatrixBase_template_int_int_block_int_int_int_int.cpp
809
+ ///
810
+ EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
811
+ ///
812
+ /// \sa class Block, block(Index,Index,Index,Index)
813
+ ///
814
+ template<int NRows, int NCols>
815
+ inline typename FixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol,
816
+ Index blockRows, Index blockCols)
817
+ {
818
+ return typename FixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol, blockRows, blockCols);
819
+ }
820
+
821
+ /// This is the const version of block<>(Index, Index, Index, Index).
822
+ template<int NRows, int NCols>
823
+ inline const typename ConstFixedBlockXpr<NRows,NCols>::Type block(Index startRow, Index startCol,
824
+ Index blockRows, Index blockCols) const
825
+ {
826
+ return typename ConstFixedBlockXpr<NRows,NCols>::Type(derived(), startRow, startCol, blockRows, blockCols);
827
+ }
828
+
829
+ /// \returns an expression of the \a i-th column of *this. Note that the numbering starts at 0.
830
+ ///
831
+ /// Example: \include MatrixBase_col.cpp
832
+ /// Output: \verbinclude MatrixBase_col.out
833
+ ///
834
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(column-major)
835
+ /**
836
+ * \sa row(), class Block */
837
+ EIGEN_DEVICE_FUNC
838
+ inline ColXpr col(Index i)
839
+ {
840
+ return ColXpr(derived(), i);
841
+ }
842
+
843
+ /// This is the const version of col().
844
+ EIGEN_DEVICE_FUNC
845
+ inline ConstColXpr col(Index i) const
846
+ {
847
+ return ConstColXpr(derived(), i);
848
+ }
849
+
850
+ /// \returns an expression of the \a i-th row of *this. Note that the numbering starts at 0.
851
+ ///
852
+ /// Example: \include MatrixBase_row.cpp
853
+ /// Output: \verbinclude MatrixBase_row.out
854
+ ///
855
+ EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(row-major)
856
+ /**
857
+ * \sa col(), class Block */
858
+ EIGEN_DEVICE_FUNC
859
+ inline RowXpr row(Index i)
860
+ {
861
+ return RowXpr(derived(), i);
862
+ }
863
+
864
+ /// This is the const version of row(). */
865
+ EIGEN_DEVICE_FUNC
866
+ inline ConstRowXpr row(Index i) const
867
+ {
868
+ return ConstRowXpr(derived(), i);
869
+ }
870
+
871
+ /// \returns a dynamic-size expression of a segment (i.e. a vector block) in *this.
872
+ ///
873
+ /// \only_for_vectors
874
+ ///
875
+ /// \param start the first coefficient in the segment
876
+ /// \param n the number of coefficients in the segment
877
+ ///
878
+ /// Example: \include MatrixBase_segment_int_int.cpp
879
+ /// Output: \verbinclude MatrixBase_segment_int_int.out
880
+ ///
881
+ /// \note Even though the returned expression has dynamic size, in the case
882
+ /// when it is applied to a fixed-size vector, it inherits a fixed maximal size,
883
+ /// which means that evaluating it does not cause a dynamic memory allocation.
884
+ ///
885
+ /// \sa class Block, segment(Index)
886
+ ///
887
+ EIGEN_DEVICE_FUNC
888
+ inline SegmentReturnType segment(Index start, Index n)
889
+ {
890
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
891
+ return SegmentReturnType(derived(), start, n);
892
+ }
893
+
894
+
895
+ /// This is the const version of segment(Index,Index).
896
+ EIGEN_DEVICE_FUNC
897
+ inline ConstSegmentReturnType segment(Index start, Index n) const
898
+ {
899
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
900
+ return ConstSegmentReturnType(derived(), start, n);
901
+ }
902
+
903
+ /// \returns a dynamic-size expression of the first coefficients of *this.
904
+ ///
905
+ /// \only_for_vectors
906
+ ///
907
+ /// \param n the number of coefficients in the segment
908
+ ///
909
+ /// Example: \include MatrixBase_start_int.cpp
910
+ /// Output: \verbinclude MatrixBase_start_int.out
911
+ ///
912
+ /// \note Even though the returned expression has dynamic size, in the case
913
+ /// when it is applied to a fixed-size vector, it inherits a fixed maximal size,
914
+ /// which means that evaluating it does not cause a dynamic memory allocation.
915
+ ///
916
+ /// \sa class Block, block(Index,Index)
917
+ ///
918
+ EIGEN_DEVICE_FUNC
919
+ inline SegmentReturnType head(Index n)
920
+ {
921
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
922
+ return SegmentReturnType(derived(), 0, n);
923
+ }
924
+
925
+ /// This is the const version of head(Index).
926
+ EIGEN_DEVICE_FUNC
927
+ inline ConstSegmentReturnType head(Index n) const
928
+ {
929
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
930
+ return ConstSegmentReturnType(derived(), 0, n);
931
+ }
932
+
933
+ /// \returns a dynamic-size expression of the last coefficients of *this.
934
+ ///
935
+ /// \only_for_vectors
936
+ ///
937
+ /// \param n the number of coefficients in the segment
938
+ ///
939
+ /// Example: \include MatrixBase_end_int.cpp
940
+ /// Output: \verbinclude MatrixBase_end_int.out
941
+ ///
942
+ /// \note Even though the returned expression has dynamic size, in the case
943
+ /// when it is applied to a fixed-size vector, it inherits a fixed maximal size,
944
+ /// which means that evaluating it does not cause a dynamic memory allocation.
945
+ ///
946
+ /// \sa class Block, block(Index,Index)
947
+ ///
948
+ EIGEN_DEVICE_FUNC
949
+ inline SegmentReturnType tail(Index n)
950
+ {
951
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
952
+ return SegmentReturnType(derived(), this->size() - n, n);
953
+ }
954
+
955
+ /// This is the const version of tail(Index).
956
+ EIGEN_DEVICE_FUNC
957
+ inline ConstSegmentReturnType tail(Index n) const
958
+ {
959
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
960
+ return ConstSegmentReturnType(derived(), this->size() - n, n);
961
+ }
962
+
963
+ /// \returns a fixed-size expression of a segment (i.e. a vector block) in \c *this
964
+ ///
965
+ /// \only_for_vectors
966
+ ///
967
+ /// \tparam N the number of coefficients in the segment as specified at compile-time
968
+ /// \param start the index of the first element in the segment
969
+ /// \param n the number of coefficients in the segment as specified at compile-time
970
+ ///
971
+ /// The compile-time and run-time information should not contradict. In other words,
972
+ /// \a n should equal \a N unless \a N is \a Dynamic.
973
+ ///
974
+ /// Example: \include MatrixBase_template_int_segment.cpp
975
+ /// Output: \verbinclude MatrixBase_template_int_segment.out
976
+ ///
977
+ /// \sa class Block
978
+ ///
979
+ template<int N>
980
+ EIGEN_DEVICE_FUNC
981
+ inline typename FixedSegmentReturnType<N>::Type segment(Index start, Index n = N)
982
+ {
983
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
984
+ return typename FixedSegmentReturnType<N>::Type(derived(), start, n);
985
+ }
986
+
987
+ /// This is the const version of segment<int>(Index).
988
+ template<int N>
989
+ EIGEN_DEVICE_FUNC
990
+ inline typename ConstFixedSegmentReturnType<N>::Type segment(Index start, Index n = N) const
991
+ {
992
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
993
+ return typename ConstFixedSegmentReturnType<N>::Type(derived(), start, n);
994
+ }
995
+
996
+ /// \returns a fixed-size expression of the first coefficients of *this.
997
+ ///
998
+ /// \only_for_vectors
999
+ ///
1000
+ /// \tparam N the number of coefficients in the segment as specified at compile-time
1001
+ /// \param n the number of coefficients in the segment as specified at run-time
1002
+ ///
1003
+ /// The compile-time and run-time information should not contradict. In other words,
1004
+ /// \a n should equal \a N unless \a N is \a Dynamic.
1005
+ ///
1006
+ /// Example: \include MatrixBase_template_int_start.cpp
1007
+ /// Output: \verbinclude MatrixBase_template_int_start.out
1008
+ ///
1009
+ /// \sa class Block
1010
+ ///
1011
+ template<int N>
1012
+ EIGEN_DEVICE_FUNC
1013
+ inline typename FixedSegmentReturnType<N>::Type head(Index n = N)
1014
+ {
1015
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
1016
+ return typename FixedSegmentReturnType<N>::Type(derived(), 0, n);
1017
+ }
1018
+
1019
+ /// This is the const version of head<int>().
1020
+ template<int N>
1021
+ EIGEN_DEVICE_FUNC
1022
+ inline typename ConstFixedSegmentReturnType<N>::Type head(Index n = N) const
1023
+ {
1024
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
1025
+ return typename ConstFixedSegmentReturnType<N>::Type(derived(), 0, n);
1026
+ }
1027
+
1028
+ /// \returns a fixed-size expression of the last coefficients of *this.
1029
+ ///
1030
+ /// \only_for_vectors
1031
+ ///
1032
+ /// \tparam N the number of coefficients in the segment as specified at compile-time
1033
+ /// \param n the number of coefficients in the segment as specified at run-time
1034
+ ///
1035
+ /// The compile-time and run-time information should not contradict. In other words,
1036
+ /// \a n should equal \a N unless \a N is \a Dynamic.
1037
+ ///
1038
+ /// Example: \include MatrixBase_template_int_end.cpp
1039
+ /// Output: \verbinclude MatrixBase_template_int_end.out
1040
+ ///
1041
+ /// \sa class Block
1042
+ ///
1043
+ template<int N>
1044
+ EIGEN_DEVICE_FUNC
1045
+ inline typename FixedSegmentReturnType<N>::Type tail(Index n = N)
1046
+ {
1047
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
1048
+ return typename FixedSegmentReturnType<N>::Type(derived(), size() - n);
1049
+ }
1050
+
1051
+ /// This is the const version of tail<int>.
1052
+ template<int N>
1053
+ EIGEN_DEVICE_FUNC
1054
+ inline typename ConstFixedSegmentReturnType<N>::Type tail(Index n = N) const
1055
+ {
1056
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
1057
+ return typename ConstFixedSegmentReturnType<N>::Type(derived(), size() - n);
1058
+ }