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,46 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // This Source Code Form is subject to the terms of the Mozilla
5
+ // Public License v. 2.0. If a copy of the MPL was not distributed
6
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ #ifndef EIGEN_CHOLESKY_MODULE_H
9
+ #define EIGEN_CHOLESKY_MODULE_H
10
+
11
+ #include "Core"
12
+ #include "Jacobi"
13
+
14
+ #include "src/Core/util/DisableStupidWarnings.h"
15
+
16
+ /** \defgroup Cholesky_Module Cholesky module
17
+ *
18
+ *
19
+ *
20
+ * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
21
+ * Those decompositions are also accessible via the following methods:
22
+ * - MatrixBase::llt()
23
+ * - MatrixBase::ldlt()
24
+ * - SelfAdjointView::llt()
25
+ * - SelfAdjointView::ldlt()
26
+ *
27
+ * \code
28
+ * #include <Eigen/Cholesky>
29
+ * \endcode
30
+ */
31
+
32
+ #include "src/Cholesky/LLT.h"
33
+ #include "src/Cholesky/LDLT.h"
34
+ #ifdef EIGEN_USE_LAPACKE
35
+ #ifdef EIGEN_USE_MKL
36
+ #include "mkl_lapacke.h"
37
+ #else
38
+ #include "src/misc/lapacke.h"
39
+ #endif
40
+ #include "src/Cholesky/LLT_LAPACKE.h"
41
+ #endif
42
+
43
+ #include "src/Core/util/ReenableStupidWarnings.h"
44
+
45
+ #endif // EIGEN_CHOLESKY_MODULE_H
46
+ /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -0,0 +1,48 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // This Source Code Form is subject to the terms of the Mozilla
5
+ // Public License v. 2.0. If a copy of the MPL was not distributed
6
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ #ifndef EIGEN_CHOLMODSUPPORT_MODULE_H
9
+ #define EIGEN_CHOLMODSUPPORT_MODULE_H
10
+
11
+ #include "SparseCore"
12
+
13
+ #include "src/Core/util/DisableStupidWarnings.h"
14
+
15
+ extern "C" {
16
+ #include <cholmod.h>
17
+ }
18
+
19
+ /** \ingroup Support_modules
20
+ * \defgroup CholmodSupport_Module CholmodSupport module
21
+ *
22
+ * This module provides an interface to the Cholmod library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
23
+ * It provides the two following main factorization classes:
24
+ * - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
25
+ * - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial).
26
+ *
27
+ * For the sake of completeness, this module also propose the two following classes:
28
+ * - class CholmodSimplicialLLT
29
+ * - class CholmodSimplicialLDLT
30
+ * Note that these classes does not bring any particular advantage compared to the built-in
31
+ * SimplicialLLT and SimplicialLDLT factorization classes.
32
+ *
33
+ * \code
34
+ * #include <Eigen/CholmodSupport>
35
+ * \endcode
36
+ *
37
+ * In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies.
38
+ * The dependencies depend on how cholmod has been compiled.
39
+ * For a cmake based project, you can use our FindCholmod.cmake module to help you in this task.
40
+ *
41
+ */
42
+
43
+ #include "src/CholmodSupport/CholmodSupport.h"
44
+
45
+ #include "src/Core/util/ReenableStupidWarnings.h"
46
+
47
+ #endif // EIGEN_CHOLMODSUPPORT_MODULE_H
48
+
@@ -0,0 +1,537 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2007-2011 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_CORE_H
12
+ #define EIGEN_CORE_H
13
+
14
+ // first thing Eigen does: stop the compiler from committing suicide
15
+ #include "src/Core/util/DisableStupidWarnings.h"
16
+
17
+ #if defined(__CUDACC__) && !defined(EIGEN_NO_CUDA)
18
+ #define EIGEN_CUDACC __CUDACC__
19
+ #endif
20
+
21
+ #if defined(__CUDA_ARCH__) && !defined(EIGEN_NO_CUDA)
22
+ #define EIGEN_CUDA_ARCH __CUDA_ARCH__
23
+ #endif
24
+
25
+ #if defined(__CUDACC_VER_MAJOR__) && (__CUDACC_VER_MAJOR__ >= 9)
26
+ #define EIGEN_CUDACC_VER ((__CUDACC_VER_MAJOR__ * 10000) + (__CUDACC_VER_MINOR__ * 100))
27
+ #elif defined(__CUDACC_VER__)
28
+ #define EIGEN_CUDACC_VER __CUDACC_VER__
29
+ #else
30
+ #define EIGEN_CUDACC_VER 0
31
+ #endif
32
+
33
+ // Handle NVCC/CUDA/SYCL
34
+ #if defined(__CUDACC__) || defined(__SYCL_DEVICE_ONLY__)
35
+ // Do not try asserts on CUDA and SYCL!
36
+ #ifndef EIGEN_NO_DEBUG
37
+ #define EIGEN_NO_DEBUG
38
+ #endif
39
+
40
+ #ifdef EIGEN_INTERNAL_DEBUGGING
41
+ #undef EIGEN_INTERNAL_DEBUGGING
42
+ #endif
43
+
44
+ #ifdef EIGEN_EXCEPTIONS
45
+ #undef EIGEN_EXCEPTIONS
46
+ #endif
47
+
48
+ // All functions callable from CUDA code must be qualified with __device__
49
+ #ifdef __CUDACC__
50
+ // Do not try to vectorize on CUDA and SYCL!
51
+ #ifndef EIGEN_DONT_VECTORIZE
52
+ #define EIGEN_DONT_VECTORIZE
53
+ #endif
54
+
55
+ #define EIGEN_DEVICE_FUNC __host__ __device__
56
+ // We need cuda_runtime.h to ensure that that EIGEN_USING_STD_MATH macro
57
+ // works properly on the device side
58
+ #include <cuda_runtime.h>
59
+ #else
60
+ #define EIGEN_DEVICE_FUNC
61
+ #endif
62
+
63
+ #else
64
+ #define EIGEN_DEVICE_FUNC
65
+
66
+ #endif
67
+
68
+ // When compiling CUDA device code with NVCC, pull in math functions from the
69
+ // global namespace. In host mode, and when device doee with clang, use the
70
+ // std versions.
71
+ #if defined(__CUDA_ARCH__) && defined(__NVCC__)
72
+ #define EIGEN_USING_STD_MATH(FUNC) using ::FUNC;
73
+ #else
74
+ #define EIGEN_USING_STD_MATH(FUNC) using std::FUNC;
75
+ #endif
76
+
77
+ #if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(__CUDA_ARCH__) && !defined(EIGEN_EXCEPTIONS) && !defined(EIGEN_USE_SYCL)
78
+ #define EIGEN_EXCEPTIONS
79
+ #endif
80
+
81
+ #ifdef EIGEN_EXCEPTIONS
82
+ #include <new>
83
+ #endif
84
+
85
+ // then include this file where all our macros are defined. It's really important to do it first because
86
+ // it's where we do all the alignment settings (platform detection and honoring the user's will if he
87
+ // defined e.g. EIGEN_DONT_ALIGN) so it needs to be done before we do anything with vectorization.
88
+ #include "src/Core/util/Macros.h"
89
+
90
+ // Disable the ipa-cp-clone optimization flag with MinGW 6.x or newer (enabled by default with -O3)
91
+ // See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 for details.
92
+ #if EIGEN_COMP_MINGW && EIGEN_GNUC_AT_LEAST(4,6)
93
+ #pragma GCC optimize ("-fno-ipa-cp-clone")
94
+ #endif
95
+
96
+ #include <complex>
97
+
98
+ // this include file manages BLAS and MKL related macros
99
+ // and inclusion of their respective header files
100
+ #include "src/Core/util/MKL_support.h"
101
+
102
+ // if alignment is disabled, then disable vectorization. Note: EIGEN_MAX_ALIGN_BYTES is the proper check, it takes into
103
+ // account both the user's will (EIGEN_MAX_ALIGN_BYTES,EIGEN_DONT_ALIGN) and our own platform checks
104
+ #if EIGEN_MAX_ALIGN_BYTES==0
105
+ #ifndef EIGEN_DONT_VECTORIZE
106
+ #define EIGEN_DONT_VECTORIZE
107
+ #endif
108
+ #endif
109
+
110
+ #if EIGEN_COMP_MSVC
111
+ #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
112
+ #if (EIGEN_COMP_MSVC >= 1500) // 2008 or later
113
+ // Remember that usage of defined() in a #define is undefined by the standard.
114
+ // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
115
+ #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || EIGEN_ARCH_x86_64
116
+ #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
117
+ #endif
118
+ #endif
119
+ #else
120
+ // Remember that usage of defined() in a #define is undefined by the standard
121
+ #if (defined __SSE2__) && ( (!EIGEN_COMP_GNUC) || EIGEN_COMP_ICC || EIGEN_GNUC_AT_LEAST(4,2) )
122
+ #define EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC
123
+ #endif
124
+ #endif
125
+
126
+ #ifndef EIGEN_DONT_VECTORIZE
127
+
128
+ #if defined (EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
129
+
130
+ // Defines symbols for compile-time detection of which instructions are
131
+ // used.
132
+ // EIGEN_VECTORIZE_YY is defined if and only if the instruction set YY is used
133
+ #define EIGEN_VECTORIZE
134
+ #define EIGEN_VECTORIZE_SSE
135
+ #define EIGEN_VECTORIZE_SSE2
136
+
137
+ // Detect sse3/ssse3/sse4:
138
+ // gcc and icc defines __SSE3__, ...
139
+ // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you
140
+ // want to force the use of those instructions with msvc.
141
+ #ifdef __SSE3__
142
+ #define EIGEN_VECTORIZE_SSE3
143
+ #endif
144
+ #ifdef __SSSE3__
145
+ #define EIGEN_VECTORIZE_SSSE3
146
+ #endif
147
+ #ifdef __SSE4_1__
148
+ #define EIGEN_VECTORIZE_SSE4_1
149
+ #endif
150
+ #ifdef __SSE4_2__
151
+ #define EIGEN_VECTORIZE_SSE4_2
152
+ #endif
153
+ #ifdef __AVX__
154
+ #define EIGEN_VECTORIZE_AVX
155
+ #define EIGEN_VECTORIZE_SSE3
156
+ #define EIGEN_VECTORIZE_SSSE3
157
+ #define EIGEN_VECTORIZE_SSE4_1
158
+ #define EIGEN_VECTORIZE_SSE4_2
159
+ #endif
160
+ #ifdef __AVX2__
161
+ #define EIGEN_VECTORIZE_AVX2
162
+ #endif
163
+ #ifdef __FMA__
164
+ #define EIGEN_VECTORIZE_FMA
165
+ #endif
166
+ #if defined(__AVX512F__) && defined(EIGEN_ENABLE_AVX512)
167
+ #define EIGEN_VECTORIZE_AVX512
168
+ #define EIGEN_VECTORIZE_AVX2
169
+ #define EIGEN_VECTORIZE_AVX
170
+ #define EIGEN_VECTORIZE_FMA
171
+ #ifdef __AVX512DQ__
172
+ #define EIGEN_VECTORIZE_AVX512DQ
173
+ #endif
174
+ #ifdef __AVX512ER__
175
+ #define EIGEN_VECTORIZE_AVX512ER
176
+ #endif
177
+ #endif
178
+
179
+ // include files
180
+
181
+ // This extern "C" works around a MINGW-w64 compilation issue
182
+ // https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354
183
+ // In essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do).
184
+ // However, intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations
185
+ // with conflicting linkage. The linkage for intrinsics doesn't matter, but at that stage the compiler doesn't know;
186
+ // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too.
187
+ // notice that since these are C headers, the extern "C" is theoretically needed anyways.
188
+ extern "C" {
189
+ // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly.
190
+ // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus:
191
+ #if EIGEN_COMP_ICC >= 1110
192
+ #include <immintrin.h>
193
+ #else
194
+ #include <mmintrin.h>
195
+ #include <emmintrin.h>
196
+ #include <xmmintrin.h>
197
+ #ifdef EIGEN_VECTORIZE_SSE3
198
+ #include <pmmintrin.h>
199
+ #endif
200
+ #ifdef EIGEN_VECTORIZE_SSSE3
201
+ #include <tmmintrin.h>
202
+ #endif
203
+ #ifdef EIGEN_VECTORIZE_SSE4_1
204
+ #include <smmintrin.h>
205
+ #endif
206
+ #ifdef EIGEN_VECTORIZE_SSE4_2
207
+ #include <nmmintrin.h>
208
+ #endif
209
+ #if defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_AVX512)
210
+ #include <immintrin.h>
211
+ #endif
212
+ #endif
213
+ } // end extern "C"
214
+ #elif defined __VSX__
215
+ #define EIGEN_VECTORIZE
216
+ #define EIGEN_VECTORIZE_VSX
217
+ #include <altivec.h>
218
+ // We need to #undef all these ugly tokens defined in <altivec.h>
219
+ // => use __vector instead of vector
220
+ #undef bool
221
+ #undef vector
222
+ #undef pixel
223
+ #elif defined __ALTIVEC__
224
+ #define EIGEN_VECTORIZE
225
+ #define EIGEN_VECTORIZE_ALTIVEC
226
+ #include <altivec.h>
227
+ // We need to #undef all these ugly tokens defined in <altivec.h>
228
+ // => use __vector instead of vector
229
+ #undef bool
230
+ #undef vector
231
+ #undef pixel
232
+ #elif (defined __ARM_NEON) || (defined __ARM_NEON__)
233
+ #define EIGEN_VECTORIZE
234
+ #define EIGEN_VECTORIZE_NEON
235
+ #include <arm_neon.h>
236
+ #elif (defined __s390x__ && defined __VEC__)
237
+ #define EIGEN_VECTORIZE
238
+ #define EIGEN_VECTORIZE_ZVECTOR
239
+ #include <vecintrin.h>
240
+ #endif
241
+ #endif
242
+
243
+ #if defined(__F16C__) && !defined(EIGEN_COMP_CLANG)
244
+ // We can use the optimized fp16 to float and float to fp16 conversion routines
245
+ #define EIGEN_HAS_FP16_C
246
+ #endif
247
+
248
+ #if defined __CUDACC__
249
+ #define EIGEN_VECTORIZE_CUDA
250
+ #include <vector_types.h>
251
+ #if EIGEN_CUDACC_VER >= 70500
252
+ #define EIGEN_HAS_CUDA_FP16
253
+ #endif
254
+ #endif
255
+
256
+ #if defined EIGEN_HAS_CUDA_FP16
257
+ #include <host_defines.h>
258
+ #include <cuda_fp16.h>
259
+ #endif
260
+
261
+ #if (defined _OPENMP) && (!defined EIGEN_DONT_PARALLELIZE)
262
+ #define EIGEN_HAS_OPENMP
263
+ #endif
264
+
265
+ #ifdef EIGEN_HAS_OPENMP
266
+ #include <omp.h>
267
+ #endif
268
+
269
+ // MSVC for windows mobile does not have the errno.h file
270
+ #if !(EIGEN_COMP_MSVC && EIGEN_OS_WINCE) && !EIGEN_COMP_ARM
271
+ #define EIGEN_HAS_ERRNO
272
+ #endif
273
+
274
+ #ifdef EIGEN_HAS_ERRNO
275
+ #include <cerrno>
276
+ #endif
277
+ #include <cstddef>
278
+ #include <cstdlib>
279
+ #include <cmath>
280
+ #include <cassert>
281
+ #include <functional>
282
+ #include <iosfwd>
283
+ #include <cstring>
284
+ #include <string>
285
+ #include <limits>
286
+ #include <climits> // for CHAR_BIT
287
+ // for min/max:
288
+ #include <algorithm>
289
+
290
+ // for std::is_nothrow_move_assignable
291
+ #ifdef EIGEN_INCLUDE_TYPE_TRAITS
292
+ #include <type_traits>
293
+ #endif
294
+
295
+ // for outputting debug info
296
+ #ifdef EIGEN_DEBUG_ASSIGN
297
+ #include <iostream>
298
+ #endif
299
+
300
+ // required for __cpuid, needs to be included after cmath
301
+ #if EIGEN_COMP_MSVC && EIGEN_ARCH_i386_OR_x86_64 && !EIGEN_OS_WINCE
302
+ #include <intrin.h>
303
+ #endif
304
+
305
+ /** \brief Namespace containing all symbols from the %Eigen library. */
306
+ namespace Eigen {
307
+
308
+ inline static const char *SimdInstructionSetsInUse(void) {
309
+ #if defined(EIGEN_VECTORIZE_AVX512)
310
+ return "AVX512, FMA, AVX2, AVX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
311
+ #elif defined(EIGEN_VECTORIZE_AVX)
312
+ return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
313
+ #elif defined(EIGEN_VECTORIZE_SSE4_2)
314
+ return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
315
+ #elif defined(EIGEN_VECTORIZE_SSE4_1)
316
+ return "SSE, SSE2, SSE3, SSSE3, SSE4.1";
317
+ #elif defined(EIGEN_VECTORIZE_SSSE3)
318
+ return "SSE, SSE2, SSE3, SSSE3";
319
+ #elif defined(EIGEN_VECTORIZE_SSE3)
320
+ return "SSE, SSE2, SSE3";
321
+ #elif defined(EIGEN_VECTORIZE_SSE2)
322
+ return "SSE, SSE2";
323
+ #elif defined(EIGEN_VECTORIZE_ALTIVEC)
324
+ return "AltiVec";
325
+ #elif defined(EIGEN_VECTORIZE_VSX)
326
+ return "VSX";
327
+ #elif defined(EIGEN_VECTORIZE_NEON)
328
+ return "ARM NEON";
329
+ #elif defined(EIGEN_VECTORIZE_ZVECTOR)
330
+ return "S390X ZVECTOR";
331
+ #else
332
+ return "None";
333
+ #endif
334
+ }
335
+
336
+ } // end namespace Eigen
337
+
338
+ #if defined EIGEN2_SUPPORT_STAGE40_FULL_EIGEN3_STRICTNESS || defined EIGEN2_SUPPORT_STAGE30_FULL_EIGEN3_API || defined EIGEN2_SUPPORT_STAGE20_RESOLVE_API_CONFLICTS || defined EIGEN2_SUPPORT_STAGE10_FULL_EIGEN2_API || defined EIGEN2_SUPPORT
339
+ // This will generate an error message:
340
+ #error Eigen2-support is only available up to version 3.2. Please go to "http://eigen.tuxfamily.org/index.php?title=Eigen2" for further information
341
+ #endif
342
+
343
+ namespace Eigen {
344
+
345
+ // we use size_t frequently and we'll never remember to prepend it with std:: everytime just to
346
+ // ensure QNX/QCC support
347
+ using std::size_t;
348
+ // gcc 4.6.0 wants std:: for ptrdiff_t
349
+ using std::ptrdiff_t;
350
+
351
+ }
352
+
353
+ /** \defgroup Core_Module Core module
354
+ * This is the main module of Eigen providing dense matrix and vector support
355
+ * (both fixed and dynamic size) with all the features corresponding to a BLAS library
356
+ * and much more...
357
+ *
358
+ * \code
359
+ * #include <Eigen/Core>
360
+ * \endcode
361
+ */
362
+
363
+ #include "src/Core/util/Constants.h"
364
+ #include "src/Core/util/Meta.h"
365
+ #include "src/Core/util/ForwardDeclarations.h"
366
+ #include "src/Core/util/StaticAssert.h"
367
+ #include "src/Core/util/XprHelper.h"
368
+ #include "src/Core/util/Memory.h"
369
+
370
+ #include "src/Core/NumTraits.h"
371
+ #include "src/Core/MathFunctions.h"
372
+ #include "src/Core/GenericPacketMath.h"
373
+ #include "src/Core/MathFunctionsImpl.h"
374
+ #include "src/Core/arch/Default/ConjHelper.h"
375
+
376
+ #if defined EIGEN_VECTORIZE_AVX512
377
+ #include "src/Core/arch/SSE/PacketMath.h"
378
+ #include "src/Core/arch/AVX/PacketMath.h"
379
+ #include "src/Core/arch/AVX512/PacketMath.h"
380
+ #include "src/Core/arch/AVX512/MathFunctions.h"
381
+ #elif defined EIGEN_VECTORIZE_AVX
382
+ // Use AVX for floats and doubles, SSE for integers
383
+ #include "src/Core/arch/SSE/PacketMath.h"
384
+ #include "src/Core/arch/SSE/Complex.h"
385
+ #include "src/Core/arch/SSE/MathFunctions.h"
386
+ #include "src/Core/arch/AVX/PacketMath.h"
387
+ #include "src/Core/arch/AVX/MathFunctions.h"
388
+ #include "src/Core/arch/AVX/Complex.h"
389
+ #include "src/Core/arch/AVX/TypeCasting.h"
390
+ #include "src/Core/arch/SSE/TypeCasting.h"
391
+ #elif defined EIGEN_VECTORIZE_SSE
392
+ #include "src/Core/arch/SSE/PacketMath.h"
393
+ #include "src/Core/arch/SSE/MathFunctions.h"
394
+ #include "src/Core/arch/SSE/Complex.h"
395
+ #include "src/Core/arch/SSE/TypeCasting.h"
396
+ #elif defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX)
397
+ #include "src/Core/arch/AltiVec/PacketMath.h"
398
+ #include "src/Core/arch/AltiVec/MathFunctions.h"
399
+ #include "src/Core/arch/AltiVec/Complex.h"
400
+ #elif defined EIGEN_VECTORIZE_NEON
401
+ #include "src/Core/arch/NEON/PacketMath.h"
402
+ #include "src/Core/arch/NEON/MathFunctions.h"
403
+ #include "src/Core/arch/NEON/Complex.h"
404
+ #elif defined EIGEN_VECTORIZE_ZVECTOR
405
+ #include "src/Core/arch/ZVector/PacketMath.h"
406
+ #include "src/Core/arch/ZVector/MathFunctions.h"
407
+ #include "src/Core/arch/ZVector/Complex.h"
408
+ #endif
409
+
410
+ // Half float support
411
+ #include "src/Core/arch/CUDA/Half.h"
412
+ #include "src/Core/arch/CUDA/PacketMathHalf.h"
413
+ #include "src/Core/arch/CUDA/TypeCasting.h"
414
+
415
+ #if defined EIGEN_VECTORIZE_CUDA
416
+ #include "src/Core/arch/CUDA/PacketMath.h"
417
+ #include "src/Core/arch/CUDA/MathFunctions.h"
418
+ #endif
419
+
420
+ #include "src/Core/arch/Default/Settings.h"
421
+
422
+ #include "src/Core/functors/TernaryFunctors.h"
423
+ #include "src/Core/functors/BinaryFunctors.h"
424
+ #include "src/Core/functors/UnaryFunctors.h"
425
+ #include "src/Core/functors/NullaryFunctors.h"
426
+ #include "src/Core/functors/StlFunctors.h"
427
+ #include "src/Core/functors/AssignmentFunctors.h"
428
+
429
+ // Specialized functors to enable the processing of complex numbers
430
+ // on CUDA devices
431
+ #include "src/Core/arch/CUDA/Complex.h"
432
+
433
+ #include "src/Core/IO.h"
434
+ #include "src/Core/DenseCoeffsBase.h"
435
+ #include "src/Core/DenseBase.h"
436
+ #include "src/Core/MatrixBase.h"
437
+ #include "src/Core/EigenBase.h"
438
+
439
+ #include "src/Core/Product.h"
440
+ #include "src/Core/CoreEvaluators.h"
441
+ #include "src/Core/AssignEvaluator.h"
442
+
443
+ #ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874
444
+ // at least confirmed with Doxygen 1.5.5 and 1.5.6
445
+ #include "src/Core/Assign.h"
446
+ #endif
447
+
448
+ #include "src/Core/ArrayBase.h"
449
+ #include "src/Core/util/BlasUtil.h"
450
+ #include "src/Core/DenseStorage.h"
451
+ #include "src/Core/NestByValue.h"
452
+
453
+ // #include "src/Core/ForceAlignedAccess.h"
454
+
455
+ #include "src/Core/ReturnByValue.h"
456
+ #include "src/Core/NoAlias.h"
457
+ #include "src/Core/PlainObjectBase.h"
458
+ #include "src/Core/Matrix.h"
459
+ #include "src/Core/Array.h"
460
+ #include "src/Core/CwiseTernaryOp.h"
461
+ #include "src/Core/CwiseBinaryOp.h"
462
+ #include "src/Core/CwiseUnaryOp.h"
463
+ #include "src/Core/CwiseNullaryOp.h"
464
+ #include "src/Core/CwiseUnaryView.h"
465
+ #include "src/Core/SelfCwiseBinaryOp.h"
466
+ #include "src/Core/Dot.h"
467
+ #include "src/Core/StableNorm.h"
468
+ #include "src/Core/Stride.h"
469
+ #include "src/Core/MapBase.h"
470
+ #include "src/Core/Map.h"
471
+ #include "src/Core/Ref.h"
472
+ #include "src/Core/Block.h"
473
+ #include "src/Core/VectorBlock.h"
474
+ #include "src/Core/Transpose.h"
475
+ #include "src/Core/DiagonalMatrix.h"
476
+ #include "src/Core/Diagonal.h"
477
+ #include "src/Core/DiagonalProduct.h"
478
+ #include "src/Core/Redux.h"
479
+ #include "src/Core/Visitor.h"
480
+ #include "src/Core/Fuzzy.h"
481
+ #include "src/Core/Swap.h"
482
+ #include "src/Core/CommaInitializer.h"
483
+ #include "src/Core/GeneralProduct.h"
484
+ #include "src/Core/Solve.h"
485
+ #include "src/Core/Inverse.h"
486
+ #include "src/Core/SolverBase.h"
487
+ #include "src/Core/PermutationMatrix.h"
488
+ #include "src/Core/Transpositions.h"
489
+ #include "src/Core/TriangularMatrix.h"
490
+ #include "src/Core/SelfAdjointView.h"
491
+ #include "src/Core/products/GeneralBlockPanelKernel.h"
492
+ #include "src/Core/products/Parallelizer.h"
493
+ #include "src/Core/ProductEvaluators.h"
494
+ #include "src/Core/products/GeneralMatrixVector.h"
495
+ #include "src/Core/products/GeneralMatrixMatrix.h"
496
+ #include "src/Core/SolveTriangular.h"
497
+ #include "src/Core/products/GeneralMatrixMatrixTriangular.h"
498
+ #include "src/Core/products/SelfadjointMatrixVector.h"
499
+ #include "src/Core/products/SelfadjointMatrixMatrix.h"
500
+ #include "src/Core/products/SelfadjointProduct.h"
501
+ #include "src/Core/products/SelfadjointRank2Update.h"
502
+ #include "src/Core/products/TriangularMatrixVector.h"
503
+ #include "src/Core/products/TriangularMatrixMatrix.h"
504
+ #include "src/Core/products/TriangularSolverMatrix.h"
505
+ #include "src/Core/products/TriangularSolverVector.h"
506
+ #include "src/Core/BandMatrix.h"
507
+ #include "src/Core/CoreIterators.h"
508
+ #include "src/Core/ConditionEstimator.h"
509
+
510
+ #include "src/Core/BooleanRedux.h"
511
+ #include "src/Core/Select.h"
512
+ #include "src/Core/VectorwiseOp.h"
513
+ #include "src/Core/Random.h"
514
+ #include "src/Core/Replicate.h"
515
+ #include "src/Core/Reverse.h"
516
+ #include "src/Core/ArrayWrapper.h"
517
+
518
+ #ifdef EIGEN_USE_BLAS
519
+ #include "src/Core/products/GeneralMatrixMatrix_BLAS.h"
520
+ #include "src/Core/products/GeneralMatrixVector_BLAS.h"
521
+ #include "src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h"
522
+ #include "src/Core/products/SelfadjointMatrixMatrix_BLAS.h"
523
+ #include "src/Core/products/SelfadjointMatrixVector_BLAS.h"
524
+ #include "src/Core/products/TriangularMatrixMatrix_BLAS.h"
525
+ #include "src/Core/products/TriangularMatrixVector_BLAS.h"
526
+ #include "src/Core/products/TriangularSolverMatrix_BLAS.h"
527
+ #endif // EIGEN_USE_BLAS
528
+
529
+ #ifdef EIGEN_USE_MKL_VML
530
+ #include "src/Core/Assign_MKL.h"
531
+ #endif
532
+
533
+ #include "src/Core/GlobalFunctions.h"
534
+
535
+ #include "src/Core/util/ReenableStupidWarnings.h"
536
+
537
+ #endif // EIGEN_CORE_H