tomoto 0.1.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.
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,547 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2007-2009 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_CONSTANTS_H
12
+ #define EIGEN_CONSTANTS_H
13
+
14
+ namespace Eigen {
15
+
16
+ /** This value means that a positive quantity (e.g., a size) is not known at compile-time, and that instead the value is
17
+ * stored in some runtime variable.
18
+ *
19
+ * Changing the value of Dynamic breaks the ABI, as Dynamic is often used as a template parameter for Matrix.
20
+ */
21
+ const int Dynamic = -1;
22
+
23
+ /** This value means that a signed quantity (e.g., a signed index) is not known at compile-time, and that instead its value
24
+ * has to be specified at runtime.
25
+ */
26
+ const int DynamicIndex = 0xffffff;
27
+
28
+ /** This value means +Infinity; it is currently used only as the p parameter to MatrixBase::lpNorm<int>().
29
+ * The value Infinity there means the L-infinity norm.
30
+ */
31
+ const int Infinity = -1;
32
+
33
+ /** This value means that the cost to evaluate an expression coefficient is either very expensive or
34
+ * cannot be known at compile time.
35
+ *
36
+ * This value has to be positive to (1) simplify cost computation, and (2) allow to distinguish between a very expensive and very very expensive expressions.
37
+ * It thus must also be large enough to make sure unrolling won't happen and that sub expressions will be evaluated, but not too large to avoid overflow.
38
+ */
39
+ const int HugeCost = 10000;
40
+
41
+ /** \defgroup flags Flags
42
+ * \ingroup Core_Module
43
+ *
44
+ * These are the possible bits which can be OR'ed to constitute the flags of a matrix or
45
+ * expression.
46
+ *
47
+ * It is important to note that these flags are a purely compile-time notion. They are a compile-time property of
48
+ * an expression type, implemented as enum's. They are not stored in memory at runtime, and they do not incur any
49
+ * runtime overhead.
50
+ *
51
+ * \sa MatrixBase::Flags
52
+ */
53
+
54
+ /** \ingroup flags
55
+ *
56
+ * for a matrix, this means that the storage order is row-major.
57
+ * If this bit is not set, the storage order is column-major.
58
+ * For an expression, this determines the storage order of
59
+ * the matrix created by evaluation of that expression.
60
+ * \sa \blank \ref TopicStorageOrders */
61
+ const unsigned int RowMajorBit = 0x1;
62
+
63
+ /** \ingroup flags
64
+ * means the expression should be evaluated by the calling expression */
65
+ const unsigned int EvalBeforeNestingBit = 0x2;
66
+
67
+ /** \ingroup flags
68
+ * \deprecated
69
+ * means the expression should be evaluated before any assignment */
70
+ EIGEN_DEPRECATED
71
+ const unsigned int EvalBeforeAssigningBit = 0x4; // FIXME deprecated
72
+
73
+ /** \ingroup flags
74
+ *
75
+ * Short version: means the expression might be vectorized
76
+ *
77
+ * Long version: means that the coefficients can be handled by packets
78
+ * and start at a memory location whose alignment meets the requirements
79
+ * of the present CPU architecture for optimized packet access. In the fixed-size
80
+ * case, there is the additional condition that it be possible to access all the
81
+ * coefficients by packets (this implies the requirement that the size be a multiple of 16 bytes,
82
+ * and that any nontrivial strides don't break the alignment). In the dynamic-size case,
83
+ * there is no such condition on the total size and strides, so it might not be possible to access
84
+ * all coeffs by packets.
85
+ *
86
+ * \note This bit can be set regardless of whether vectorization is actually enabled.
87
+ * To check for actual vectorizability, see \a ActualPacketAccessBit.
88
+ */
89
+ const unsigned int PacketAccessBit = 0x8;
90
+
91
+ #ifdef EIGEN_VECTORIZE
92
+ /** \ingroup flags
93
+ *
94
+ * If vectorization is enabled (EIGEN_VECTORIZE is defined) this constant
95
+ * is set to the value \a PacketAccessBit.
96
+ *
97
+ * If vectorization is not enabled (EIGEN_VECTORIZE is not defined) this constant
98
+ * is set to the value 0.
99
+ */
100
+ const unsigned int ActualPacketAccessBit = PacketAccessBit;
101
+ #else
102
+ const unsigned int ActualPacketAccessBit = 0x0;
103
+ #endif
104
+
105
+ /** \ingroup flags
106
+ *
107
+ * Short version: means the expression can be seen as 1D vector.
108
+ *
109
+ * Long version: means that one can access the coefficients
110
+ * of this expression by coeff(int), and coeffRef(int) in the case of a lvalue expression. These
111
+ * index-based access methods are guaranteed
112
+ * to not have to do any runtime computation of a (row, col)-pair from the index, so that it
113
+ * is guaranteed that whenever it is available, index-based access is at least as fast as
114
+ * (row,col)-based access. Expressions for which that isn't possible don't have the LinearAccessBit.
115
+ *
116
+ * If both PacketAccessBit and LinearAccessBit are set, then the
117
+ * packets of this expression can be accessed by packet(int), and writePacket(int) in the case of a
118
+ * lvalue expression.
119
+ *
120
+ * Typically, all vector expressions have the LinearAccessBit, but there is one exception:
121
+ * Product expressions don't have it, because it would be troublesome for vectorization, even when the
122
+ * Product is a vector expression. Thus, vector Product expressions allow index-based coefficient access but
123
+ * not index-based packet access, so they don't have the LinearAccessBit.
124
+ */
125
+ const unsigned int LinearAccessBit = 0x10;
126
+
127
+ /** \ingroup flags
128
+ *
129
+ * Means the expression has a coeffRef() method, i.e. is writable as its individual coefficients are directly addressable.
130
+ * This rules out read-only expressions.
131
+ *
132
+ * Note that DirectAccessBit and LvalueBit are mutually orthogonal, as there are examples of expression having one but note
133
+ * the other:
134
+ * \li writable expressions that don't have a very simple memory layout as a strided array, have LvalueBit but not DirectAccessBit
135
+ * \li Map-to-const expressions, for example Map<const Matrix>, have DirectAccessBit but not LvalueBit
136
+ *
137
+ * Expressions having LvalueBit also have their coeff() method returning a const reference instead of returning a new value.
138
+ */
139
+ const unsigned int LvalueBit = 0x20;
140
+
141
+ /** \ingroup flags
142
+ *
143
+ * Means that the underlying array of coefficients can be directly accessed as a plain strided array. The memory layout
144
+ * of the array of coefficients must be exactly the natural one suggested by rows(), cols(),
145
+ * outerStride(), innerStride(), and the RowMajorBit. This rules out expressions such as Diagonal, whose coefficients,
146
+ * though referencable, do not have such a regular memory layout.
147
+ *
148
+ * See the comment on LvalueBit for an explanation of how LvalueBit and DirectAccessBit are mutually orthogonal.
149
+ */
150
+ const unsigned int DirectAccessBit = 0x40;
151
+
152
+ /** \deprecated \ingroup flags
153
+ *
154
+ * means the first coefficient packet is guaranteed to be aligned.
155
+ * An expression cannot has the AlignedBit without the PacketAccessBit flag.
156
+ * In other words, this means we are allow to perform an aligned packet access to the first element regardless
157
+ * of the expression kind:
158
+ * \code
159
+ * expression.packet<Aligned>(0);
160
+ * \endcode
161
+ */
162
+ EIGEN_DEPRECATED const unsigned int AlignedBit = 0x80;
163
+
164
+ const unsigned int NestByRefBit = 0x100;
165
+
166
+ /** \ingroup flags
167
+ *
168
+ * for an expression, this means that the storage order
169
+ * can be either row-major or column-major.
170
+ * The precise choice will be decided at evaluation time or when
171
+ * combined with other expressions.
172
+ * \sa \blank \ref RowMajorBit, \ref TopicStorageOrders */
173
+ const unsigned int NoPreferredStorageOrderBit = 0x200;
174
+
175
+ /** \ingroup flags
176
+ *
177
+ * Means that the underlying coefficients can be accessed through pointers to the sparse (un)compressed storage format,
178
+ * that is, the expression provides:
179
+ * \code
180
+ inline const Scalar* valuePtr() const;
181
+ inline const Index* innerIndexPtr() const;
182
+ inline const Index* outerIndexPtr() const;
183
+ inline const Index* innerNonZeroPtr() const;
184
+ \endcode
185
+ */
186
+ const unsigned int CompressedAccessBit = 0x400;
187
+
188
+
189
+ // list of flags that are inherited by default
190
+ const unsigned int HereditaryBits = RowMajorBit
191
+ | EvalBeforeNestingBit;
192
+
193
+ /** \defgroup enums Enumerations
194
+ * \ingroup Core_Module
195
+ *
196
+ * Various enumerations used in %Eigen. Many of these are used as template parameters.
197
+ */
198
+
199
+ /** \ingroup enums
200
+ * Enum containing possible values for the \c Mode or \c UpLo parameter of
201
+ * MatrixBase::selfadjointView() and MatrixBase::triangularView(), and selfadjoint solvers. */
202
+ enum UpLoType {
203
+ /** View matrix as a lower triangular matrix. */
204
+ Lower=0x1,
205
+ /** View matrix as an upper triangular matrix. */
206
+ Upper=0x2,
207
+ /** %Matrix has ones on the diagonal; to be used in combination with #Lower or #Upper. */
208
+ UnitDiag=0x4,
209
+ /** %Matrix has zeros on the diagonal; to be used in combination with #Lower or #Upper. */
210
+ ZeroDiag=0x8,
211
+ /** View matrix as a lower triangular matrix with ones on the diagonal. */
212
+ UnitLower=UnitDiag|Lower,
213
+ /** View matrix as an upper triangular matrix with ones on the diagonal. */
214
+ UnitUpper=UnitDiag|Upper,
215
+ /** View matrix as a lower triangular matrix with zeros on the diagonal. */
216
+ StrictlyLower=ZeroDiag|Lower,
217
+ /** View matrix as an upper triangular matrix with zeros on the diagonal. */
218
+ StrictlyUpper=ZeroDiag|Upper,
219
+ /** Used in BandMatrix and SelfAdjointView to indicate that the matrix is self-adjoint. */
220
+ SelfAdjoint=0x10,
221
+ /** Used to support symmetric, non-selfadjoint, complex matrices. */
222
+ Symmetric=0x20
223
+ };
224
+
225
+ /** \ingroup enums
226
+ * Enum for indicating whether a buffer is aligned or not. */
227
+ enum AlignmentType {
228
+ Unaligned=0, /**< Data pointer has no specific alignment. */
229
+ Aligned8=8, /**< Data pointer is aligned on a 8 bytes boundary. */
230
+ Aligned16=16, /**< Data pointer is aligned on a 16 bytes boundary. */
231
+ Aligned32=32, /**< Data pointer is aligned on a 32 bytes boundary. */
232
+ Aligned64=64, /**< Data pointer is aligned on a 64 bytes boundary. */
233
+ Aligned128=128, /**< Data pointer is aligned on a 128 bytes boundary. */
234
+ AlignedMask=255,
235
+ Aligned=16, /**< \deprecated Synonym for Aligned16. */
236
+ #if EIGEN_MAX_ALIGN_BYTES==128
237
+ AlignedMax = Aligned128
238
+ #elif EIGEN_MAX_ALIGN_BYTES==64
239
+ AlignedMax = Aligned64
240
+ #elif EIGEN_MAX_ALIGN_BYTES==32
241
+ AlignedMax = Aligned32
242
+ #elif EIGEN_MAX_ALIGN_BYTES==16
243
+ AlignedMax = Aligned16
244
+ #elif EIGEN_MAX_ALIGN_BYTES==8
245
+ AlignedMax = Aligned8
246
+ #elif EIGEN_MAX_ALIGN_BYTES==0
247
+ AlignedMax = Unaligned
248
+ #else
249
+ #error Invalid value for EIGEN_MAX_ALIGN_BYTES
250
+ #endif
251
+ };
252
+
253
+ /** \ingroup enums
254
+ * Enum used by DenseBase::corner() in Eigen2 compatibility mode. */
255
+ // FIXME after the corner() API change, this was not needed anymore, except by AlignedBox
256
+ // TODO: find out what to do with that. Adapt the AlignedBox API ?
257
+ enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
258
+
259
+ /** \ingroup enums
260
+ * Enum containing possible values for the \p Direction parameter of
261
+ * Reverse, PartialReduxExpr and VectorwiseOp. */
262
+ enum DirectionType {
263
+ /** For Reverse, all columns are reversed;
264
+ * for PartialReduxExpr and VectorwiseOp, act on columns. */
265
+ Vertical,
266
+ /** For Reverse, all rows are reversed;
267
+ * for PartialReduxExpr and VectorwiseOp, act on rows. */
268
+ Horizontal,
269
+ /** For Reverse, both rows and columns are reversed;
270
+ * not used for PartialReduxExpr and VectorwiseOp. */
271
+ BothDirections
272
+ };
273
+
274
+ /** \internal \ingroup enums
275
+ * Enum to specify how to traverse the entries of a matrix. */
276
+ enum TraversalType {
277
+ /** \internal Default traversal, no vectorization, no index-based access */
278
+ DefaultTraversal,
279
+ /** \internal No vectorization, use index-based access to have only one for loop instead of 2 nested loops */
280
+ LinearTraversal,
281
+ /** \internal Equivalent to a slice vectorization for fixed-size matrices having good alignment
282
+ * and good size */
283
+ InnerVectorizedTraversal,
284
+ /** \internal Vectorization path using a single loop plus scalar loops for the
285
+ * unaligned boundaries */
286
+ LinearVectorizedTraversal,
287
+ /** \internal Generic vectorization path using one vectorized loop per row/column with some
288
+ * scalar loops to handle the unaligned boundaries */
289
+ SliceVectorizedTraversal,
290
+ /** \internal Special case to properly handle incompatible scalar types or other defecting cases*/
291
+ InvalidTraversal,
292
+ /** \internal Evaluate all entries at once */
293
+ AllAtOnceTraversal
294
+ };
295
+
296
+ /** \internal \ingroup enums
297
+ * Enum to specify whether to unroll loops when traversing over the entries of a matrix. */
298
+ enum UnrollingType {
299
+ /** \internal Do not unroll loops. */
300
+ NoUnrolling,
301
+ /** \internal Unroll only the inner loop, but not the outer loop. */
302
+ InnerUnrolling,
303
+ /** \internal Unroll both the inner and the outer loop. If there is only one loop,
304
+ * because linear traversal is used, then unroll that loop. */
305
+ CompleteUnrolling
306
+ };
307
+
308
+ /** \internal \ingroup enums
309
+ * Enum to specify whether to use the default (built-in) implementation or the specialization. */
310
+ enum SpecializedType {
311
+ Specialized,
312
+ BuiltIn
313
+ };
314
+
315
+ /** \ingroup enums
316
+ * Enum containing possible values for the \p _Options template parameter of
317
+ * Matrix, Array and BandMatrix. */
318
+ enum StorageOptions {
319
+ /** Storage order is column major (see \ref TopicStorageOrders). */
320
+ ColMajor = 0,
321
+ /** Storage order is row major (see \ref TopicStorageOrders). */
322
+ RowMajor = 0x1, // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
323
+ /** Align the matrix itself if it is vectorizable fixed-size */
324
+ AutoAlign = 0,
325
+ /** Don't require alignment for the matrix itself (the array of coefficients, if dynamically allocated, may still be requested to be aligned) */ // FIXME --- clarify the situation
326
+ DontAlign = 0x2
327
+ };
328
+
329
+ /** \ingroup enums
330
+ * Enum for specifying whether to apply or solve on the left or right. */
331
+ enum SideType {
332
+ /** Apply transformation on the left. */
333
+ OnTheLeft = 1,
334
+ /** Apply transformation on the right. */
335
+ OnTheRight = 2
336
+ };
337
+
338
+ /* the following used to be written as:
339
+ *
340
+ * struct NoChange_t {};
341
+ * namespace {
342
+ * EIGEN_UNUSED NoChange_t NoChange;
343
+ * }
344
+ *
345
+ * on the ground that it feels dangerous to disambiguate overloaded functions on enum/integer types.
346
+ * However, this leads to "variable declared but never referenced" warnings on Intel Composer XE,
347
+ * and we do not know how to get rid of them (bug 450).
348
+ */
349
+
350
+ enum NoChange_t { NoChange };
351
+ enum Sequential_t { Sequential };
352
+ enum Default_t { Default };
353
+
354
+ /** \internal \ingroup enums
355
+ * Used in AmbiVector. */
356
+ enum AmbiVectorMode {
357
+ IsDense = 0,
358
+ IsSparse
359
+ };
360
+
361
+ /** \ingroup enums
362
+ * Used as template parameter in DenseCoeffBase and MapBase to indicate
363
+ * which accessors should be provided. */
364
+ enum AccessorLevels {
365
+ /** Read-only access via a member function. */
366
+ ReadOnlyAccessors,
367
+ /** Read/write access via member functions. */
368
+ WriteAccessors,
369
+ /** Direct read-only access to the coefficients. */
370
+ DirectAccessors,
371
+ /** Direct read/write access to the coefficients. */
372
+ DirectWriteAccessors
373
+ };
374
+
375
+ /** \ingroup enums
376
+ * Enum with options to give to various decompositions. */
377
+ enum DecompositionOptions {
378
+ /** \internal Not used (meant for LDLT?). */
379
+ Pivoting = 0x01,
380
+ /** \internal Not used (meant for LDLT?). */
381
+ NoPivoting = 0x02,
382
+ /** Used in JacobiSVD to indicate that the square matrix U is to be computed. */
383
+ ComputeFullU = 0x04,
384
+ /** Used in JacobiSVD to indicate that the thin matrix U is to be computed. */
385
+ ComputeThinU = 0x08,
386
+ /** Used in JacobiSVD to indicate that the square matrix V is to be computed. */
387
+ ComputeFullV = 0x10,
388
+ /** Used in JacobiSVD to indicate that the thin matrix V is to be computed. */
389
+ ComputeThinV = 0x20,
390
+ /** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
391
+ * that only the eigenvalues are to be computed and not the eigenvectors. */
392
+ EigenvaluesOnly = 0x40,
393
+ /** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
394
+ * that both the eigenvalues and the eigenvectors are to be computed. */
395
+ ComputeEigenvectors = 0x80,
396
+ /** \internal */
397
+ EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
398
+ /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
399
+ * solve the generalized eigenproblem \f$ Ax = \lambda B x \f$. */
400
+ Ax_lBx = 0x100,
401
+ /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
402
+ * solve the generalized eigenproblem \f$ ABx = \lambda x \f$. */
403
+ ABx_lx = 0x200,
404
+ /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
405
+ * solve the generalized eigenproblem \f$ BAx = \lambda x \f$. */
406
+ BAx_lx = 0x400,
407
+ /** \internal */
408
+ GenEigMask = Ax_lBx | ABx_lx | BAx_lx
409
+ };
410
+
411
+ /** \ingroup enums
412
+ * Possible values for the \p QRPreconditioner template parameter of JacobiSVD. */
413
+ enum QRPreconditioners {
414
+ /** Do not specify what is to be done if the SVD of a non-square matrix is asked for. */
415
+ NoQRPreconditioner,
416
+ /** Use a QR decomposition without pivoting as the first step. */
417
+ HouseholderQRPreconditioner,
418
+ /** Use a QR decomposition with column pivoting as the first step. */
419
+ ColPivHouseholderQRPreconditioner,
420
+ /** Use a QR decomposition with full pivoting as the first step. */
421
+ FullPivHouseholderQRPreconditioner
422
+ };
423
+
424
+ #ifdef Success
425
+ #error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
426
+ #endif
427
+
428
+ /** \ingroup enums
429
+ * Enum for reporting the status of a computation. */
430
+ enum ComputationInfo {
431
+ /** Computation was successful. */
432
+ Success = 0,
433
+ /** The provided data did not satisfy the prerequisites. */
434
+ NumericalIssue = 1,
435
+ /** Iterative procedure did not converge. */
436
+ NoConvergence = 2,
437
+ /** The inputs are invalid, or the algorithm has been improperly called.
438
+ * When assertions are enabled, such errors trigger an assert. */
439
+ InvalidInput = 3
440
+ };
441
+
442
+ /** \ingroup enums
443
+ * Enum used to specify how a particular transformation is stored in a matrix.
444
+ * \sa Transform, Hyperplane::transform(). */
445
+ enum TransformTraits {
446
+ /** Transformation is an isometry. */
447
+ Isometry = 0x1,
448
+ /** Transformation is an affine transformation stored as a (Dim+1)^2 matrix whose last row is
449
+ * assumed to be [0 ... 0 1]. */
450
+ Affine = 0x2,
451
+ /** Transformation is an affine transformation stored as a (Dim) x (Dim+1) matrix. */
452
+ AffineCompact = 0x10 | Affine,
453
+ /** Transformation is a general projective transformation stored as a (Dim+1)^2 matrix. */
454
+ Projective = 0x20
455
+ };
456
+
457
+ /** \internal \ingroup enums
458
+ * Enum used to choose between implementation depending on the computer architecture. */
459
+ namespace Architecture
460
+ {
461
+ enum Type {
462
+ Generic = 0x0,
463
+ SSE = 0x1,
464
+ AltiVec = 0x2,
465
+ VSX = 0x3,
466
+ NEON = 0x4,
467
+ #if defined EIGEN_VECTORIZE_SSE
468
+ Target = SSE
469
+ #elif defined EIGEN_VECTORIZE_ALTIVEC
470
+ Target = AltiVec
471
+ #elif defined EIGEN_VECTORIZE_VSX
472
+ Target = VSX
473
+ #elif defined EIGEN_VECTORIZE_NEON
474
+ Target = NEON
475
+ #else
476
+ Target = Generic
477
+ #endif
478
+ };
479
+ }
480
+
481
+ /** \internal \ingroup enums
482
+ * Enum used as template parameter in Product and product evaluators. */
483
+ enum ProductImplType
484
+ { DefaultProduct=0, LazyProduct, AliasFreeProduct, CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
485
+
486
+ /** \internal \ingroup enums
487
+ * Enum used in experimental parallel implementation. */
488
+ enum Action {GetAction, SetAction};
489
+
490
+ /** The type used to identify a dense storage. */
491
+ struct Dense {};
492
+
493
+ /** The type used to identify a general sparse storage. */
494
+ struct Sparse {};
495
+
496
+ /** The type used to identify a general solver (factored) storage. */
497
+ struct SolverStorage {};
498
+
499
+ /** The type used to identify a permutation storage. */
500
+ struct PermutationStorage {};
501
+
502
+ /** The type used to identify a permutation storage. */
503
+ struct TranspositionsStorage {};
504
+
505
+ /** The type used to identify a matrix expression */
506
+ struct MatrixXpr {};
507
+
508
+ /** The type used to identify an array expression */
509
+ struct ArrayXpr {};
510
+
511
+ // An evaluator must define its shape. By default, it can be one of the following:
512
+ struct DenseShape { static std::string debugName() { return "DenseShape"; } };
513
+ struct SolverShape { static std::string debugName() { return "SolverShape"; } };
514
+ struct HomogeneousShape { static std::string debugName() { return "HomogeneousShape"; } };
515
+ struct DiagonalShape { static std::string debugName() { return "DiagonalShape"; } };
516
+ struct BandShape { static std::string debugName() { return "BandShape"; } };
517
+ struct TriangularShape { static std::string debugName() { return "TriangularShape"; } };
518
+ struct SelfAdjointShape { static std::string debugName() { return "SelfAdjointShape"; } };
519
+ struct PermutationShape { static std::string debugName() { return "PermutationShape"; } };
520
+ struct TranspositionsShape { static std::string debugName() { return "TranspositionsShape"; } };
521
+ struct SparseShape { static std::string debugName() { return "SparseShape"; } };
522
+
523
+ namespace internal {
524
+
525
+ // random access iterators based on coeff*() accessors.
526
+ struct IndexBased {};
527
+
528
+ // evaluator based on iterators to access coefficients.
529
+ struct IteratorBased {};
530
+
531
+ /** \internal
532
+ * Constants for comparison functors
533
+ */
534
+ enum ComparisonName {
535
+ cmp_EQ = 0,
536
+ cmp_LT = 1,
537
+ cmp_LE = 2,
538
+ cmp_UNORD = 3,
539
+ cmp_NEQ = 4,
540
+ cmp_GT = 5,
541
+ cmp_GE = 6
542
+ };
543
+ } // end namespace internal
544
+
545
+ } // end namespace Eigen
546
+
547
+ #endif // EIGEN_CONSTANTS_H