tomoto 0.2.3 → 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 (347) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +8 -10
  4. data/ext/tomoto/extconf.rb +6 -2
  5. data/ext/tomoto/{ext.cpp → tomoto.cpp} +1 -1
  6. data/lib/tomoto/version.rb +1 -1
  7. data/lib/tomoto.rb +5 -1
  8. data/vendor/EigenRand/EigenRand/Core.h +10 -10
  9. data/vendor/EigenRand/EigenRand/Dists/Basic.h +208 -9
  10. data/vendor/EigenRand/EigenRand/Dists/Discrete.h +52 -31
  11. data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +9 -8
  12. data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +28 -21
  13. data/vendor/EigenRand/EigenRand/EigenRand +11 -6
  14. data/vendor/EigenRand/EigenRand/Macro.h +13 -7
  15. data/vendor/EigenRand/EigenRand/MorePacketMath.h +348 -740
  16. data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +5 -3
  17. data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +9 -3
  18. data/vendor/EigenRand/EigenRand/PacketFilter.h +11 -253
  19. data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +21 -47
  20. data/vendor/EigenRand/EigenRand/RandUtils.h +50 -344
  21. data/vendor/EigenRand/EigenRand/arch/AVX/MorePacketMath.h +619 -0
  22. data/vendor/EigenRand/EigenRand/arch/AVX/PacketFilter.h +149 -0
  23. data/vendor/EigenRand/EigenRand/arch/AVX/RandUtils.h +228 -0
  24. data/vendor/EigenRand/EigenRand/arch/NEON/MorePacketMath.h +473 -0
  25. data/vendor/EigenRand/EigenRand/arch/NEON/PacketFilter.h +142 -0
  26. data/vendor/EigenRand/EigenRand/arch/NEON/RandUtils.h +126 -0
  27. data/vendor/EigenRand/EigenRand/arch/SSE/MorePacketMath.h +501 -0
  28. data/vendor/EigenRand/EigenRand/arch/SSE/PacketFilter.h +133 -0
  29. data/vendor/EigenRand/EigenRand/arch/SSE/RandUtils.h +120 -0
  30. data/vendor/EigenRand/EigenRand/doc.h +24 -12
  31. data/vendor/EigenRand/README.md +57 -4
  32. data/vendor/eigen/COPYING.APACHE +203 -0
  33. data/vendor/eigen/COPYING.BSD +1 -1
  34. data/vendor/eigen/COPYING.MINPACK +51 -52
  35. data/vendor/eigen/Eigen/Cholesky +0 -1
  36. data/vendor/eigen/Eigen/Core +112 -265
  37. data/vendor/eigen/Eigen/Eigenvalues +2 -3
  38. data/vendor/eigen/Eigen/Geometry +5 -8
  39. data/vendor/eigen/Eigen/Householder +0 -1
  40. data/vendor/eigen/Eigen/Jacobi +0 -1
  41. data/vendor/eigen/Eigen/KLUSupport +41 -0
  42. data/vendor/eigen/Eigen/LU +2 -5
  43. data/vendor/eigen/Eigen/OrderingMethods +0 -3
  44. data/vendor/eigen/Eigen/PaStiXSupport +1 -0
  45. data/vendor/eigen/Eigen/PardisoSupport +0 -0
  46. data/vendor/eigen/Eigen/QR +2 -3
  47. data/vendor/eigen/Eigen/QtAlignedMalloc +0 -1
  48. data/vendor/eigen/Eigen/SVD +0 -1
  49. data/vendor/eigen/Eigen/Sparse +0 -2
  50. data/vendor/eigen/Eigen/SparseCholesky +0 -8
  51. data/vendor/eigen/Eigen/SparseLU +4 -0
  52. data/vendor/eigen/Eigen/SparseQR +0 -1
  53. data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  54. data/vendor/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  55. data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  56. data/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  57. data/vendor/eigen/Eigen/src/Core/Array.h +99 -11
  58. data/vendor/eigen/Eigen/src/Core/ArrayBase.h +3 -3
  59. data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  60. data/vendor/eigen/Eigen/src/Core/Assign.h +1 -1
  61. data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  62. data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  63. data/vendor/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  64. data/vendor/eigen/Eigen/src/Core/Block.h +56 -60
  65. data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  66. data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  67. data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  68. data/vendor/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  69. data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  70. data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  71. data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  72. data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +14 -10
  73. data/vendor/eigen/Eigen/src/Core/DenseBase.h +132 -42
  74. data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  75. data/vendor/eigen/Eigen/src/Core/DenseStorage.h +153 -71
  76. data/vendor/eigen/Eigen/src/Core/Diagonal.h +21 -23
  77. data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  78. data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  79. data/vendor/eigen/Eigen/src/Core/Dot.h +10 -10
  80. data/vendor/eigen/Eigen/src/Core/EigenBase.h +10 -9
  81. data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  82. data/vendor/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  83. data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  84. data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +599 -152
  85. data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  86. data/vendor/eigen/Eigen/src/Core/IO.h +40 -7
  87. data/vendor/eigen/Eigen/src/Core/IndexedView.h +237 -0
  88. data/vendor/eigen/Eigen/src/Core/Inverse.h +9 -10
  89. data/vendor/eigen/Eigen/src/Core/Map.h +7 -7
  90. data/vendor/eigen/Eigen/src/Core/MapBase.h +10 -3
  91. data/vendor/eigen/Eigen/src/Core/MathFunctions.h +767 -125
  92. data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  93. data/vendor/eigen/Eigen/src/Core/Matrix.h +131 -25
  94. data/vendor/eigen/Eigen/src/Core/MatrixBase.h +21 -3
  95. data/vendor/eigen/Eigen/src/Core/NestByValue.h +25 -50
  96. data/vendor/eigen/Eigen/src/Core/NoAlias.h +4 -3
  97. data/vendor/eigen/Eigen/src/Core/NumTraits.h +107 -20
  98. data/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  99. data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +3 -31
  100. data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +152 -59
  101. data/vendor/eigen/Eigen/src/Core/Product.h +30 -25
  102. data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +192 -125
  103. data/vendor/eigen/Eigen/src/Core/Random.h +37 -1
  104. data/vendor/eigen/Eigen/src/Core/Redux.h +180 -170
  105. data/vendor/eigen/Eigen/src/Core/Ref.h +121 -23
  106. data/vendor/eigen/Eigen/src/Core/Replicate.h +8 -8
  107. data/vendor/eigen/Eigen/src/Core/Reshaped.h +454 -0
  108. data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  109. data/vendor/eigen/Eigen/src/Core/Reverse.h +18 -12
  110. data/vendor/eigen/Eigen/src/Core/Select.h +8 -6
  111. data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  112. data/vendor/eigen/Eigen/src/Core/Solve.h +14 -14
  113. data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +16 -16
  114. data/vendor/eigen/Eigen/src/Core/SolverBase.h +41 -3
  115. data/vendor/eigen/Eigen/src/Core/StableNorm.h +100 -70
  116. data/vendor/eigen/Eigen/src/Core/StlIterators.h +463 -0
  117. data/vendor/eigen/Eigen/src/Core/Stride.h +9 -4
  118. data/vendor/eigen/Eigen/src/Core/Swap.h +5 -4
  119. data/vendor/eigen/Eigen/src/Core/Transpose.h +88 -27
  120. data/vendor/eigen/Eigen/src/Core/Transpositions.h +26 -47
  121. data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +93 -75
  122. data/vendor/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  123. data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  124. data/vendor/eigen/Eigen/src/Core/Visitor.h +137 -29
  125. data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  126. data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  127. data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  128. data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  129. data/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  130. data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +207 -236
  131. data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1482 -495
  132. data/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  133. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  134. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  135. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  136. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  137. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  138. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  139. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  140. data/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  141. data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  142. data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  143. data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  144. data/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  145. data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  146. data/vendor/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  147. data/vendor/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  148. data/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  149. data/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  150. data/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  151. data/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  152. data/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  153. data/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  154. data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  155. data/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  156. data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  157. data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  158. data/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  159. data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  160. data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  161. data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  162. data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  163. data/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  164. data/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  165. data/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  166. data/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  167. data/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  168. data/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  169. data/vendor/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  170. data/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  171. data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  172. data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  173. data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  174. data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  175. data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  176. data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  177. data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  178. data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +355 -16
  179. data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1075 -586
  180. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +49 -24
  181. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +41 -35
  182. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +6 -6
  183. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +4 -2
  184. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  185. data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +22 -5
  186. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +53 -30
  187. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +16 -8
  188. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  189. data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +4 -4
  190. data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  191. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +33 -27
  192. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +14 -12
  193. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +36 -34
  194. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +8 -4
  195. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  196. data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +304 -119
  197. data/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  198. data/vendor/eigen/Eigen/src/Core/util/Constants.h +25 -9
  199. data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +26 -3
  200. data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +29 -9
  201. data/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  202. data/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  203. data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  204. data/vendor/eigen/Eigen/src/Core/util/Macros.h +709 -246
  205. data/vendor/eigen/Eigen/src/Core/util/Memory.h +222 -52
  206. data/vendor/eigen/Eigen/src/Core/util/Meta.h +355 -77
  207. data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +5 -1
  208. data/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  209. data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  210. data/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  211. data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +65 -30
  212. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  213. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +7 -4
  214. data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  215. data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  216. data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  217. data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  218. data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  219. data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +21 -9
  220. data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +77 -43
  221. data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  222. data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  223. data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  224. data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  225. data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  226. data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  227. data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  228. data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  229. data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +70 -14
  230. data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  231. data/vendor/eigen/Eigen/src/Geometry/Scaling.h +23 -5
  232. data/vendor/eigen/Eigen/src/Geometry/Transform.h +88 -67
  233. data/vendor/eigen/Eigen/src/Geometry/Translation.h +6 -12
  234. data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +1 -1
  235. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  236. data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  237. data/vendor/eigen/Eigen/src/Householder/Householder.h +8 -4
  238. data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  239. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  240. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  241. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  242. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  243. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  244. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  245. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  246. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  247. data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  248. data/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  249. data/vendor/eigen/Eigen/src/LU/Determinant.h +35 -19
  250. data/vendor/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  251. data/vendor/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  252. data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +71 -58
  253. data/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  254. data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  255. data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  256. data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  257. data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  258. data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +9 -7
  259. data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  260. data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  261. data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  262. data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  263. data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  264. data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +183 -63
  265. data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  266. data/vendor/eigen/Eigen/src/SVD/SVDBase.h +83 -22
  267. data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  268. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +17 -9
  269. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +12 -37
  270. data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +3 -2
  271. data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  272. data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  273. data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  274. data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  275. data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  276. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  277. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +4 -2
  278. data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  279. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +126 -11
  280. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  281. data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  282. data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  283. data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +5 -2
  284. data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  285. data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  286. data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +1 -0
  287. data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +162 -12
  288. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  289. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  290. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  291. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  292. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  293. data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  294. data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +2 -12
  295. data/vendor/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  296. data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  297. data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  298. data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  299. data/vendor/eigen/Eigen/src/misc/lapacke.h +5 -4
  300. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +28 -2
  301. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  302. data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  303. data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  304. data/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  305. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  306. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  307. data/vendor/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  308. data/vendor/eigen/README.md +2 -0
  309. data/vendor/eigen/bench/btl/README +1 -1
  310. data/vendor/eigen/bench/tensors/README +6 -7
  311. data/vendor/eigen/ci/README.md +56 -0
  312. data/vendor/eigen/demos/mix_eigen_and_c/README +1 -1
  313. data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +213 -158
  314. data/vendor/eigen/unsupported/README.txt +1 -1
  315. data/vendor/tomotopy/README.kr.rst +21 -0
  316. data/vendor/tomotopy/README.rst +20 -0
  317. data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
  318. data/vendor/tomotopy/src/Labeling/Phraser.hpp +1 -1
  319. data/vendor/tomotopy/src/TopicModel/CTModel.hpp +2 -1
  320. data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +2 -1
  321. data/vendor/tomotopy/src/TopicModel/DTModel.hpp +1 -1
  322. data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +2 -2
  323. data/vendor/tomotopy/src/TopicModel/HDP.h +1 -0
  324. data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +53 -2
  325. data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +1 -1
  326. data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +1 -0
  327. data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +2 -2
  328. data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +16 -5
  329. data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +1 -0
  330. data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +1 -0
  331. data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +1 -0
  332. data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
  333. data/vendor/tomotopy/src/TopicModel/PTModel.hpp +31 -1
  334. data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +2 -2
  335. data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +7 -5
  336. data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
  337. data/vendor/tomotopy/src/Utils/exception.h +6 -0
  338. data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
  339. data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
  340. metadata +60 -14
  341. data/vendor/eigen/Eigen/CMakeLists.txt +0 -19
  342. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -674
  343. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  344. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  345. data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  346. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  347. 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: a68366fa033b16f1a3c5ce77d1c62cd523dda6f873fb24cf25619706a7a0086f
4
- data.tar.gz: 347f7c8c8cce63da9b5f922267123811bc1333ebdb685bbbb10b906fda24eeee
3
+ metadata.gz: e3e3aa3215e693030f3069cab0fd62686e9d28ad4df6e93ee2e9c7ba9e29286f
4
+ data.tar.gz: 98e4f18488132f6130bd9523d8540dd73626e8b3e5a58a1656ce3aa1ddf8234b
5
5
  SHA512:
6
- metadata.gz: 72adc8f9e3fe3e9d04e3841d4ff9386d3f2bef710adaa0fa2e0406284eb814cff55e0603e3b3c3b344893011dc20ab9d17de68fbaceff48c73fc9b6e506971e2
7
- data.tar.gz: 6ec20a814092d056917b5f1b455019a676f8ac54161c3a0f487670dbbba5ae8dbdf6ab634c17c4770ccbdbcd4be9b12304ccc92f6ed0279ee48eb2fe36a035c9
6
+ metadata.gz: 95b9d0697f58a9149c18cbbdcc7b93aa19dc7f335f12033fc80386a2ca6628bfc3c2a7a9c7299cd192459132f8d467663562de3da733cca00041da24361a6d9f
7
+ data.tar.gz: 9c0e12d32aedb8cb0689032f9b0fe54387b9b452a1e26b747137c4115e9813ea491fa09b6851b9e69ca6a3a86df159409d57322c3862b670ae3b3d4f8711469d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
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
+
1
7
  ## 0.2.3 (2021-08-26)
2
8
 
3
9
  - Updated to Rice 4
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
@@ -2,7 +2,11 @@ require "mkmf-rice"
2
2
 
3
3
  $CXXFLAGS += " -std=c++17 $(optflags) -DEIGEN_MPL2_ONLY"
4
4
 
5
- $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
6
10
 
7
11
  apple_clang = RbConfig::CONFIG["CC_VERSION_MESSAGE"] =~ /apple clang/i
8
12
 
@@ -27,4 +31,4 @@ $srcs = Dir["{#{ext},#{tomoto}}/*.cpp"]
27
31
  $INCFLAGS += " -I#{tomoto} -I#{eigen} -I#{eigen_rand} -I#{variant}"
28
32
  $VPATH << tomoto
29
33
 
30
- create_makefile("tomoto/ext")
34
+ create_makefile("tomoto/tomoto")
@@ -15,7 +15,7 @@ void init_plda(Rice::Module& m);
15
15
  void init_slda(Rice::Module& m);
16
16
 
17
17
  extern "C"
18
- void Init_ext()
18
+ void Init_tomoto()
19
19
  {
20
20
  auto m = Rice::define_module("Tomoto")
21
21
  .define_singleton_function(
@@ -1,3 +1,3 @@
1
1
  module Tomoto
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/tomoto.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  # ext
2
- require "tomoto/ext"
2
+ begin
3
+ require "tomoto/#{RUBY_VERSION.to_f}/tomoto"
4
+ rescue LoadError
5
+ require "tomoto/tomoto"
6
+ end
3
7
 
4
8
  # modules
5
9
  require "tomoto/ct"
@@ -2,10 +2,10 @@
2
2
  * @file Core.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,15 +13,15 @@
13
13
  #ifndef EIGENRAND_CORE_H
14
14
  #define EIGENRAND_CORE_H
15
15
 
16
- #include <EigenRand/RandUtils.h>
16
+ #include "RandUtils.h"
17
17
 
18
- #include <EigenRand/Dists/Basic.h>
19
- #include <EigenRand/Dists/Discrete.h>
20
- #include <EigenRand/Dists/NormalExp.h>
21
- #include <EigenRand/Dists/GammaPoisson.h>
18
+ #include "Dists/Basic.h"
19
+ #include "Dists/Discrete.h"
20
+ #include "Dists/NormalExp.h"
21
+ #include "Dists/GammaPoisson.h"
22
22
 
23
- #include <EigenRand/MvDists/MvNormal.h>
24
- #include <EigenRand/MvDists/Multinomial.h>
23
+ #include "MvDists/MvNormal.h"
24
+ #include "MvDists/Multinomial.h"
25
25
 
26
26
  namespace Eigen
27
27
  {
@@ -2,10 +2,10 @@
2
2
  * @file Basic.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
 
@@ -238,6 +238,31 @@ namespace Eigen
238
238
 
239
239
  using OptCacheStore = CacheStore<EIGEN_MAX_ALIGN_BYTES>;
240
240
 
241
+ template<typename _Scalar>
242
+ struct ExtractFirstUint;
243
+
244
+ template<>
245
+ struct ExtractFirstUint<float>
246
+ {
247
+ template<typename Packet>
248
+ auto operator()(Packet v) -> decltype(Eigen::internal::pfirst(v))
249
+ {
250
+ return Eigen::internal::pfirst(v);
251
+ }
252
+ };
253
+
254
+ template<>
255
+ struct ExtractFirstUint<double>
256
+ {
257
+ template<typename Packet>
258
+ auto operator()(Packet v) -> uint64_t
259
+ {
260
+ uint64_t arr[sizeof(Packet) / 8];
261
+ Eigen::internal::pstoreu((Packet*)arr, v);
262
+ return arr[0];
263
+ }
264
+ };
265
+
241
266
  /**
242
267
  * @brief Generator of random bits for integral scalars
243
268
  *
@@ -296,13 +321,52 @@ namespace Eigen
296
321
  }
297
322
  };
298
323
 
324
+ /**
325
+ * @brief Generator of reals in a range `[a, b]`
326
+ *
327
+ * @tparam _Scalar any real type
328
+ */
329
+ template<typename _Scalar>
330
+ class Balanced2Gen : public GenBase<Balanced2Gen<_Scalar>, _Scalar>
331
+ {
332
+ static_assert(std::is_floating_point<_Scalar>::value, "balanced needs floating point types.");
333
+ _Scalar slope = 2, bias = -1;
334
+ public:
335
+ using Scalar = _Scalar;
336
+
337
+ /**
338
+ * @brief Construct a new balanced generator
339
+ *
340
+ * @param _a,_b left and right boundary
341
+ */
342
+ Balanced2Gen(_Scalar _a = -1, _Scalar _b = 1)
343
+ : slope{ _b - _a }, bias{ _a }
344
+ {
345
+ }
346
+
347
+ template<typename Rng>
348
+ EIGEN_STRONG_INLINE const _Scalar operator() (Rng&& rng)
349
+ {
350
+ using namespace Eigen::internal;
351
+ return ((_Scalar)((int32_t)pfirst(std::forward<Rng>(rng)()) & 0x7FFFFFFF) / 0x7FFFFFFF) * slope + bias;
352
+ }
353
+
354
+ template<typename Packet, typename Rng>
355
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(Rng&& rng)
356
+ {
357
+ using namespace Eigen::internal;
358
+ using RUtils = RandUtils<Packet, Rng>;
359
+ return RUtils{}.balanced(std::forward<Rng>(rng), slope, bias);
360
+ }
361
+ };
362
+
299
363
  /**
300
364
  * @brief Generator of reals in a range `[0, 1)`
301
365
  *
302
366
  * @tparam _Scalar any real type
303
367
  */
304
368
  template<typename _Scalar>
305
- class UniformRealGen : public GenBase<UniformRealGen<_Scalar>, _Scalar>
369
+ class StdUniformRealGen : public GenBase<StdUniformRealGen<_Scalar>, _Scalar>
306
370
  {
307
371
  static_assert(std::is_floating_point<_Scalar>::value, "uniformReal needs floating point types.");
308
372
 
@@ -313,14 +377,14 @@ namespace Eigen
313
377
  EIGEN_STRONG_INLINE const _Scalar operator() (Rng&& rng)
314
378
  {
315
379
  using namespace Eigen::internal;
316
- return bit_scalar<_Scalar>{}.to_ur(pfirst(std::forward<Rng>(rng)()));
380
+ return BitScalar<_Scalar>{}.to_ur(ExtractFirstUint<_Scalar>{}(std::forward<Rng>(rng)()));
317
381
  }
318
382
 
319
383
  template<typename Rng>
320
384
  EIGEN_STRONG_INLINE const _Scalar nzur_scalar(Rng&& rng)
321
385
  {
322
386
  using namespace Eigen::internal;
323
- return bit_scalar<_Scalar>{}.to_nzur(pfirst(std::forward<Rng>(rng)()));
387
+ return BitScalar<_Scalar>{}.to_nzur(ExtractFirstUint<_Scalar>{}(std::forward<Rng>(rng)()));
324
388
  }
325
389
 
326
390
  template<typename Packet, typename Rng>
@@ -332,6 +396,49 @@ namespace Eigen
332
396
  }
333
397
  };
334
398
 
399
+ /**
400
+ * @brief Generator of reals in a range `[a, b)`
401
+ *
402
+ * @tparam _Scalar any real type
403
+ */
404
+ template<typename _Scalar>
405
+ class UniformRealGen : public GenBase<UniformRealGen<_Scalar>, _Scalar>
406
+ {
407
+ static_assert(std::is_floating_point<_Scalar>::value, "uniformReal needs floating point types.");
408
+ _Scalar bias, slope;
409
+
410
+ public:
411
+ using Scalar = _Scalar;
412
+
413
+ UniformRealGen(_Scalar _min = 0, _Scalar _max = 1)
414
+ : bias{ _min }, slope{ _max - _min }
415
+ {
416
+ }
417
+
418
+ UniformRealGen(const UniformRealGen&) = default;
419
+ UniformRealGen(UniformRealGen&&) = default;
420
+
421
+ UniformRealGen& operator=(const UniformRealGen&) = default;
422
+ UniformRealGen& operator=(UniformRealGen&&) = default;
423
+
424
+ template<typename Rng>
425
+ EIGEN_STRONG_INLINE const _Scalar operator() (Rng&& rng)
426
+ {
427
+ using namespace Eigen::internal;
428
+ return bias + BitScalar<_Scalar>{}.to_ur(pfirst(std::forward<Rng>(rng)())) * slope;
429
+ }
430
+
431
+ template<typename Packet, typename Rng>
432
+ EIGEN_STRONG_INLINE const Packet packetOp(Rng&& rng)
433
+ {
434
+ using namespace Eigen::internal;
435
+ using RUtils = RandUtils<Packet, Rng>;
436
+ return padd(pmul(
437
+ RUtils{}.uniform_real(std::forward<Rng>(rng)), pset1<Packet>(slope)
438
+ ), pset1<Packet>(bias));
439
+ }
440
+ };
441
+
335
442
 
336
443
  /**
337
444
  * @brief Generator of Bernoulli distribution
@@ -468,7 +575,53 @@ namespace Eigen
468
575
  }
469
576
 
470
577
  template<typename Derived, typename Urng>
471
- using UniformRealType = CwiseNullaryOp<internal::scalar_rng_adaptor<UniformRealGen<typename Derived::Scalar>, typename Derived::Scalar, Urng, true>, const Derived>;
578
+ using Balanced2Type = CwiseNullaryOp<internal::scalar_rng_adaptor<Balanced2Gen<typename Derived::Scalar>, typename Derived::Scalar, Urng, true>, const Derived>;
579
+
580
+ /**
581
+ * @brief generates reals in a range `[a, b]`
582
+ *
583
+ * @tparam Derived a type of Eigen::DenseBase
584
+ * @tparam Urng
585
+ * @param rows the number of rows being generated
586
+ * @param cols the number of columns being generated
587
+ * @param urng c++11-style random number generator
588
+ * @param a,b left and right boundary
589
+ * @return a random matrix expression with a shape (`rows`, `cols`)
590
+ *
591
+ * @see Eigen::Rand::BalancedGen
592
+ */
593
+ template<typename Derived, typename Urng>
594
+ inline const Balanced2Type<Derived, Urng>
595
+ balanced(Index rows, Index cols, Urng&& urng, typename Derived::Scalar a, typename Derived::Scalar b)
596
+ {
597
+ return {
598
+ rows, cols, { std::forward<Urng>(urng), Balanced2Gen<typename Derived::Scalar>{a, b} }
599
+ };
600
+ }
601
+
602
+ /**
603
+ * @brief generates reals in a range `[a, b]`
604
+ *
605
+ * @tparam Derived
606
+ * @tparam Urng
607
+ * @param o an instance of any type of Eigen::DenseBase
608
+ * @param urng c++11-style random number generator
609
+ * @param a,b left and right boundary
610
+ * @return a random matrix expression of the same shape as `o`
611
+ *
612
+ * @see Eigen::Rand::BalancedGen
613
+ */
614
+ template<typename Derived, typename Urng>
615
+ inline const Balanced2Type<Derived, Urng>
616
+ balancedLike(const Derived& o, Urng&& urng, typename Derived::Scalar a, typename Derived::Scalar b)
617
+ {
618
+ return {
619
+ o.rows(), o.cols(), { std::forward<Urng>(urng), Balanced2Gen<typename Derived::Scalar>{a, b} }
620
+ };
621
+ }
622
+
623
+ template<typename Derived, typename Urng>
624
+ using StdUniformRealType = CwiseNullaryOp<internal::scalar_rng_adaptor<StdUniformRealGen<typename Derived::Scalar>, typename Derived::Scalar, Urng, true>, const Derived>;
472
625
 
473
626
  /**
474
627
  * @brief generates reals in a range `[0, 1)`
@@ -483,7 +636,7 @@ namespace Eigen
483
636
  * @see Eigen::Rand::UniformRealGen
484
637
  */
485
638
  template<typename Derived, typename Urng>
486
- inline const UniformRealType<Derived, Urng>
639
+ inline const StdUniformRealType<Derived, Urng>
487
640
  uniformReal(Index rows, Index cols, Urng&& urng)
488
641
  {
489
642
  return {
@@ -503,7 +656,7 @@ namespace Eigen
503
656
  * @see Eigen::Rand::UniformRealGen
504
657
  */
505
658
  template<typename Derived, typename Urng>
506
- inline const UniformRealType<Derived, Urng>
659
+ inline const StdUniformRealType<Derived, Urng>
507
660
  uniformRealLike(Derived& o, Urng&& urng)
508
661
  {
509
662
  return {
@@ -511,6 +664,52 @@ namespace Eigen
511
664
  };
512
665
  }
513
666
 
667
+ template<typename Derived, typename Urng>
668
+ using UniformRealType = CwiseNullaryOp<internal::scalar_rng_adaptor<UniformRealGen<typename Derived::Scalar>, typename Derived::Scalar, Urng, true>, const Derived>;
669
+
670
+ /**
671
+ * @brief generates reals in a range `[min, max)`
672
+ *
673
+ * @tparam Derived a type of Eigen::DenseBase
674
+ * @tparam Urng
675
+ * @param rows the number of rows being generated
676
+ * @param cols the number of columns being generated
677
+ * @param urng c++11-style random number generator
678
+ * @param min, max the range of reals being generated
679
+ * @return a random matrix expression with a shape (`rows`, `cols`)
680
+ *
681
+ * @see Eigen::Rand::UniformRealGen
682
+ */
683
+ template<typename Derived, typename Urng>
684
+ inline const UniformRealType<Derived, Urng>
685
+ uniformReal(Index rows, Index cols, Urng&& urng, typename Derived::Scalar min, typename Derived::Scalar max)
686
+ {
687
+ return {
688
+ rows, cols, { std::forward<Urng>(urng), UniformRealGen<typename Derived::Scalar>{ min, max } }
689
+ };
690
+ }
691
+
692
+ /**
693
+ * @brief generates reals in a range `[min, max)`
694
+ *
695
+ * @tparam Derived
696
+ * @tparam Urng
697
+ * @param o an instance of any type of Eigen::DenseBase
698
+ * @param urng c++11-style random number generator
699
+ * @param min, max the range of reals being generated
700
+ * @return a random matrix expression of the same shape as `o`
701
+ *
702
+ * @see Eigen::Rand::UniformRealGen
703
+ */
704
+ template<typename Derived, typename Urng>
705
+ inline const UniformRealType<Derived, Urng>
706
+ uniformRealLike(Derived& o, Urng&& urng, typename Derived::Scalar min, typename Derived::Scalar max)
707
+ {
708
+ return {
709
+ o.rows(), o.cols(), { std::forward<Urng>(urng), UniformRealGen<typename Derived::Scalar>{ min, max } }
710
+ };
711
+ }
712
+
514
713
  template<typename Derived, typename Urng>
515
714
  using BernoulliType = CwiseNullaryOp<internal::scalar_rng_adaptor<BernoulliGen<typename Derived::Scalar>, typename Derived::Scalar, Urng, true>, const Derived>;
516
715