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,329 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ //
6
+ // This Source Code Form is subject to the terms of the Mozilla
7
+ // Public License v. 2.0. If a copy of the MPL was not distributed
8
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
+
10
+ #ifndef EIGEN_ARRAY_H
11
+ #define EIGEN_ARRAY_H
12
+
13
+ namespace Eigen {
14
+
15
+ namespace internal {
16
+ template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
17
+ struct traits<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > : traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
18
+ {
19
+ typedef ArrayXpr XprKind;
20
+ typedef ArrayBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > XprBase;
21
+ };
22
+ }
23
+
24
+ /** \class Array
25
+ * \ingroup Core_Module
26
+ *
27
+ * \brief General-purpose arrays with easy API for coefficient-wise operations
28
+ *
29
+ * The %Array class is very similar to the Matrix class. It provides
30
+ * general-purpose one- and two-dimensional arrays. The difference between the
31
+ * %Array and the %Matrix class is primarily in the API: the API for the
32
+ * %Array class provides easy access to coefficient-wise operations, while the
33
+ * API for the %Matrix class provides easy access to linear-algebra
34
+ * operations.
35
+ *
36
+ * See documentation of class Matrix for detailed information on the template parameters
37
+ * storage layout.
38
+ *
39
+ * This class can be extended with the help of the plugin mechanism described on the page
40
+ * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_ARRAY_PLUGIN.
41
+ *
42
+ * \sa \blank \ref TutorialArrayClass, \ref TopicClassHierarchy
43
+ */
44
+ template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
45
+ class Array
46
+ : public PlainObjectBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
47
+ {
48
+ public:
49
+
50
+ typedef PlainObjectBase<Array> Base;
51
+ EIGEN_DENSE_PUBLIC_INTERFACE(Array)
52
+
53
+ enum { Options = _Options };
54
+ typedef typename Base::PlainObject PlainObject;
55
+
56
+ protected:
57
+ template <typename Derived, typename OtherDerived, bool IsVector>
58
+ friend struct internal::conservative_resize_like_impl;
59
+
60
+ using Base::m_storage;
61
+
62
+ public:
63
+
64
+ using Base::base;
65
+ using Base::coeff;
66
+ using Base::coeffRef;
67
+
68
+ /**
69
+ * The usage of
70
+ * using Base::operator=;
71
+ * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
72
+ * the usage of 'using'. This should be done only for operator=.
73
+ */
74
+ template<typename OtherDerived>
75
+ EIGEN_DEVICE_FUNC
76
+ EIGEN_STRONG_INLINE Array& operator=(const EigenBase<OtherDerived> &other)
77
+ {
78
+ return Base::operator=(other);
79
+ }
80
+
81
+ /** Set all the entries to \a value.
82
+ * \sa DenseBase::setConstant(), DenseBase::fill()
83
+ */
84
+ /* This overload is needed because the usage of
85
+ * using Base::operator=;
86
+ * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
87
+ * the usage of 'using'. This should be done only for operator=.
88
+ */
89
+ EIGEN_DEVICE_FUNC
90
+ EIGEN_STRONG_INLINE Array& operator=(const Scalar &value)
91
+ {
92
+ Base::setConstant(value);
93
+ return *this;
94
+ }
95
+
96
+ /** Copies the value of the expression \a other into \c *this with automatic resizing.
97
+ *
98
+ * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
99
+ * it will be initialized.
100
+ *
101
+ * Note that copying a row-vector into a vector (and conversely) is allowed.
102
+ * The resizing, if any, is then done in the appropriate way so that row-vectors
103
+ * remain row-vectors and vectors remain vectors.
104
+ */
105
+ template<typename OtherDerived>
106
+ EIGEN_DEVICE_FUNC
107
+ EIGEN_STRONG_INLINE Array& operator=(const DenseBase<OtherDerived>& other)
108
+ {
109
+ return Base::_set(other);
110
+ }
111
+
112
+ /** This is a special case of the templated operator=. Its purpose is to
113
+ * prevent a default operator= from hiding the templated operator=.
114
+ */
115
+ EIGEN_DEVICE_FUNC
116
+ EIGEN_STRONG_INLINE Array& operator=(const Array& other)
117
+ {
118
+ return Base::_set(other);
119
+ }
120
+
121
+ /** Default constructor.
122
+ *
123
+ * For fixed-size matrices, does nothing.
124
+ *
125
+ * For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
126
+ * is called a null matrix. This constructor is the unique way to create null matrices: resizing
127
+ * a matrix to 0 is not supported.
128
+ *
129
+ * \sa resize(Index,Index)
130
+ */
131
+ EIGEN_DEVICE_FUNC
132
+ EIGEN_STRONG_INLINE Array() : Base()
133
+ {
134
+ Base::_check_template_params();
135
+ EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
136
+ }
137
+
138
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
139
+ // FIXME is it still needed ??
140
+ /** \internal */
141
+ EIGEN_DEVICE_FUNC
142
+ Array(internal::constructor_without_unaligned_array_assert)
143
+ : Base(internal::constructor_without_unaligned_array_assert())
144
+ {
145
+ Base::_check_template_params();
146
+ EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
147
+ }
148
+ #endif
149
+
150
+ #if EIGEN_HAS_RVALUE_REFERENCES
151
+ EIGEN_DEVICE_FUNC
152
+ Array(Array&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
153
+ : Base(std::move(other))
154
+ {
155
+ Base::_check_template_params();
156
+ }
157
+ EIGEN_DEVICE_FUNC
158
+ Array& operator=(Array&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
159
+ {
160
+ other.swap(*this);
161
+ return *this;
162
+ }
163
+ #endif
164
+
165
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
166
+ template<typename T>
167
+ EIGEN_DEVICE_FUNC
168
+ EIGEN_STRONG_INLINE explicit Array(const T& x)
169
+ {
170
+ Base::_check_template_params();
171
+ Base::template _init1<T>(x);
172
+ }
173
+
174
+ template<typename T0, typename T1>
175
+ EIGEN_DEVICE_FUNC
176
+ EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1)
177
+ {
178
+ Base::_check_template_params();
179
+ this->template _init2<T0,T1>(val0, val1);
180
+ }
181
+ #else
182
+ /** \brief Constructs a fixed-sized array initialized with coefficients starting at \a data */
183
+ EIGEN_DEVICE_FUNC explicit Array(const Scalar *data);
184
+ /** Constructs a vector or row-vector with given dimension. \only_for_vectors
185
+ *
186
+ * Note that this is only useful for dynamic-size vectors. For fixed-size vectors,
187
+ * it is redundant to pass the dimension here, so it makes more sense to use the default
188
+ * constructor Array() instead.
189
+ */
190
+ EIGEN_DEVICE_FUNC
191
+ EIGEN_STRONG_INLINE explicit Array(Index dim);
192
+ /** constructs an initialized 1x1 Array with the given coefficient */
193
+ Array(const Scalar& value);
194
+ /** constructs an uninitialized array with \a rows rows and \a cols columns.
195
+ *
196
+ * This is useful for dynamic-size arrays. For fixed-size arrays,
197
+ * it is redundant to pass these parameters, so one should use the default constructor
198
+ * Array() instead. */
199
+ Array(Index rows, Index cols);
200
+ /** constructs an initialized 2D vector with given coefficients */
201
+ Array(const Scalar& val0, const Scalar& val1);
202
+ #endif
203
+
204
+ /** constructs an initialized 3D vector with given coefficients */
205
+ EIGEN_DEVICE_FUNC
206
+ EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2)
207
+ {
208
+ Base::_check_template_params();
209
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 3)
210
+ m_storage.data()[0] = val0;
211
+ m_storage.data()[1] = val1;
212
+ m_storage.data()[2] = val2;
213
+ }
214
+ /** constructs an initialized 4D vector with given coefficients */
215
+ EIGEN_DEVICE_FUNC
216
+ EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2, const Scalar& val3)
217
+ {
218
+ Base::_check_template_params();
219
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 4)
220
+ m_storage.data()[0] = val0;
221
+ m_storage.data()[1] = val1;
222
+ m_storage.data()[2] = val2;
223
+ m_storage.data()[3] = val3;
224
+ }
225
+
226
+ /** Copy constructor */
227
+ EIGEN_DEVICE_FUNC
228
+ EIGEN_STRONG_INLINE Array(const Array& other)
229
+ : Base(other)
230
+ { }
231
+
232
+ private:
233
+ struct PrivateType {};
234
+ public:
235
+
236
+ /** \sa MatrixBase::operator=(const EigenBase<OtherDerived>&) */
237
+ template<typename OtherDerived>
238
+ EIGEN_DEVICE_FUNC
239
+ EIGEN_STRONG_INLINE Array(const EigenBase<OtherDerived> &other,
240
+ typename internal::enable_if<internal::is_convertible<typename OtherDerived::Scalar,Scalar>::value,
241
+ PrivateType>::type = PrivateType())
242
+ : Base(other.derived())
243
+ { }
244
+
245
+ EIGEN_DEVICE_FUNC inline Index innerStride() const { return 1; }
246
+ EIGEN_DEVICE_FUNC inline Index outerStride() const { return this->innerSize(); }
247
+
248
+ #ifdef EIGEN_ARRAY_PLUGIN
249
+ #include EIGEN_ARRAY_PLUGIN
250
+ #endif
251
+
252
+ private:
253
+
254
+ template<typename MatrixType, typename OtherDerived, bool SwapPointers>
255
+ friend struct internal::matrix_swap_impl;
256
+ };
257
+
258
+ /** \defgroup arraytypedefs Global array typedefs
259
+ * \ingroup Core_Module
260
+ *
261
+ * Eigen defines several typedef shortcuts for most common 1D and 2D array types.
262
+ *
263
+ * The general patterns are the following:
264
+ *
265
+ * \c ArrayRowsColsType where \c Rows and \c Cols can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size,
266
+ * and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c cd
267
+ * for complex double.
268
+ *
269
+ * For example, \c Array33d is a fixed-size 3x3 array type of doubles, and \c ArrayXXf is a dynamic-size matrix of floats.
270
+ *
271
+ * There are also \c ArraySizeType which are self-explanatory. For example, \c Array4cf is
272
+ * a fixed-size 1D array of 4 complex floats.
273
+ *
274
+ * \sa class Array
275
+ */
276
+
277
+ #define EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
278
+ /** \ingroup arraytypedefs */ \
279
+ typedef Array<Type, Size, Size> Array##SizeSuffix##SizeSuffix##TypeSuffix; \
280
+ /** \ingroup arraytypedefs */ \
281
+ typedef Array<Type, Size, 1> Array##SizeSuffix##TypeSuffix;
282
+
283
+ #define EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
284
+ /** \ingroup arraytypedefs */ \
285
+ typedef Array<Type, Size, Dynamic> Array##Size##X##TypeSuffix; \
286
+ /** \ingroup arraytypedefs */ \
287
+ typedef Array<Type, Dynamic, Size> Array##X##Size##TypeSuffix;
288
+
289
+ #define EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
290
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 2, 2) \
291
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 3, 3) \
292
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 4, 4) \
293
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
294
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
295
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
296
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
297
+
298
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(int, i)
299
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(float, f)
300
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(double, d)
301
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<float>, cf)
302
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
303
+
304
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES
305
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS
306
+
307
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS_LARGE
308
+
309
+ #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
310
+ using Eigen::Matrix##SizeSuffix##TypeSuffix; \
311
+ using Eigen::Vector##SizeSuffix##TypeSuffix; \
312
+ using Eigen::RowVector##SizeSuffix##TypeSuffix;
313
+
314
+ #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(TypeSuffix) \
315
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
316
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
317
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
318
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \
319
+
320
+ #define EIGEN_USING_ARRAY_TYPEDEFS \
321
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(i) \
322
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(f) \
323
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(d) \
324
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cf) \
325
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cd)
326
+
327
+ } // end namespace Eigen
328
+
329
+ #endif // EIGEN_ARRAY_H
@@ -0,0 +1,226 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ //
6
+ // This Source Code Form is subject to the terms of the Mozilla
7
+ // Public License v. 2.0. If a copy of the MPL was not distributed
8
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
+
10
+ #ifndef EIGEN_ARRAYBASE_H
11
+ #define EIGEN_ARRAYBASE_H
12
+
13
+ namespace Eigen {
14
+
15
+ template<typename ExpressionType> class MatrixWrapper;
16
+
17
+ /** \class ArrayBase
18
+ * \ingroup Core_Module
19
+ *
20
+ * \brief Base class for all 1D and 2D array, and related expressions
21
+ *
22
+ * An array is similar to a dense vector or matrix. While matrices are mathematical
23
+ * objects with well defined linear algebra operators, an array is just a collection
24
+ * of scalar values arranged in a one or two dimensionnal fashion. As the main consequence,
25
+ * all operations applied to an array are performed coefficient wise. Furthermore,
26
+ * arrays support scalar math functions of the c++ standard library (e.g., std::sin(x)), and convenient
27
+ * constructors allowing to easily write generic code working for both scalar values
28
+ * and arrays.
29
+ *
30
+ * This class is the base that is inherited by all array expression types.
31
+ *
32
+ * \tparam Derived is the derived type, e.g., an array or an expression type.
33
+ *
34
+ * This class can be extended with the help of the plugin mechanism described on the page
35
+ * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_ARRAYBASE_PLUGIN.
36
+ *
37
+ * \sa class MatrixBase, \ref TopicClassHierarchy
38
+ */
39
+ template<typename Derived> class ArrayBase
40
+ : public DenseBase<Derived>
41
+ {
42
+ public:
43
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
44
+ /** The base class for a given storage type. */
45
+ typedef ArrayBase StorageBaseType;
46
+
47
+ typedef ArrayBase Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl;
48
+
49
+ typedef typename internal::traits<Derived>::StorageKind StorageKind;
50
+ typedef typename internal::traits<Derived>::Scalar Scalar;
51
+ typedef typename internal::packet_traits<Scalar>::type PacketScalar;
52
+ typedef typename NumTraits<Scalar>::Real RealScalar;
53
+
54
+ typedef DenseBase<Derived> Base;
55
+ using Base::RowsAtCompileTime;
56
+ using Base::ColsAtCompileTime;
57
+ using Base::SizeAtCompileTime;
58
+ using Base::MaxRowsAtCompileTime;
59
+ using Base::MaxColsAtCompileTime;
60
+ using Base::MaxSizeAtCompileTime;
61
+ using Base::IsVectorAtCompileTime;
62
+ using Base::Flags;
63
+
64
+ using Base::derived;
65
+ using Base::const_cast_derived;
66
+ using Base::rows;
67
+ using Base::cols;
68
+ using Base::size;
69
+ using Base::coeff;
70
+ using Base::coeffRef;
71
+ using Base::lazyAssign;
72
+ using Base::operator=;
73
+ using Base::operator+=;
74
+ using Base::operator-=;
75
+ using Base::operator*=;
76
+ using Base::operator/=;
77
+
78
+ typedef typename Base::CoeffReturnType CoeffReturnType;
79
+
80
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
81
+
82
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
83
+ typedef typename Base::PlainObject PlainObject;
84
+
85
+ /** \internal Represents a matrix with all coefficients equal to one another*/
86
+ typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> ConstantReturnType;
87
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
88
+
89
+ #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::ArrayBase
90
+ #define EIGEN_DOC_UNARY_ADDONS(X,Y)
91
+ # include "../plugins/CommonCwiseUnaryOps.h"
92
+ # include "../plugins/MatrixCwiseUnaryOps.h"
93
+ # include "../plugins/ArrayCwiseUnaryOps.h"
94
+ # include "../plugins/CommonCwiseBinaryOps.h"
95
+ # include "../plugins/MatrixCwiseBinaryOps.h"
96
+ # include "../plugins/ArrayCwiseBinaryOps.h"
97
+ # ifdef EIGEN_ARRAYBASE_PLUGIN
98
+ # include EIGEN_ARRAYBASE_PLUGIN
99
+ # endif
100
+ #undef EIGEN_CURRENT_STORAGE_BASE_CLASS
101
+ #undef EIGEN_DOC_UNARY_ADDONS
102
+
103
+ /** Special case of the template operator=, in order to prevent the compiler
104
+ * from generating a default operator= (issue hit with g++ 4.1)
105
+ */
106
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
107
+ Derived& operator=(const ArrayBase& other)
108
+ {
109
+ internal::call_assignment(derived(), other.derived());
110
+ return derived();
111
+ }
112
+
113
+ /** Set all the entries to \a value.
114
+ * \sa DenseBase::setConstant(), DenseBase::fill() */
115
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
116
+ Derived& operator=(const Scalar &value)
117
+ { Base::setConstant(value); return derived(); }
118
+
119
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
120
+ Derived& operator+=(const Scalar& scalar);
121
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
122
+ Derived& operator-=(const Scalar& scalar);
123
+
124
+ template<typename OtherDerived>
125
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
126
+ Derived& operator+=(const ArrayBase<OtherDerived>& other);
127
+ template<typename OtherDerived>
128
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
129
+ Derived& operator-=(const ArrayBase<OtherDerived>& other);
130
+
131
+ template<typename OtherDerived>
132
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
133
+ Derived& operator*=(const ArrayBase<OtherDerived>& other);
134
+
135
+ template<typename OtherDerived>
136
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
137
+ Derived& operator/=(const ArrayBase<OtherDerived>& other);
138
+
139
+ public:
140
+ EIGEN_DEVICE_FUNC
141
+ ArrayBase<Derived>& array() { return *this; }
142
+ EIGEN_DEVICE_FUNC
143
+ const ArrayBase<Derived>& array() const { return *this; }
144
+
145
+ /** \returns an \link Eigen::MatrixBase Matrix \endlink expression of this array
146
+ * \sa MatrixBase::array() */
147
+ EIGEN_DEVICE_FUNC
148
+ MatrixWrapper<Derived> matrix() { return MatrixWrapper<Derived>(derived()); }
149
+ EIGEN_DEVICE_FUNC
150
+ const MatrixWrapper<const Derived> matrix() const { return MatrixWrapper<const Derived>(derived()); }
151
+
152
+ // template<typename Dest>
153
+ // inline void evalTo(Dest& dst) const { dst = matrix(); }
154
+
155
+ protected:
156
+ EIGEN_DEVICE_FUNC
157
+ ArrayBase() : Base() {}
158
+
159
+ private:
160
+ explicit ArrayBase(Index);
161
+ ArrayBase(Index,Index);
162
+ template<typename OtherDerived> explicit ArrayBase(const ArrayBase<OtherDerived>&);
163
+ protected:
164
+ // mixing arrays and matrices is not legal
165
+ template<typename OtherDerived> Derived& operator+=(const MatrixBase<OtherDerived>& )
166
+ {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
167
+ // mixing arrays and matrices is not legal
168
+ template<typename OtherDerived> Derived& operator-=(const MatrixBase<OtherDerived>& )
169
+ {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
170
+ };
171
+
172
+ /** replaces \c *this by \c *this - \a other.
173
+ *
174
+ * \returns a reference to \c *this
175
+ */
176
+ template<typename Derived>
177
+ template<typename OtherDerived>
178
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
179
+ ArrayBase<Derived>::operator-=(const ArrayBase<OtherDerived> &other)
180
+ {
181
+ call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
182
+ return derived();
183
+ }
184
+
185
+ /** replaces \c *this by \c *this + \a other.
186
+ *
187
+ * \returns a reference to \c *this
188
+ */
189
+ template<typename Derived>
190
+ template<typename OtherDerived>
191
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
192
+ ArrayBase<Derived>::operator+=(const ArrayBase<OtherDerived>& other)
193
+ {
194
+ call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
195
+ return derived();
196
+ }
197
+
198
+ /** replaces \c *this by \c *this * \a other coefficient wise.
199
+ *
200
+ * \returns a reference to \c *this
201
+ */
202
+ template<typename Derived>
203
+ template<typename OtherDerived>
204
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
205
+ ArrayBase<Derived>::operator*=(const ArrayBase<OtherDerived>& other)
206
+ {
207
+ call_assignment(derived(), other.derived(), internal::mul_assign_op<Scalar,typename OtherDerived::Scalar>());
208
+ return derived();
209
+ }
210
+
211
+ /** replaces \c *this by \c *this / \a other coefficient wise.
212
+ *
213
+ * \returns a reference to \c *this
214
+ */
215
+ template<typename Derived>
216
+ template<typename OtherDerived>
217
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
218
+ ArrayBase<Derived>::operator/=(const ArrayBase<OtherDerived>& other)
219
+ {
220
+ call_assignment(derived(), other.derived(), internal::div_assign_op<Scalar,typename OtherDerived::Scalar>());
221
+ return derived();
222
+ }
223
+
224
+ } // end namespace Eigen
225
+
226
+ #endif // EIGEN_ARRAYBASE_H