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
@@ -2,10 +2,10 @@
2
2
  * @file Multinomial.h
3
3
  * @author bab2min (bab2min@gmail.com)
4
4
  * @brief
5
- * @version 0.3.0
6
- * @date 2020-10-07
5
+ * @version 0.3.3
6
+ * @date 2021-03-31
7
7
  *
8
- * @copyright Copyright (c) 2020
8
+ * @copyright Copyright (c) 2020-2021
9
9
  *
10
10
  */
11
11
 
@@ -147,6 +147,8 @@ namespace Eigen
147
147
  template<typename _Scalar, Index Dim = -1>
148
148
  class DirichletGen : public MvVecGenBase<DirichletGen<_Scalar, Dim>, _Scalar, Dim>
149
149
  {
150
+ static_assert(std::is_floating_point<_Scalar>::value, "`DirichletGen` needs floating point types.");
151
+
150
152
  Matrix<_Scalar, Dim, 1> alpha;
151
153
  std::vector<GammaGen<_Scalar>> gammas;
152
154
  public:
@@ -2,10 +2,10 @@
2
2
  * @file MvNormal.h
3
3
  * @author bab2min (bab2min@gmail.com)
4
4
  * @brief
5
- * @version 0.3.0
6
- * @date 2020-10-07
5
+ * @version 0.3.3
6
+ * @date 2021-03-31
7
7
  *
8
- * @copyright Copyright (c) 2020
8
+ * @copyright Copyright (c) 2020-2021
9
9
  *
10
10
  */
11
11
 
@@ -56,6 +56,8 @@ namespace Eigen
56
56
  template<typename _Scalar, Index Dim = -1>
57
57
  class MvNormalGen : public MvVecGenBase<MvNormalGen<_Scalar, Dim>, _Scalar, Dim>
58
58
  {
59
+ static_assert(std::is_floating_point<_Scalar>::value, "`MvNormalGen` needs floating point types.");
60
+
59
61
  Matrix<_Scalar, Dim, 1> mean;
60
62
  Matrix<_Scalar, Dim, Dim> lt;
61
63
  StdNormalGen<_Scalar> stdnorm;
@@ -170,6 +172,8 @@ namespace Eigen
170
172
  template<typename _Scalar, Index Dim>
171
173
  class WishartGen : public MvMatGenBase<WishartGen<_Scalar, Dim>, _Scalar, Dim>
172
174
  {
175
+ static_assert(std::is_floating_point<_Scalar>::value, "`WishartGen` needs floating point types.");
176
+
173
177
  Index df;
174
178
  Matrix<_Scalar, Dim, Dim> chol;
175
179
  StdNormalGen<_Scalar> stdnorm;
@@ -330,6 +334,8 @@ namespace Eigen
330
334
  template<typename _Scalar, Index Dim>
331
335
  class InvWishartGen : public MvMatGenBase<InvWishartGen<_Scalar, Dim>, _Scalar, Dim>
332
336
  {
337
+ static_assert(std::is_floating_point<_Scalar>::value, "`InvWishartGen` needs floating point types.");
338
+
333
339
  Index df;
334
340
  Matrix<_Scalar, Dim, Dim> chol;
335
341
  StdNormalGen<_Scalar> stdnorm;
@@ -2,10 +2,10 @@
2
2
  * @file PacketFilter.h
3
3
  * @author bab2min (bab2min@gmail.com)
4
4
  * @brief
5
- * @version 0.3.0
6
- * @date 2020-10-07
5
+ * @version 0.3.3
6
+ * @date 2021-03-31
7
7
  *
8
- * @copyright Copyright (c) 2020
8
+ * @copyright Copyright (c) 2020-2021
9
9
  *
10
10
  */
11
11
 
@@ -13,7 +13,7 @@
13
13
  #define EIGENRAND_PACKET_FILTER_H
14
14
 
15
15
  #include <array>
16
- #include <EigenRand/MorePacketMath.h>
16
+ #include "MorePacketMath.h"
17
17
 
18
18
  namespace Eigen
19
19
  {
@@ -26,261 +26,19 @@ namespace Eigen
26
26
  }
27
27
  }
28
28
  }
29
- #ifdef EIGEN_VECTORIZE_AVX
30
- #include <immintrin.h>
31
- namespace Eigen
32
- {
33
- namespace Rand
34
- {
35
- namespace detail
36
- {
37
- template<>
38
- class CompressMask<32>
39
- {
40
- std::array<std::array<internal::Packet8i, 256>, 15> idx;
41
- std::array<internal::Packet8f, 8> selector;
42
- std::array<uint8_t, 256> cnt;
43
-
44
- static internal::Packet8i make_compress(int mask, int offset = 0)
45
- {
46
- int32_t ret[8] = { 0, };
47
- int n = offset;
48
- for (int i = 0; i < 8; ++i)
49
- {
50
- int l = mask & 1;
51
- mask >>= 1;
52
- if (l)
53
- {
54
- if (n >= 0) ret[n] = i;
55
- if (++n >= 8) break;
56
- }
57
- }
58
- return _mm256_loadu_si256((internal::Packet8i*)ret);
59
- }
60
-
61
- static uint8_t count(int mask)
62
- {
63
- uint8_t ret = 0;
64
- for (int i = 0; i < 8; ++i)
65
- {
66
- ret += mask & 1;
67
- mask >>= 1;
68
- }
69
- return ret;
70
- }
71
29
 
72
- CompressMask()
73
- {
74
- for (int i = 0; i < 256; ++i)
75
- {
76
- for (int o = 0; o < 15; ++o)
77
- {
78
- idx[o][i] = make_compress(i, o < 8 ? o : o - 15);
79
- }
80
30
 
81
- cnt[i] = count(i);
82
- }
83
-
84
- selector[0] = _mm256_castsi256_ps(_mm256_setr_epi32(0, 0, 0, 0, 0, 0, 0, 0));
85
- selector[1] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, 0, 0, 0, 0, 0, 0, 0));
86
- selector[2] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, -1, 0, 0, 0, 0, 0, 0));
87
- selector[3] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, -1, -1, 0, 0, 0, 0, 0));
88
- selector[4] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, -1, -1, -1, 0, 0, 0, 0));
89
- selector[5] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, -1, -1, -1, -1, 0, 0, 0));
90
- selector[6] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, -1, -1, -1, -1, -1, 0, 0));
91
- selector[7] = _mm256_castsi256_ps(_mm256_setr_epi32(-1, -1, -1, -1, -1, -1, -1, 0));
92
- }
93
-
94
- static EIGEN_STRONG_INLINE internal::Packet8f permute(const internal::Packet8f& p, const internal::Packet8i& i)
95
- {
96
- #ifdef EIGEN_VECTORIZE_AVX2
97
- return _mm256_permutevar8x32_ps(p, i);
98
- #else
99
- auto l = _mm256_permutevar_ps(p, i);
100
- auto h = _mm256_permutevar_ps(_mm256_permute2f128_ps(p, p, 0x01), i);
101
- internal::Packet4i i1, i2;
102
- internal::split_two(i, i1, i2);
103
- i1 = _mm_slli_epi32(i1, 29);
104
- i2 = _mm_slli_epi32(i2, 29);
105
- auto c = _mm256_castsi256_ps(
106
- internal::combine_two(
107
- _mm_cmplt_epi32(i1, internal::pset1<internal::Packet4i>(0)),
108
- _mm_cmplt_epi32(internal::pset1<internal::Packet4i>(-1), i2)
109
- )
110
- );
111
- return internal::pblendv(c, h, l);
112
- #endif
113
- }
114
-
115
- public:
116
- enum { full_size = 8 };
117
- static const CompressMask& get_inst()
118
- {
119
- static CompressMask cm;
120
- return cm;
121
- }
122
-
123
- template<typename Packet>
124
- EIGEN_STRONG_INLINE int compress_append(Packet& _value, const Packet& _mask,
125
- Packet& _rest, int rest_cnt, bool& full) const
126
- {
127
- auto& value = reinterpret_cast<internal::Packet8f&>(_value);
128
- auto& mask = reinterpret_cast<const internal::Packet8f&>(_mask);
129
- auto& rest = reinterpret_cast<internal::Packet8f&>(_rest);
130
-
131
- int m = _mm256_movemask_ps(mask);
132
- if (cnt[m] == full_size)
133
- {
134
- full = true;
135
- return rest_cnt;
136
- }
137
-
138
- auto p1 = permute(value, idx[rest_cnt][m]);
139
- p1 = internal::pblendv(selector[rest_cnt], rest, p1);
140
-
141
- auto new_cnt = rest_cnt + cnt[m];
142
- if (new_cnt >= full_size)
143
- {
144
- if (new_cnt > full_size)
145
- {
146
- rest = permute(value, idx[new_cnt - cnt[m] + full_size - 1][m]);
147
- }
148
- value = p1;
149
- full = true;
150
- return new_cnt - full_size;
151
- }
152
- else
153
- {
154
- rest = p1;
155
- full = false;
156
- return new_cnt;
157
- }
158
- }
159
- };
160
- }
161
- }
162
- }
31
+ #ifdef EIGEN_VECTORIZE_AVX
32
+ #include "arch/AVX/PacketFilter.h"
163
33
  #endif
164
34
 
165
35
  #ifdef EIGEN_VECTORIZE_SSE2
166
- #include <xmmintrin.h>
167
-
168
- namespace Eigen
169
- {
170
- namespace Rand
171
- {
172
- namespace detail
173
- {
174
- template<>
175
- class CompressMask<16>
176
- {
177
- std::array<std::array<uint8_t, 16>, 7> idx;
178
- std::array<internal::Packet4f, 4> selector;
179
- std::array<uint8_t, 64> cnt;
180
-
181
- static uint8_t make_compress(int mask, int offset = 0)
182
- {
183
- uint8_t ret = 0;
184
- int n = offset;
185
- for (int i = 0; i < 4; ++i)
186
- {
187
- int l = mask & 1;
188
- mask >>= 1;
189
- if (l)
190
- {
191
- if (n >= 0) ret |= (i & 3) << (2 * n);
192
- if (++n >= 4) break;
193
- }
194
- }
195
- return ret;
196
- }
197
-
198
- static uint8_t count(int mask)
199
- {
200
- uint8_t ret = 0;
201
- for (int i = 0; i < 4; ++i)
202
- {
203
- ret += mask & 1;
204
- mask >>= 1;
205
- }
206
- return ret;
207
- }
208
-
209
- CompressMask()
210
- {
211
- for (int i = 0; i < 16; ++i)
212
- {
213
- for (int o = 0; o < 7; ++o)
214
- {
215
- idx[o][i] = make_compress(i, o < 4 ? o : o - 7);
216
- }
217
-
218
- cnt[i] = count(i);
219
- }
220
-
221
- selector[0] = _mm_castsi128_ps(_mm_setr_epi32(0, 0, 0, 0));
222
- selector[1] = _mm_castsi128_ps(_mm_setr_epi32(-1, 0, 0, 0));
223
- selector[2] = _mm_castsi128_ps(_mm_setr_epi32(-1, -1, 0, 0));
224
- selector[3] = _mm_castsi128_ps(_mm_setr_epi32(-1, -1, -1, 0));
225
- }
226
-
227
- static EIGEN_STRONG_INLINE internal::Packet4f permute(const internal::Packet4f& p, uint8_t i)
228
- {
229
- float u[4];
230
- _mm_storeu_ps(u, p);
231
- return _mm_setr_ps(u[i & 3], u[(i >> 2) & 3], u[(i >> 4) & 3], u[(i >> 6) & 3]);
232
- }
233
-
234
- public:
235
-
236
- enum { full_size = 4 };
237
-
238
- static const CompressMask& get_inst()
239
- {
240
- static CompressMask cm;
241
- return cm;
242
- }
243
-
244
- template<typename Packet>
245
- EIGEN_STRONG_INLINE int compress_append(Packet& _value, const Packet& _mask,
246
- Packet& _rest, int rest_cnt, bool& full) const
247
- {
248
- auto& value = reinterpret_cast<internal::Packet4f&>(_value);
249
- auto& mask = reinterpret_cast<const internal::Packet4f&>(_mask);
250
- auto& rest = reinterpret_cast<internal::Packet4f&>(_rest);
251
-
252
- int m = _mm_movemask_ps(mask);
253
- if (cnt[m] == full_size)
254
- {
255
- full = true;
256
- return rest_cnt;
257
- }
258
-
259
- auto p1 = permute(value, idx[rest_cnt][m]);
260
- p1 = internal::pblendv(selector[rest_cnt], rest, p1);
36
+ #include "arch/SSE/PacketFilter.h"
37
+ #endif
261
38
 
262
- auto new_cnt = rest_cnt + cnt[m];
263
- if (new_cnt >= full_size)
264
- {
265
- if (new_cnt > full_size)
266
- {
267
- rest = permute(value, idx[new_cnt - cnt[m] + full_size - 1][m]);
268
- }
269
- value = p1;
270
- full = true;
271
- return new_cnt - full_size;
272
- }
273
- else
274
- {
275
- rest = p1;
276
- full = false;
277
- return new_cnt;
278
- }
279
- }
280
- };
281
- }
282
- }
283
- }
39
+ #ifdef EIGEN_VECTORIZE_NEON
40
+ #include "arch/NEON/PacketFilter.h"
284
41
  #endif
285
42
 
43
+
286
44
  #endif
@@ -2,10 +2,10 @@
2
2
  * @file PacketRandomEngine.h
3
3
  * @author bab2min (bab2min@gmail.com)
4
4
  * @brief
5
- * @version 0.3.0
6
- * @date 2020-10-07
5
+ * @version 0.3.3
6
+ * @date 2021-03-31
7
7
  *
8
- * @copyright Copyright (c) 2020
8
+ * @copyright Copyright (c) 2020-2021
9
9
  *
10
10
  */
11
11
 
@@ -15,41 +15,11 @@
15
15
  #include <array>
16
16
  #include <random>
17
17
  #include <type_traits>
18
- #include <EigenRand/MorePacketMath.h>
18
+ #include "MorePacketMath.h"
19
19
  #include <fstream>
20
20
 
21
21
  namespace Eigen
22
22
  {
23
- namespace internal
24
- {
25
- template<typename Ty>
26
- struct IsIntPacket : std::false_type {};
27
-
28
- template<typename Ty>
29
- struct HalfPacket;
30
-
31
- #ifdef EIGEN_VECTORIZE_AVX2
32
- template<>
33
- struct IsIntPacket<Packet8i> : std::true_type {};
34
-
35
- template<>
36
- struct HalfPacket<Packet8i>
37
- {
38
- using type = Packet4i;
39
- };
40
- #endif
41
- #ifdef EIGEN_VECTORIZE_SSE2
42
- template<>
43
- struct IsIntPacket<Packet4i> : std::true_type {};
44
-
45
- template<>
46
- struct HalfPacket<Packet4i>
47
- {
48
- using type = uint64_t;
49
- };
50
- #endif
51
- }
52
-
53
23
  namespace Rand
54
24
  {
55
25
  namespace detail
@@ -277,7 +247,7 @@ namespace Eigen
277
247
  Packet prev = state[0] = x0;
278
248
  for (int i = 1; i < _Nx; ++i)
279
249
  {
280
- prev = state[i] = pmuluadd64(pxor(prev, psrl64(prev, word_size - 2)), _Fx, i);
250
+ prev = state[i] = pmuluadd64(pxor(prev, psrl64<word_size - 2>(prev)), _Fx, i);
281
251
  }
282
252
  stateIdx = _Nx;
283
253
  }
@@ -320,10 +290,10 @@ namespace Eigen
320
290
  using namespace Eigen::internal;
321
291
 
322
292
  Packet res = state[stateIdx++];
323
- res = pxor(res, pand(psrl64(res, _Ux), pseti64<Packet>(_Dx)));
324
- res = pxor(res, pand(psll64(res, _Sx), pseti64<Packet>(_Bx)));
325
- res = pxor(res, pand(psll64(res, _Tx), pseti64<Packet>(_Cx)));
326
- res = pxor(res, psrl64(res, _Lx));
293
+ res = pxor(res, pand(psrl64<_Ux>(res), pseti64<Packet>(_Dx)));
294
+ res = pxor(res, pand(psll64<_Sx>(res), pseti64<Packet>(_Bx)));
295
+ res = pxor(res, pand(psll64<_Tx>(res), pseti64<Packet>(_Cx)));
296
+ res = pxor(res, psrl64<_Lx>(res));
327
297
  return res;
328
298
  }
329
299
 
@@ -371,7 +341,7 @@ namespace Eigen
371
341
  pand(state[i + _Nx + 1], lmask));
372
342
 
373
343
  state[i] = pxor(pxor(
374
- psrl64(tmp, 1),
344
+ psrl64<1>(tmp),
375
345
  pand(pcmpeq64(pand(tmp, one), one), px)),
376
346
  state[i + _Nx + _Mx]
377
347
  );
@@ -383,7 +353,7 @@ namespace Eigen
383
353
  pand(state[i + _Nx + 1], lmask));
384
354
 
385
355
  state[i] = pxor(pxor(
386
- psrl64(tmp, 1),
356
+ psrl64<1>(tmp),
387
357
  pand(pcmpeq64(pand(tmp, one), one), px)),
388
358
  state[i - _Nx + _Mx]
389
359
  );
@@ -392,7 +362,7 @@ namespace Eigen
392
362
  Packet tmp = por(pand(state[i + _Nx], hmask),
393
363
  pand(state[0], lmask));
394
364
  state[i] = pxor(pxor(
395
- psrl64(tmp, 1),
365
+ psrl64<1>(tmp),
396
366
  pand(pcmpeq64(pand(tmp, one), one), px)),
397
367
  state[_Mx - 1]
398
368
  );
@@ -414,7 +384,7 @@ namespace Eigen
414
384
  pand(state[i - _Nx + 1], lmask));
415
385
 
416
386
  state[i] = pxor(pxor(
417
- psrl64(tmp, 1),
387
+ psrl64<1>(tmp),
418
388
  pand(pcmpeq64(pand(tmp, one), one), px)),
419
389
  state[i - _Nx + _Mx]
420
390
  );
@@ -567,7 +537,7 @@ namespace Eigen
567
537
 
568
538
  float uniform_real()
569
539
  {
570
- internal::bit_scalar<float> bs;
540
+ internal::BitScalar<float> bs;
571
541
  return bs.to_ur(this->operator()());
572
542
  }
573
543
  };
@@ -599,7 +569,7 @@ namespace Eigen
599
569
 
600
570
  #ifdef EIGEN_VECTORIZE_AVX2
601
571
  using Vmt19937_64 = Pmt19937_64<internal::Packet8i>;
602
- #elif defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_SSE2)
572
+ #elif defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_SSE2) || defined(EIGEN_VECTORIZE_NEON)
603
573
  using Vmt19937_64 = Pmt19937_64<internal::Packet4i>;
604
574
  #else
605
575
  /**
@@ -612,12 +582,16 @@ namespace Eigen
612
582
  */
613
583
  using Vmt19937_64 = std::mt19937_64;
614
584
  #endif
585
+ template<typename UIntType = uint64_t>
586
+ using P8_mt19937 = ParallelRandomEngineAdaptor<UIntType, Vmt19937_64, 8>;
587
+
615
588
  /**
616
589
  * @brief a vectorized mt19937_64 which generates 8 integers of 64bit simultaneously.
617
590
  * It always yields the same value regardless of SIMD ISA.
618
591
  */
619
- template<typename UIntType = uint64_t>
620
- using P8_mt19937_64 = ParallelRandomEngineAdaptor<UIntType, Vmt19937_64, 8>;
592
+ using P8_mt19937_64 = P8_mt19937<uint64_t>;
593
+
594
+ using P8_mt19937_64_32 = P8_mt19937<uint32_t>;
621
595
  }
622
596
  }
623
597