tomoto 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +8 -10
  4. data/ext/tomoto/ct.cpp +11 -11
  5. data/ext/tomoto/dmr.cpp +14 -13
  6. data/ext/tomoto/dt.cpp +14 -14
  7. data/ext/tomoto/extconf.rb +7 -5
  8. data/ext/tomoto/gdmr.cpp +7 -7
  9. data/ext/tomoto/hdp.cpp +9 -9
  10. data/ext/tomoto/hlda.cpp +13 -13
  11. data/ext/tomoto/hpa.cpp +5 -5
  12. data/ext/tomoto/lda.cpp +42 -39
  13. data/ext/tomoto/llda.cpp +6 -6
  14. data/ext/tomoto/mglda.cpp +15 -15
  15. data/ext/tomoto/pa.cpp +6 -6
  16. data/ext/tomoto/plda.cpp +6 -6
  17. data/ext/tomoto/slda.cpp +8 -8
  18. data/ext/tomoto/{ext.cpp → tomoto.cpp} +8 -8
  19. data/ext/tomoto/utils.h +16 -70
  20. data/lib/tomoto/version.rb +1 -1
  21. data/lib/tomoto.rb +5 -1
  22. data/vendor/EigenRand/EigenRand/Core.h +10 -10
  23. data/vendor/EigenRand/EigenRand/Dists/Basic.h +208 -9
  24. data/vendor/EigenRand/EigenRand/Dists/Discrete.h +52 -31
  25. data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +9 -8
  26. data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +28 -21
  27. data/vendor/EigenRand/EigenRand/EigenRand +11 -6
  28. data/vendor/EigenRand/EigenRand/Macro.h +13 -7
  29. data/vendor/EigenRand/EigenRand/MorePacketMath.h +348 -740
  30. data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +5 -3
  31. data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +9 -3
  32. data/vendor/EigenRand/EigenRand/PacketFilter.h +11 -253
  33. data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +21 -47
  34. data/vendor/EigenRand/EigenRand/RandUtils.h +50 -344
  35. data/vendor/EigenRand/EigenRand/arch/AVX/MorePacketMath.h +619 -0
  36. data/vendor/EigenRand/EigenRand/arch/AVX/PacketFilter.h +149 -0
  37. data/vendor/EigenRand/EigenRand/arch/AVX/RandUtils.h +228 -0
  38. data/vendor/EigenRand/EigenRand/arch/NEON/MorePacketMath.h +473 -0
  39. data/vendor/EigenRand/EigenRand/arch/NEON/PacketFilter.h +142 -0
  40. data/vendor/EigenRand/EigenRand/arch/NEON/RandUtils.h +126 -0
  41. data/vendor/EigenRand/EigenRand/arch/SSE/MorePacketMath.h +501 -0
  42. data/vendor/EigenRand/EigenRand/arch/SSE/PacketFilter.h +133 -0
  43. data/vendor/EigenRand/EigenRand/arch/SSE/RandUtils.h +120 -0
  44. data/vendor/EigenRand/EigenRand/doc.h +24 -12
  45. data/vendor/EigenRand/README.md +57 -4
  46. data/vendor/eigen/COPYING.APACHE +203 -0
  47. data/vendor/eigen/COPYING.BSD +1 -1
  48. data/vendor/eigen/COPYING.MINPACK +51 -52
  49. data/vendor/eigen/Eigen/Cholesky +0 -1
  50. data/vendor/eigen/Eigen/Core +112 -265
  51. data/vendor/eigen/Eigen/Eigenvalues +2 -3
  52. data/vendor/eigen/Eigen/Geometry +5 -8
  53. data/vendor/eigen/Eigen/Householder +0 -1
  54. data/vendor/eigen/Eigen/Jacobi +0 -1
  55. data/vendor/eigen/Eigen/KLUSupport +41 -0
  56. data/vendor/eigen/Eigen/LU +2 -5
  57. data/vendor/eigen/Eigen/OrderingMethods +0 -3
  58. data/vendor/eigen/Eigen/PaStiXSupport +1 -0
  59. data/vendor/eigen/Eigen/PardisoSupport +0 -0
  60. data/vendor/eigen/Eigen/QR +2 -3
  61. data/vendor/eigen/Eigen/QtAlignedMalloc +0 -1
  62. data/vendor/eigen/Eigen/SVD +0 -1
  63. data/vendor/eigen/Eigen/Sparse +0 -2
  64. data/vendor/eigen/Eigen/SparseCholesky +0 -8
  65. data/vendor/eigen/Eigen/SparseLU +4 -0
  66. data/vendor/eigen/Eigen/SparseQR +0 -1
  67. data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  68. data/vendor/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  69. data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  70. data/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  71. data/vendor/eigen/Eigen/src/Core/Array.h +99 -11
  72. data/vendor/eigen/Eigen/src/Core/ArrayBase.h +3 -3
  73. data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  74. data/vendor/eigen/Eigen/src/Core/Assign.h +1 -1
  75. data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  76. data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  77. data/vendor/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  78. data/vendor/eigen/Eigen/src/Core/Block.h +56 -60
  79. data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  80. data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  81. data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  82. data/vendor/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  83. data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  84. data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  85. data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  86. data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +14 -10
  87. data/vendor/eigen/Eigen/src/Core/DenseBase.h +132 -42
  88. data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  89. data/vendor/eigen/Eigen/src/Core/DenseStorage.h +153 -71
  90. data/vendor/eigen/Eigen/src/Core/Diagonal.h +21 -23
  91. data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  92. data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  93. data/vendor/eigen/Eigen/src/Core/Dot.h +10 -10
  94. data/vendor/eigen/Eigen/src/Core/EigenBase.h +10 -9
  95. data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  96. data/vendor/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  97. data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  98. data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +599 -152
  99. data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  100. data/vendor/eigen/Eigen/src/Core/IO.h +40 -7
  101. data/vendor/eigen/Eigen/src/Core/IndexedView.h +237 -0
  102. data/vendor/eigen/Eigen/src/Core/Inverse.h +9 -10
  103. data/vendor/eigen/Eigen/src/Core/Map.h +7 -7
  104. data/vendor/eigen/Eigen/src/Core/MapBase.h +10 -3
  105. data/vendor/eigen/Eigen/src/Core/MathFunctions.h +767 -125
  106. data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  107. data/vendor/eigen/Eigen/src/Core/Matrix.h +131 -25
  108. data/vendor/eigen/Eigen/src/Core/MatrixBase.h +21 -3
  109. data/vendor/eigen/Eigen/src/Core/NestByValue.h +25 -50
  110. data/vendor/eigen/Eigen/src/Core/NoAlias.h +4 -3
  111. data/vendor/eigen/Eigen/src/Core/NumTraits.h +107 -20
  112. data/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  113. data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +3 -31
  114. data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +152 -59
  115. data/vendor/eigen/Eigen/src/Core/Product.h +30 -25
  116. data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +192 -125
  117. data/vendor/eigen/Eigen/src/Core/Random.h +37 -1
  118. data/vendor/eigen/Eigen/src/Core/Redux.h +180 -170
  119. data/vendor/eigen/Eigen/src/Core/Ref.h +121 -23
  120. data/vendor/eigen/Eigen/src/Core/Replicate.h +8 -8
  121. data/vendor/eigen/Eigen/src/Core/Reshaped.h +454 -0
  122. data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  123. data/vendor/eigen/Eigen/src/Core/Reverse.h +18 -12
  124. data/vendor/eigen/Eigen/src/Core/Select.h +8 -6
  125. data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  126. data/vendor/eigen/Eigen/src/Core/Solve.h +14 -14
  127. data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +16 -16
  128. data/vendor/eigen/Eigen/src/Core/SolverBase.h +41 -3
  129. data/vendor/eigen/Eigen/src/Core/StableNorm.h +100 -70
  130. data/vendor/eigen/Eigen/src/Core/StlIterators.h +463 -0
  131. data/vendor/eigen/Eigen/src/Core/Stride.h +9 -4
  132. data/vendor/eigen/Eigen/src/Core/Swap.h +5 -4
  133. data/vendor/eigen/Eigen/src/Core/Transpose.h +88 -27
  134. data/vendor/eigen/Eigen/src/Core/Transpositions.h +26 -47
  135. data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +93 -75
  136. data/vendor/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  137. data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  138. data/vendor/eigen/Eigen/src/Core/Visitor.h +137 -29
  139. data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  140. data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  141. data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  142. data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  143. data/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  144. data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +207 -236
  145. data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1482 -495
  146. data/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  147. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  148. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  149. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  150. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  151. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  152. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  153. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  154. data/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  155. data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  156. data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  157. data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  158. data/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  159. data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  160. data/vendor/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  161. data/vendor/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  162. data/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  163. data/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  164. data/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  165. data/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  166. data/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  167. data/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  168. data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  169. data/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  170. data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  171. data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  172. data/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  173. data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  174. data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  175. data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  176. data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  177. data/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  178. data/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  179. data/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  180. data/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  181. data/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  182. data/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  183. data/vendor/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  184. data/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  185. data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  186. data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  187. data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  188. data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  189. data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  190. data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  191. data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  192. data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +355 -16
  193. data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1075 -586
  194. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +49 -24
  195. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +41 -35
  196. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +6 -6
  197. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +4 -2
  198. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  199. data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +22 -5
  200. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +53 -30
  201. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +16 -8
  202. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  203. data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +4 -4
  204. data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  205. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +33 -27
  206. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +14 -12
  207. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +36 -34
  208. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +8 -4
  209. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  210. data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +304 -119
  211. data/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  212. data/vendor/eigen/Eigen/src/Core/util/Constants.h +25 -9
  213. data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +26 -3
  214. data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +29 -9
  215. data/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  216. data/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  217. data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  218. data/vendor/eigen/Eigen/src/Core/util/Macros.h +709 -246
  219. data/vendor/eigen/Eigen/src/Core/util/Memory.h +222 -52
  220. data/vendor/eigen/Eigen/src/Core/util/Meta.h +355 -77
  221. data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +5 -1
  222. data/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  223. data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  224. data/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  225. data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +65 -30
  226. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  227. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +7 -4
  228. data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  229. data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  230. data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  231. data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  232. data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  233. data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +21 -9
  234. data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +77 -43
  235. data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  236. data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  237. data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  238. data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  239. data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  240. data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  241. data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  242. data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  243. data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +70 -14
  244. data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  245. data/vendor/eigen/Eigen/src/Geometry/Scaling.h +23 -5
  246. data/vendor/eigen/Eigen/src/Geometry/Transform.h +88 -67
  247. data/vendor/eigen/Eigen/src/Geometry/Translation.h +6 -12
  248. data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +1 -1
  249. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  250. data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  251. data/vendor/eigen/Eigen/src/Householder/Householder.h +8 -4
  252. data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  253. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  254. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  255. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  256. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  257. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  258. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  259. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  260. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  261. data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  262. data/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  263. data/vendor/eigen/Eigen/src/LU/Determinant.h +35 -19
  264. data/vendor/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  265. data/vendor/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  266. data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +71 -58
  267. data/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  268. data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  269. data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  270. data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  271. data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  272. data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +9 -7
  273. data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  274. data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  275. data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  276. data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  277. data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  278. data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +183 -63
  279. data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  280. data/vendor/eigen/Eigen/src/SVD/SVDBase.h +83 -22
  281. data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  282. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +17 -9
  283. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +12 -37
  284. data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +3 -2
  285. data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  286. data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  287. data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  288. data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  289. data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  290. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  291. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +4 -2
  292. data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  293. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +126 -11
  294. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  295. data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  296. data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  297. data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +5 -2
  298. data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  299. data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  300. data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +1 -0
  301. data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +162 -12
  302. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  303. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  304. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  305. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  306. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  307. data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  308. data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +2 -12
  309. data/vendor/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  310. data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  311. data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  312. data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  313. data/vendor/eigen/Eigen/src/misc/lapacke.h +5 -4
  314. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +28 -2
  315. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  316. data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  317. data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  318. data/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  319. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  320. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  321. data/vendor/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  322. data/vendor/eigen/README.md +2 -0
  323. data/vendor/eigen/bench/btl/README +1 -1
  324. data/vendor/eigen/bench/tensors/README +6 -7
  325. data/vendor/eigen/ci/README.md +56 -0
  326. data/vendor/eigen/demos/mix_eigen_and_c/README +1 -1
  327. data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +213 -158
  328. data/vendor/eigen/unsupported/README.txt +1 -1
  329. data/vendor/tomotopy/README.kr.rst +78 -0
  330. data/vendor/tomotopy/README.rst +75 -0
  331. data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
  332. data/vendor/tomotopy/src/Labeling/Phraser.hpp +4 -4
  333. data/vendor/tomotopy/src/TopicModel/CTModel.hpp +7 -3
  334. data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +7 -3
  335. data/vendor/tomotopy/src/TopicModel/DTModel.hpp +6 -3
  336. data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +2 -2
  337. data/vendor/tomotopy/src/TopicModel/HDP.h +1 -0
  338. data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +57 -6
  339. data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +6 -3
  340. data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +3 -2
  341. data/vendor/tomotopy/src/TopicModel/LDA.h +3 -3
  342. data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +5 -5
  343. data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +50 -19
  344. data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +6 -2
  345. data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +3 -2
  346. data/vendor/tomotopy/src/TopicModel/PAModel.hpp +1 -1
  347. data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +6 -2
  348. data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
  349. data/vendor/tomotopy/src/TopicModel/PTModel.hpp +36 -3
  350. data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +6 -3
  351. data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +55 -26
  352. data/vendor/tomotopy/src/Utils/AliasMethod.hpp +5 -4
  353. data/vendor/tomotopy/src/Utils/Dictionary.h +2 -2
  354. data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
  355. data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +1 -1
  356. data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +1 -1
  357. data/vendor/tomotopy/src/Utils/exception.h +6 -0
  358. data/vendor/tomotopy/src/Utils/math.h +2 -2
  359. data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
  360. data/vendor/tomotopy/src/Utils/serializer.hpp +30 -5
  361. data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
  362. metadata +64 -18
  363. data/vendor/eigen/Eigen/CMakeLists.txt +0 -19
  364. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -674
  365. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  366. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  367. data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  368. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  369. data/vendor/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7d2b9113c560c533a6ee514fd382116b100a1a0a89c410341f09601c579b524
4
- data.tar.gz: 503cb06e8a36b0d5aa71dd5ff6cf8a67a9a6f66d804351197e89e92d26b3afe7
3
+ metadata.gz: e3e3aa3215e693030f3069cab0fd62686e9d28ad4df6e93ee2e9c7ba9e29286f
4
+ data.tar.gz: 98e4f18488132f6130bd9523d8540dd73626e8b3e5a58a1656ce3aa1ddf8234b
5
5
  SHA512:
6
- metadata.gz: 587ed55f6006179f861019cfd91ec4b1e78bbebe27a582323ce77c5bb9d5b73979f103625a5c424f1eb76464e5a11b195cc6cbbd23c72e1054cebd046bed3849
7
- data.tar.gz: 03fb68f340dc947f9ef5d25087731f447e7ec9e777d6e551768c5d8db719732af5a7f23ae5c3077d2de43f640b7cd1bc12a01ecf359926e327a5c6b296e36311
6
+ metadata.gz: 95b9d0697f58a9149c18cbbdcc7b93aa19dc7f335f12033fc80386a2ca6628bfc3c2a7a9c7299cd192459132f8d467663562de3da733cca00041da24361a6d9f
7
+ data.tar.gz: 9c0e12d32aedb8cb0689032f9b0fe54387b9b452a1e26b747137c4115e9813ea491fa09b6851b9e69ca6a3a86df159409d57322c3862b670ae3b3d4f8711469d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 0.3.0 (2022-10-03)
2
+
3
+ - Added precompiled gems for Linux and Mac
4
+ - Updated tomoto to 0.12.3
5
+ - Dropped support for Ruby < 2.7
6
+
7
+ ## 0.2.3 (2021-08-26)
8
+
9
+ - Updated to Rice 4
10
+
1
11
  ## 0.2.2 (2021-08-23)
2
12
 
3
13
  - Reduced gem size
data/README.md CHANGED
@@ -1,19 +1,17 @@
1
- # tomoto
1
+ # tomoto.rb
2
2
 
3
3
  :tomato: [tomoto](https://github.com/bab2min/tomotopy) - high performance topic modeling - for Ruby
4
4
 
5
- [![Build Status](https://github.com/ankane/tomoto/workflows/build/badge.svg?branch=master)](https://github.com/ankane/tomoto/actions)
5
+ [![Build Status](https://github.com/ankane/tomoto-ruby/workflows/build/badge.svg?branch=master)](https://github.com/ankane/tomoto-ruby/actions)
6
6
 
7
7
  ## Installation
8
8
 
9
9
  Add this line to your application’s Gemfile:
10
10
 
11
11
  ```ruby
12
- gem 'tomoto'
12
+ gem "tomoto"
13
13
  ```
14
14
 
15
- It can take 10-20 minutes to compile the extension.
16
-
17
15
  ## Getting Started
18
16
 
19
17
  Train a model
@@ -142,22 +140,22 @@ Supported values are `:default`, `:none`, `:copy_merge`, and `:partition`.
142
140
 
143
141
  ## History
144
142
 
145
- View the [changelog](https://github.com/ankane/tomoto/blob/master/CHANGELOG.md)
143
+ View the [changelog](https://github.com/ankane/tomoto-ruby/blob/master/CHANGELOG.md)
146
144
 
147
145
  ## Contributing
148
146
 
149
147
  Everyone is encouraged to help improve this project. Here are a few ways you can help:
150
148
 
151
- - [Report bugs](https://github.com/ankane/tomoto/issues)
152
- - Fix bugs and [submit pull requests](https://github.com/ankane/tomoto/pulls)
149
+ - [Report bugs](https://github.com/ankane/tomoto-ruby/issues)
150
+ - Fix bugs and [submit pull requests](https://github.com/ankane/tomoto-ruby/pulls)
153
151
  - Write, clarify, or fix documentation
154
152
  - Suggest or add new features
155
153
 
156
154
  To get started with development:
157
155
 
158
156
  ```sh
159
- git clone --recursive https://github.com/ankane/tomoto.git
160
- cd tomoto
157
+ git clone --recursive https://github.com/ankane/tomoto-ruby.git
158
+ cd tomoto-ruby
161
159
  bundle install
162
160
  bundle exec rake compile
163
161
  bundle exec rake test
data/ext/tomoto/ct.cpp CHANGED
@@ -1,14 +1,14 @@
1
1
  #include <CT.h>
2
2
 
3
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
4
4
 
5
5
  #include "utils.h"
6
6
 
7
7
  void init_ct(Rice::Module& m) {
8
8
  Rice::define_class_under<tomoto::ICTModel, tomoto::ILDAModel>(m, "CT")
9
- .define_singleton_method(
9
+ .define_singleton_function(
10
10
  "_new",
11
- *[](size_t tw, size_t k, tomoto::Float alpha, tomoto::Float eta, size_t seed) {
11
+ [](size_t tw, size_t k, tomoto::Float alpha, tomoto::Float eta, size_t seed) {
12
12
  tomoto::CTArgs args;
13
13
  args.k = k;
14
14
  args.alpha = {alpha};
@@ -17,42 +17,42 @@ void init_ct(Rice::Module& m) {
17
17
  args.seed = seed;
18
18
  }
19
19
  return tomoto::ICTModel::create((tomoto::TermWeight)tw, args);
20
- })
20
+ }, Rice::Return().takeOwnership())
21
21
  .define_method(
22
22
  "_correlations",
23
- *[](tomoto::ICTModel& self, tomoto::Tid topic_id) {
23
+ [](tomoto::ICTModel& self, tomoto::Tid topic_id) {
24
24
  return self.getCorrelationTopic(topic_id);
25
25
  })
26
26
  .define_method(
27
27
  "num_beta_sample",
28
- *[](tomoto::ICTModel& self) {
28
+ [](tomoto::ICTModel& self) {
29
29
  return self.getNumBetaSample();
30
30
  })
31
31
  .define_method(
32
32
  "num_beta_sample=",
33
- *[](tomoto::ICTModel& self, size_t value) {
33
+ [](tomoto::ICTModel& self, size_t value) {
34
34
  self.setNumBetaSample(value);
35
35
  return value;
36
36
  })
37
37
  .define_method(
38
38
  "num_tmn_sample",
39
- *[](tomoto::ICTModel& self) {
39
+ [](tomoto::ICTModel& self) {
40
40
  return self.getNumTMNSample();
41
41
  })
42
42
  .define_method(
43
43
  "num_tmn_sample=",
44
- *[](tomoto::ICTModel& self, size_t value) {
44
+ [](tomoto::ICTModel& self, size_t value) {
45
45
  self.setNumTMNSample(value);
46
46
  return value;
47
47
  })
48
48
  .define_method(
49
49
  "_prior_cov",
50
- *[](tomoto::ICTModel& self) {
50
+ [](tomoto::ICTModel& self) {
51
51
  return self.getPriorCov();
52
52
  })
53
53
  .define_method(
54
54
  "prior_mean",
55
- *[](tomoto::ICTModel& self) {
55
+ [](tomoto::ICTModel& self) {
56
56
  return self.getPriorMean();
57
57
  });
58
58
  }
data/ext/tomoto/dmr.cpp CHANGED
@@ -1,15 +1,14 @@
1
1
  #include <DMR.h>
2
2
 
3
- #include <rice/Class.hpp>
4
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
5
4
 
6
5
  #include "utils.h"
7
6
 
8
7
  void init_dmr(Rice::Module& m) {
9
8
  Rice::define_class_under<tomoto::IDMRModel, tomoto::ILDAModel>(m, "DMR")
10
- .define_singleton_method(
9
+ .define_singleton_function(
11
10
  "_new",
12
- *[](size_t tw, size_t k, tomoto::Float alpha, tomoto::Float sigma, tomoto::Float eta, tomoto::Float alpha_epsilon, size_t seed) {
11
+ [](size_t tw, size_t k, tomoto::Float alpha, tomoto::Float sigma, tomoto::Float eta, tomoto::Float alpha_epsilon, size_t seed) {
13
12
  tomoto::DMRArgs args;
14
13
  args.k = k;
15
14
  args.alpha = {alpha};
@@ -20,49 +19,51 @@ void init_dmr(Rice::Module& m) {
20
19
  args.seed = seed;
21
20
  }
22
21
  return tomoto::IDMRModel::create((tomoto::TermWeight)tw, args);
23
- })
22
+ }, Rice::Return().takeOwnership())
24
23
  .define_method(
25
24
  "_add_doc",
26
- *[](tomoto::IDMRModel& self, std::vector<std::string> words, std::string metadata) {
25
+ [](tomoto::IDMRModel& self, std::vector<std::string> words, std::string metadata) {
27
26
  auto doc = buildDoc(words);
28
27
  doc.misc["metadata"] = metadata;
29
28
  return self.addDoc(doc);
30
29
  })
31
30
  .define_method(
32
31
  "alpha_epsilon",
33
- *[](tomoto::IDMRModel& self) {
32
+ [](tomoto::IDMRModel& self) {
34
33
  return self.getAlphaEps();
35
34
  })
36
35
  .define_method(
37
36
  "alpha_epsilon=",
38
- *[](tomoto::IDMRModel& self, tomoto::Float value) {
37
+ [](tomoto::IDMRModel& self, tomoto::Float value) {
39
38
  self.setAlphaEps(value);
40
39
  return value;
41
40
  })
42
41
  .define_method(
43
42
  "f",
44
- *[](tomoto::IDMRModel& self) {
43
+ [](tomoto::IDMRModel& self) {
45
44
  return self.getF();
46
45
  })
47
46
  .define_method(
48
47
  "_lambdas",
49
- *[](tomoto::IDMRModel& self, tomoto::Tid topic_id) {
48
+ [](tomoto::IDMRModel& self, tomoto::Tid topic_id) {
50
49
  return self.getLambdaByTopic(topic_id);
51
50
  })
52
51
  .define_method(
53
52
  "metadata_dict",
54
- *[](tomoto::IDMRModel& self) {
53
+ [](tomoto::IDMRModel& self) {
55
54
  auto dict = self.getMetadataDict();
56
55
  Array res;
57
56
  auto utf8 = Rice::Class(rb_cEncoding).call("const_get", "UTF_8");
58
57
  for (size_t i = 0; i < dict.size(); i++) {
59
- res.push(to_ruby<std::string>(dict.toWord(i)).call("force_encoding", utf8));
58
+ VALUE value = Rice::detail::To_Ruby<std::string>().convert(dict.toWord(i));
59
+ Object obj(value);
60
+ res.push(obj.call("force_encoding", utf8));
60
61
  }
61
62
  return res;
62
63
  })
63
64
  .define_method(
64
65
  "sigma",
65
- *[](tomoto::IDMRModel& self) {
66
+ [](tomoto::IDMRModel& self) {
66
67
  return self.getSigma();
67
68
  });
68
69
  }
data/ext/tomoto/dt.cpp CHANGED
@@ -1,14 +1,14 @@
1
1
  #include <DT.h>
2
2
 
3
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
4
4
 
5
5
  #include "utils.h"
6
6
 
7
7
  void init_dt(Rice::Module& m) {
8
8
  Rice::define_class_under<tomoto::IDTModel, tomoto::ILDAModel>(m, "DT")
9
- .define_singleton_method(
9
+ .define_singleton_function(
10
10
  "_new",
11
- *[](size_t tw, size_t k, size_t t, tomoto::Float alphaVar, tomoto::Float etaVar, tomoto::Float phiVar, tomoto::Float shapeA, tomoto::Float shapeB, tomoto::Float shapeC) {
11
+ [](size_t tw, size_t k, size_t t, tomoto::Float alphaVar, tomoto::Float etaVar, tomoto::Float phiVar, tomoto::Float shapeA, tomoto::Float shapeB, tomoto::Float shapeC) {
12
12
  // Rice only supports 10 arguments
13
13
  size_t seed = -1;
14
14
  tomoto::DTArgs args;
@@ -24,17 +24,17 @@ void init_dt(Rice::Module& m) {
24
24
  args.seed = seed;
25
25
  }
26
26
  return tomoto::IDTModel::create((tomoto::TermWeight)tw, args);
27
- })
27
+ }, Rice::Return().takeOwnership())
28
28
  .define_method(
29
29
  "_add_doc",
30
- *[](tomoto::IDTModel& self, std::vector<std::string> words, uint32_t timepoint) {
30
+ [](tomoto::IDTModel& self, std::vector<std::string> words, uint32_t timepoint) {
31
31
  auto doc = buildDoc(words);
32
32
  doc.misc["timepoint"] = timepoint;
33
33
  return self.addDoc(doc);
34
34
  })
35
35
  .define_method(
36
36
  "alpha",
37
- *[](tomoto::IDTModel& self) {
37
+ [](tomoto::IDTModel& self) {
38
38
  Array res;
39
39
  for (size_t i = 0; i < self.getK(); i++) {
40
40
  Array res2;
@@ -47,45 +47,45 @@ void init_dt(Rice::Module& m) {
47
47
  })
48
48
  .define_method(
49
49
  "lr_a",
50
- *[](tomoto::IDTModel& self) {
50
+ [](tomoto::IDTModel& self) {
51
51
  return self.getShapeA();
52
52
  })
53
53
  .define_method(
54
54
  "lr_a=",
55
- *[](tomoto::IDTModel& self, tomoto::Float value) {
55
+ [](tomoto::IDTModel& self, tomoto::Float value) {
56
56
  self.setShapeA(value);
57
57
  return value;
58
58
  })
59
59
  .define_method(
60
60
  "lr_b",
61
- *[](tomoto::IDTModel& self) {
61
+ [](tomoto::IDTModel& self) {
62
62
  return self.getShapeB();
63
63
  })
64
64
  .define_method(
65
65
  "lr_b=",
66
- *[](tomoto::IDTModel& self, tomoto::Float value) {
66
+ [](tomoto::IDTModel& self, tomoto::Float value) {
67
67
  self.setShapeB(value);
68
68
  return value;
69
69
  })
70
70
  .define_method(
71
71
  "lr_c",
72
- *[](tomoto::IDTModel& self) {
72
+ [](tomoto::IDTModel& self) {
73
73
  return self.getShapeC();
74
74
  })
75
75
  .define_method(
76
76
  "lr_c=",
77
- *[](tomoto::IDTModel& self, tomoto::Float value) {
77
+ [](tomoto::IDTModel& self, tomoto::Float value) {
78
78
  self.setShapeC(value);
79
79
  return value;
80
80
  })
81
81
  .define_method(
82
82
  "num_docs_by_timepoint",
83
- *[](tomoto::IDTModel& self) {
83
+ [](tomoto::IDTModel& self) {
84
84
  return self.getNumDocsByT();
85
85
  })
86
86
  .define_method(
87
87
  "num_timepoints",
88
- *[](tomoto::IDTModel& self) {
88
+ [](tomoto::IDTModel& self) {
89
89
  return self.getT();
90
90
  });
91
91
  }
@@ -1,10 +1,12 @@
1
1
  require "mkmf-rice"
2
2
 
3
- abort "Missing stdc++" unless have_library("stdc++")
3
+ $CXXFLAGS += " -std=c++17 $(optflags) -DEIGEN_MPL2_ONLY"
4
4
 
5
- $CXXFLAGS += " -std=c++14 -DEIGEN_MPL2_ONLY"
6
-
7
- $CXXFLAGS += " -march=native"
5
+ unless ENV["RUBY_CC_VERSION"]
6
+ # AVX-512F not support yet
7
+ # https://github.com/bab2min/tomotopy/issues/188
8
+ $CXXFLAGS << " " << with_config("optflags", "-march=native -mno-avx512f")
9
+ end
8
10
 
9
11
  apple_clang = RbConfig::CONFIG["CC_VERSION_MESSAGE"] =~ /apple clang/i
10
12
 
@@ -29,4 +31,4 @@ $srcs = Dir["{#{ext},#{tomoto}}/*.cpp"]
29
31
  $INCFLAGS += " -I#{tomoto} -I#{eigen} -I#{eigen_rand} -I#{variant}"
30
32
  $VPATH << tomoto
31
33
 
32
- create_makefile("tomoto/ext")
34
+ create_makefile("tomoto/tomoto")
data/ext/tomoto/gdmr.cpp CHANGED
@@ -1,14 +1,14 @@
1
1
  #include <GDMR.h>
2
2
 
3
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
4
4
 
5
5
  #include "utils.h"
6
6
 
7
7
  void init_gdmr(Rice::Module& m) {
8
8
  Rice::define_class_under<tomoto::IGDMRModel, tomoto::IDMRModel>(m, "GDMR")
9
- .define_singleton_method(
9
+ .define_singleton_function(
10
10
  "_new",
11
- *[](size_t tw, size_t k, std::vector<uint64_t> degrees, tomoto::Float alpha, tomoto::Float sigma, tomoto::Float sigma0, tomoto::Float eta, tomoto::Float alpha_epsilon, size_t seed) {
11
+ [](size_t tw, size_t k, std::vector<uint64_t> degrees, tomoto::Float alpha, tomoto::Float sigma, tomoto::Float sigma0, tomoto::Float eta, tomoto::Float alpha_epsilon, size_t seed) {
12
12
  tomoto::GDMRArgs args;
13
13
  args.k = k;
14
14
  args.degrees = degrees;
@@ -21,22 +21,22 @@ void init_gdmr(Rice::Module& m) {
21
21
  args.seed = seed;
22
22
  }
23
23
  return tomoto::IGDMRModel::create((tomoto::TermWeight)tw, args);
24
- })
24
+ }, Rice::Return().takeOwnership())
25
25
  .define_method(
26
26
  "_add_doc",
27
- *[](tomoto::IGDMRModel& self, std::vector<std::string> words, std::vector<tomoto::Float> numeric_metadata) {
27
+ [](tomoto::IGDMRModel& self, std::vector<std::string> words, std::vector<tomoto::Float> numeric_metadata) {
28
28
  auto doc = buildDoc(words);
29
29
  doc.misc["numeric_metadata"] = numeric_metadata;
30
30
  return self.addDoc(doc);
31
31
  })
32
32
  .define_method(
33
33
  "degrees",
34
- *[](tomoto::IGDMRModel& self) {
34
+ [](tomoto::IGDMRModel& self) {
35
35
  return self.getFs();
36
36
  })
37
37
  .define_method(
38
38
  "sigma0",
39
- *[](tomoto::IGDMRModel& self) {
39
+ [](tomoto::IGDMRModel& self) {
40
40
  return self.getSigma0();
41
41
  });
42
42
  }
data/ext/tomoto/hdp.cpp CHANGED
@@ -1,14 +1,14 @@
1
1
  #include <HDP.h>
2
2
 
3
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
4
4
 
5
5
  #include "utils.h"
6
6
 
7
7
  void init_hdp(Rice::Module& m) {
8
8
  Rice::define_class_under<tomoto::IHDPModel, tomoto::ILDAModel>(m, "HDP")
9
- .define_singleton_method(
9
+ .define_singleton_function(
10
10
  "_new",
11
- *[](size_t tw, size_t k, tomoto::Float alpha, tomoto::Float eta, tomoto::Float gamma, size_t seed) {
11
+ [](size_t tw, size_t k, tomoto::Float alpha, tomoto::Float eta, tomoto::Float gamma, size_t seed) {
12
12
  tomoto::HDPArgs args;
13
13
  args.k = k;
14
14
  args.alpha = {alpha};
@@ -18,30 +18,30 @@ void init_hdp(Rice::Module& m) {
18
18
  args.seed = seed;
19
19
  }
20
20
  return tomoto::IHDPModel::create((tomoto::TermWeight)tw, args);
21
- })
21
+ }, Rice::Return().takeOwnership())
22
22
  .define_method(
23
23
  "alpha",
24
- *[](tomoto::IHDPModel& self) {
24
+ [](tomoto::IHDPModel& self) {
25
25
  return self.getAlpha();
26
26
  })
27
27
  .define_method(
28
28
  "gamma",
29
- *[](tomoto::IHDPModel& self) {
29
+ [](tomoto::IHDPModel& self) {
30
30
  return self.getGamma();
31
31
  })
32
32
  .define_method(
33
33
  "live_k",
34
- *[](tomoto::IHDPModel& self) {
34
+ [](tomoto::IHDPModel& self) {
35
35
  return self.getLiveK();
36
36
  })
37
37
  .define_method(
38
38
  "live_topic?",
39
- *[](tomoto::IHDPModel& self, size_t tid) {
39
+ [](tomoto::IHDPModel& self, size_t tid) {
40
40
  return self.isLiveTopic(tid);
41
41
  })
42
42
  .define_method(
43
43
  "num_tables",
44
- *[](tomoto::IHDPModel& self) {
44
+ [](tomoto::IHDPModel& self) {
45
45
  return self.getTotalTables();
46
46
  });
47
47
  }
data/ext/tomoto/hlda.cpp CHANGED
@@ -1,14 +1,14 @@
1
1
  #include <HLDA.h>
2
2
 
3
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
4
4
 
5
5
  #include "utils.h"
6
6
 
7
7
  void init_hlda(Rice::Module& m) {
8
8
  Rice::define_class_under<tomoto::IHLDAModel, tomoto::ILDAModel>(m, "HLDA")
9
- .define_singleton_method(
9
+ .define_singleton_function(
10
10
  "_new",
11
- *[](size_t tw, size_t levelDepth, tomoto::Float alpha, tomoto::Float eta, tomoto::Float gamma, size_t seed) {
11
+ [](size_t tw, size_t levelDepth, tomoto::Float alpha, tomoto::Float eta, tomoto::Float gamma, size_t seed) {
12
12
  tomoto::HLDAArgs args;
13
13
  args.k = levelDepth;
14
14
  args.alpha = {alpha};
@@ -18,10 +18,10 @@ void init_hlda(Rice::Module& m) {
18
18
  args.seed = seed;
19
19
  }
20
20
  return tomoto::IHLDAModel::create((tomoto::TermWeight)tw, args);
21
- })
21
+ }, Rice::Return().takeOwnership())
22
22
  .define_method(
23
23
  "alpha",
24
- *[](tomoto::IHLDAModel& self) {
24
+ [](tomoto::IHLDAModel& self) {
25
25
  Array res;
26
26
  for (size_t i = 0; i < self.getLevelDepth(); i++) {
27
27
  res.push(self.getAlpha(i));
@@ -30,42 +30,42 @@ void init_hlda(Rice::Module& m) {
30
30
  })
31
31
  .define_method(
32
32
  "_children_topics",
33
- *[](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
33
+ [](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
34
34
  return self.getChildTopicId(topic_id);
35
35
  })
36
36
  .define_method(
37
37
  "depth",
38
- *[](tomoto::IHLDAModel& self) {
38
+ [](tomoto::IHLDAModel& self) {
39
39
  return self.getLevelDepth();
40
40
  })
41
41
  .define_method(
42
42
  "gamma",
43
- *[](tomoto::IHLDAModel& self) {
43
+ [](tomoto::IHLDAModel& self) {
44
44
  return self.getGamma();
45
45
  })
46
46
  .define_method(
47
47
  "_level",
48
- *[](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
48
+ [](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
49
49
  return self.getLevelOfTopic(topic_id);
50
50
  })
51
51
  .define_method(
52
52
  "live_k",
53
- *[](tomoto::IHLDAModel& self) {
53
+ [](tomoto::IHLDAModel& self) {
54
54
  return self.getLiveK();
55
55
  })
56
56
  .define_method(
57
57
  "_live_topic?",
58
- *[](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
58
+ [](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
59
59
  return self.isLiveTopic(topic_id);
60
60
  })
61
61
  .define_method(
62
62
  "_num_docs_of_topic",
63
- *[](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
63
+ [](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
64
64
  return self.getNumDocsOfTopic(topic_id);
65
65
  })
66
66
  .define_method(
67
67
  "_parent_topic",
68
- *[](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
68
+ [](tomoto::IHLDAModel& self, tomoto::Tid topic_id) {
69
69
  return self.getParentTopicId(topic_id);
70
70
  });
71
71
  }
data/ext/tomoto/hpa.cpp CHANGED
@@ -1,14 +1,14 @@
1
1
  #include <HPA.h>
2
2
 
3
- #include <rice/Module.hpp>
3
+ #include <rice/rice.hpp>
4
4
 
5
5
  #include "utils.h"
6
6
 
7
7
  void init_hpa(Rice::Module& m) {
8
8
  Rice::define_class_under<tomoto::IHPAModel, tomoto::IPAModel>(m, "HPA")
9
- .define_singleton_method(
9
+ .define_singleton_function(
10
10
  "_new",
11
- *[](size_t tw, size_t k1, size_t k2, tomoto::Float alpha, tomoto::Float eta, size_t seed) {
11
+ [](size_t tw, size_t k1, size_t k2, tomoto::Float alpha, tomoto::Float eta, size_t seed) {
12
12
  tomoto::HPAArgs args;
13
13
  args.k = k1;
14
14
  args.k2 = k2;
@@ -18,10 +18,10 @@ void init_hpa(Rice::Module& m) {
18
18
  args.seed = seed;
19
19
  }
20
20
  return tomoto::IHPAModel::create((tomoto::TermWeight)tw, false, args);
21
- })
21
+ }, Rice::Return().takeOwnership())
22
22
  .define_method(
23
23
  "alpha",
24
- *[](tomoto::IHPAModel& self) {
24
+ [](tomoto::IHPAModel& self) {
25
25
  Array res;
26
26
  // use <= to return k+1 elements
27
27
  for (size_t i = 0; i <= self.getK(); i++) {