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
@@ -2,10 +2,10 @@
2
2
  * @file Discrete.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
 
@@ -49,11 +49,11 @@ namespace Eigen
49
49
  bitmask = o.bitmask;
50
50
  if (msize)
51
51
  {
52
- arr = std::unique_ptr<_Precision[]>(new _Precision[1 << bitsize]);
53
- alias = std::unique_ptr<_Size[]>(new _Size[1 << bitsize]);
52
+ arr = std::unique_ptr<_Precision[]>(new _Precision[(size_t)1 << bitsize]);
53
+ alias = std::unique_ptr<_Size[]>(new _Size[(size_t)1 << bitsize]);
54
54
 
55
- std::copy(o.arr.get(), o.arr.get() + (1 << bitsize), arr.get());
56
- std::copy(o.alias.get(), o.alias.get() + (1 << bitsize), alias.get());
55
+ std::copy(o.arr.get(), o.arr.get() + ((size_t)1 << bitsize), arr.get());
56
+ std::copy(o.alias.get(), o.alias.get() + ((size_t)1 << bitsize), alias.get());
57
57
  }
58
58
  return *this;
59
59
  }
@@ -125,7 +125,7 @@ namespace Eigen
125
125
  {
126
126
  arr[under] = (_Precision)f[under];
127
127
  }
128
- alias[under] = over;
128
+ alias[under] = (_Size)over;
129
129
  f[over] += f[under] - 1;
130
130
  if (f[over] >= 1 || mm <= over)
131
131
  {
@@ -152,7 +152,7 @@ namespace Eigen
152
152
  {
153
153
  arr[over] = 1;
154
154
  }
155
- alias[over] = over;
155
+ alias[over] = (_Size)over;
156
156
  }
157
157
  }
158
158
 
@@ -166,7 +166,7 @@ namespace Eigen
166
166
  {
167
167
  arr[under] = 1;
168
168
  }
169
- alias[under] = under;
169
+ alias[under] = (_Size)under;
170
170
  for (under = mm; under < msize; ++under)
171
171
  {
172
172
  if (f[under] < 1)
@@ -179,7 +179,7 @@ namespace Eigen
179
179
  {
180
180
  arr[under] = 1;
181
181
  }
182
- alias[under] = under;
182
+ alias[under] = (_Size)under;
183
183
  }
184
184
  }
185
185
  }
@@ -260,8 +260,9 @@ namespace Eigen
260
260
  else
261
261
  {
262
262
  size_t bitcnt = bitsize;
263
- while (1)
263
+ for (int _i = 0; ; ++_i)
264
264
  {
265
+ EIGENRAND_CHECK_INFINITY_LOOP();
265
266
  _Scalar cands = (_Scalar)(rx & bitmask);
266
267
  if (cands <= pdiff) return cands;
267
268
  if (bitcnt + bitsize < 32)
@@ -293,8 +294,9 @@ namespace Eigen
293
294
  auto& cm = Rand::detail::CompressMask<sizeof(Packet)>::get_inst();
294
295
  auto plen = pset1<Packet>(pdiff + 1);
295
296
  size_t bitcnt = bitsize;
296
- while (1)
297
+ for (int _i = 0; ; ++_i)
297
298
  {
299
+ EIGENRAND_CHECK_INFINITY_LOOP();
298
300
  // accept cands that only < plen
299
301
  auto cands = pand(rx, pbitmask);
300
302
  bool full = false;
@@ -304,7 +306,7 @@ namespace Eigen
304
306
 
305
307
  if (bitcnt + bitsize < 32)
306
308
  {
307
- rx = psrl(rx, bitsize);
309
+ rx = psrl<-1>(rx, bitsize);
308
310
  bitcnt += bitsize;
309
311
  }
310
312
  else
@@ -417,7 +419,7 @@ namespace Eigen
417
419
  auto rx = randbits(std::forward<Rng>(rng));
418
420
  auto albit = rx & alias_table.get_bitmask();
419
421
  uint32_t alx = (uint32_t)(rx >> (sizeof(rx) * 8 - 31));
420
- if (alx < alias_table.get_prob()[albit]) return albit;
422
+ if (alx < alias_table.get_prob()[albit]) return (_Scalar)albit;
421
423
  return alias_table.get_alias()[albit];
422
424
  }
423
425
  }
@@ -451,7 +453,7 @@ namespace Eigen
451
453
  {
452
454
  auto rx = randbits.template packetOp<PacketType>(std::forward<Rng>(rng));
453
455
  auto albit = pand(rx, pset1<PacketType>(alias_table.get_bitmask()));
454
- auto c = pcmplt(psrl(rx, 1), pgather(alias_table.get_prob(), albit));
456
+ auto c = pcmplt(psrl<1>(rx), pgather(alias_table.get_prob(), albit));
455
457
  ret = pblendv(c, albit, pgather(alias_table.get_alias(), albit));
456
458
  }
457
459
 
@@ -673,6 +675,8 @@ namespace Eigen
673
675
  }
674
676
  }
675
677
 
678
+ #ifdef EIGEN_VECTORIZE_NEON
679
+ #else
676
680
  template<typename Packet, typename Rng>
677
681
  EIGEN_STRONG_INLINE const Packet packetOp(Rng&& rng)
678
682
  {
@@ -681,7 +685,7 @@ namespace Eigen
681
685
  if (!cdf.empty())
682
686
  {
683
687
  auto ret = pset1<Packet>(cdf.size());
684
- #ifdef EIGEN_VECTORIZE_AVX
688
+ #ifdef EIGEN_VECTORIZE_AVX
685
689
  auto rx = ur.template packetOp<Packet4d>(std::forward<Rng>(rng));
686
690
  for (auto& p : cdf)
687
691
  {
@@ -689,7 +693,7 @@ namespace Eigen
689
693
  auto r = combine_low32(c);
690
694
  ret = padd(ret, r);
691
695
  }
692
- #else
696
+ #else
693
697
  auto rx1 = ur.template packetOp<DPacket>(rng),
694
698
  rx2 = ur.template packetOp<DPacket>(rng);
695
699
  for (auto& p : cdf)
@@ -697,25 +701,26 @@ namespace Eigen
697
701
  auto pp = pset1<decltype(rx1)>(p);
698
702
  ret = padd(ret, combine_low32(reinterpret_to_int(pcmplt(rx1, pp)), reinterpret_to_int(pcmplt(rx2, pp))));
699
703
  }
700
- #endif
704
+ #endif
701
705
  return ret;
702
706
  }
703
707
  else
704
708
  {
705
- #ifdef EIGEN_VECTORIZE_AVX
709
+ #ifdef EIGEN_VECTORIZE_AVX
706
710
  using RUtils = RawbitsMaker<Packet, Rng>;
707
711
  auto albit = pand(RUtils{}.rawbits(rng), pset1<Packet>(alias_table.get_bitmask()));
708
712
  auto c = reinterpret_to_int(pcmplt(ur.template packetOp<Packet4d>(rng), pgather(alias_table.get_prob(), _mm256_castsi128_si256(albit))));
709
713
  return pblendv(combine_low32(c), albit, pgather(alias_table.get_alias(), albit));
710
- #else
714
+ #else
711
715
  using RUtils = RawbitsMaker<Packet, Rng>;
712
716
  auto albit = pand(RUtils{}.rawbits(rng), pset1<Packet>(alias_table.get_bitmask()));
713
717
  auto c1 = reinterpret_to_int(pcmplt(ur.template packetOp<DPacket>(rng), pgather(alias_table.get_prob(), albit)));
714
718
  auto c2 = reinterpret_to_int(pcmplt(ur.template packetOp<DPacket>(rng), pgather(alias_table.get_prob(), albit, true)));
715
719
  return pblendv(combine_low32(c1, c2), albit, pgather(alias_table.get_alias(), albit));
716
- #endif
720
+ #endif
717
721
  }
718
722
  }
723
+ #endif
719
724
  };
720
725
 
721
726
  template<typename> class BinomialGen;
@@ -777,8 +782,9 @@ namespace Eigen
777
782
  {
778
783
  _Scalar res;
779
784
  double yx;
780
- while (1)
785
+ for (int _i = 0; ; ++_i)
781
786
  {
787
+ EIGENRAND_CHECK_INFINITY_LOOP();
782
788
  yx = std::tan(constant::pi * ur(rng));
783
789
  res = (_Scalar)(sqrt_tmean * yx + mean);
784
790
  if (res >= 0 && ur(rng) <= 0.9 * (1.0 + yx * yx)
@@ -800,8 +806,9 @@ namespace Eigen
800
806
  {
801
807
  Packet res = pset1<Packet>(0);
802
808
  PacketType val = pset1<PacketType>(1), pne_mean = pset1<PacketType>(ne_mean);
803
- while (1)
809
+ for (int _i = 0; ; ++_i)
804
810
  {
811
+ EIGENRAND_CHECK_INFINITY_LOOP();
805
812
  val = pmul(val, ur.template packetOp<PacketType>(rng));
806
813
  auto c = reinterpret_to_int(pcmplt(pne_mean, val));
807
814
  if (pmovemask(c) == 0) break;
@@ -817,15 +824,16 @@ namespace Eigen
817
824
  pmean = pset1<PacketType>(mean),
818
825
  plog_mean = pset1<PacketType>(log_mean),
819
826
  pg1 = pset1<PacketType>(g1);
820
- while (1)
827
+ for (int _i = 0; ; ++_i)
821
828
  {
829
+ EIGENRAND_CHECK_INFINITY_LOOP();
822
830
  PacketType fres, yx, psin, pcos;
823
831
  psincos(pmul(ppi, ur.template packetOp<PacketType>(rng)), psin, pcos);
824
832
  yx = pdiv(psin, pcos);
825
833
  fres = ptruncate(padd(pmul(psqrt_tmean, yx), pmean));
826
834
 
827
835
  auto p1 = pmul(padd(pmul(yx, yx), pset1<PacketType>(1)), pset1<PacketType>(0.9));
828
- auto p2 = pexp(psub(psub(pmul(fres, plog_mean), plgamma(padd(fres, pset1<PacketType>(1)))), pg1));
836
+ auto p2 = pexp(psub(psub(pmul(fres, plog_mean), plgamma_approx(padd(fres, pset1<PacketType>(1)))), pg1));
829
837
 
830
838
  auto c1 = pcmple(pset1<PacketType>(0), fres);
831
839
  auto c2 = pcmple(ur.template packetOp<PacketType>(rng), pmul(p1, p2));
@@ -852,7 +860,7 @@ namespace Eigen
852
860
 
853
861
  PoissonGen<_Scalar> poisson;
854
862
  _Scalar trials;
855
- double p, small_p, g1, sqrt_v, log_small_p, log_small_q;
863
+ double p = 0, small_p = 0, g1 = 0, sqrt_v = 0, log_small_p = 0, log_small_q = 0;
856
864
 
857
865
  public:
858
866
  using Scalar = _Scalar;
@@ -903,8 +911,9 @@ namespace Eigen
903
911
  }
904
912
  else
905
913
  {
906
- while (1)
914
+ for (int _i = 0; ; ++_i)
907
915
  {
916
+ EIGENRAND_CHECK_INFINITY_LOOP();
908
917
  double ys;
909
918
  ys = std::tan(constant::pi * poisson.ur(rng));
910
919
  res = (_Scalar)(sqrt_v * ys + poisson.mean);
@@ -954,8 +963,9 @@ namespace Eigen
954
963
  plog_small_p = pset1<PacketType>(log_small_p),
955
964
  plog_small_q = pset1<PacketType>(log_small_q),
956
965
  pg1 = pset1<PacketType>(g1);
957
- while (1)
966
+ for (int _i = 0; ; ++_i)
958
967
  {
968
+ EIGENRAND_CHECK_INFINITY_LOOP();
959
969
  PacketType fres, ys, psin, pcos;
960
970
  psincos(pmul(ppi, poisson.ur.template packetOp<PacketType>(rng)), psin, pcos);
961
971
  ys = pdiv(psin, pcos);
@@ -964,8 +974,8 @@ namespace Eigen
964
974
  auto p1 = pmul(pmul(pset1<PacketType>(1.2), psqrt_v), padd(pset1<PacketType>(1), pmul(ys, ys)));
965
975
  auto p2 = pexp(
966
976
  padd(padd(psub(
967
- psub(pg1, plgamma(padd(fres, pset1<PacketType>(1)))),
968
- plgamma(psub(padd(ptrials, pset1<PacketType>(1)), fres))
977
+ psub(pg1, plgamma_approx(padd(fres, pset1<PacketType>(1)))),
978
+ plgamma_approx(psub(padd(ptrials, pset1<PacketType>(1)), fres))
969
979
  ), pmul(fres, plog_small_p)), pmul(psub(ptrials, fres), plog_small_q))
970
980
  );
971
981
 
@@ -1503,6 +1513,17 @@ namespace Eigen
1503
1513
  };
1504
1514
  }
1505
1515
  }
1516
+
1517
+ #ifdef EIGEN_VECTORIZE_NEON
1518
+ namespace internal
1519
+ {
1520
+ template<typename _Scalar, typename Urng, bool _mutable>
1521
+ struct functor_traits<scalar_rng_adaptor<Rand::DiscreteGen<_Scalar, double>, _Scalar, Urng, _mutable> >
1522
+ {
1523
+ enum { Cost = HugeCost, PacketAccess = 0, IsRepeatable = false };
1524
+ };
1525
+ }
1526
+ #endif
1506
1527
  }
1507
1528
 
1508
1529
  #endif
@@ -2,10 +2,10 @@
2
2
  * @file GammaPoisson.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
 
@@ -58,7 +58,6 @@ namespace Eigen
58
58
  EIGEN_STRONG_INLINE const Packet packetOp(Rng&& rng)
59
59
  {
60
60
  using namespace Eigen::internal;
61
- using ur_base = UniformRealGen<float>;
62
61
  using PacketType = decltype(reinterpret_to_float(std::declval<Packet>()));
63
62
 
64
63
  auto mean = gamma.template packetOp<PacketType>(rng);
@@ -66,8 +65,9 @@ namespace Eigen
66
65
  PacketType val = pset1<PacketType>(1), pne_mean = pexp(pnegate(mean));
67
66
  if (pmovemask(pcmplt(pset1<PacketType>(12), mean)) == 0)
68
67
  {
69
- while (1)
68
+ for (int _i = 0; ; ++_i)
70
69
  {
70
+ EIGENRAND_CHECK_INFINITY_LOOP();
71
71
  val = pmul(val, ur.template packetOp<PacketType>(rng));
72
72
  auto c = reinterpret_to_int(pcmplt(pne_mean, val));
73
73
  if (pmovemask(c) == 0) break;
@@ -81,16 +81,17 @@ namespace Eigen
81
81
  const PacketType ppi = pset1<PacketType>(constant::pi),
82
82
  psqrt_tmean = psqrt(pmul(pset1<PacketType>(2), mean)),
83
83
  plog_mean = plog(mean),
84
- pg1 = psub(pmul(mean, plog_mean), plgamma(padd(mean, pset1<PacketType>(1))));
85
- while (1)
84
+ pg1 = psub(pmul(mean, plog_mean), plgamma_approx(padd(mean, pset1<PacketType>(1))));
85
+ for (int _i = 0; ; ++_i)
86
86
  {
87
+ EIGENRAND_CHECK_INFINITY_LOOP();
87
88
  PacketType fres, yx, psin, pcos;
88
89
  psincos(pmul(ppi, ur.template packetOp<PacketType>(rng)), psin, pcos);
89
90
  yx = pdiv(psin, pcos);
90
91
  fres = ptruncate(padd(pmul(psqrt_tmean, yx), mean));
91
92
 
92
93
  auto p1 = pmul(padd(pmul(yx, yx), pset1<PacketType>(1)), pset1<PacketType>(0.9));
93
- auto p2 = pexp(psub(psub(pmul(fres, plog_mean), plgamma(padd(fres, pset1<PacketType>(1)))), pg1));
94
+ auto p2 = pexp(psub(psub(pmul(fres, plog_mean), plgamma_approx(padd(fres, pset1<PacketType>(1)))), pg1));
94
95
 
95
96
  auto c1 = pcmple(pset1<PacketType>(0), fres);
96
97
  auto c2 = pcmple(ur.template packetOp<PacketType>(rng), pmul(p1, p2));
@@ -2,10 +2,10 @@
2
2
  * @file NormalExp.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
 
@@ -27,7 +27,7 @@ namespace Eigen
27
27
  {
28
28
  static_assert(std::is_floating_point<_Scalar>::value, "normalDist needs floating point types.");
29
29
  bool valid = false;
30
- UniformRealGen<_Scalar> ur;
30
+ StdUniformRealGen<_Scalar> ur;
31
31
 
32
32
  public:
33
33
  using Scalar = _Scalar;
@@ -44,8 +44,9 @@ namespace Eigen
44
44
  valid = true;
45
45
 
46
46
  _Scalar v1, v2, sx;
47
- while (1)
47
+ for (int _i = 0; ; ++_i)
48
48
  {
49
+ EIGENRAND_CHECK_INFINITY_LOOP();
49
50
  v1 = 2 * ur(rng) - 1;
50
51
  v2 = 2 * ur(rng) - 1;
51
52
  sx = v1 * v1 + v2 * v2;
@@ -186,7 +187,7 @@ namespace Eigen
186
187
  class StudentTGen : public GenBase<StudentTGen<_Scalar>, _Scalar>
187
188
  {
188
189
  static_assert(std::is_floating_point<_Scalar>::value, "studentT needs floating point types.");
189
- UniformRealGen<_Scalar> ur;
190
+ StdUniformRealGen<_Scalar> ur;
190
191
  _Scalar n;
191
192
 
192
193
  public:
@@ -213,8 +214,9 @@ namespace Eigen
213
214
  {
214
215
  using namespace Eigen::internal;
215
216
  _Scalar v1, v2, sx;
216
- while (1)
217
+ for (int _i = 0; ; ++_i)
217
218
  {
219
+ EIGENRAND_CHECK_INFINITY_LOOP();
218
220
  v1 = 2 * ur(rng) - 1;
219
221
  v2 = 2 * ur(rng) - 1;
220
222
  sx = v1 * v1 + v2 * v2;
@@ -238,8 +240,7 @@ namespace Eigen
238
240
  psub(pexp(pmul(plog(u1), pset1<Packet>(-2 / n))), pset1<Packet>(1))
239
241
  ));
240
242
  auto theta = pmul(pset1<Packet>(2 * constant::pi), u2);
241
- Packet sintheta, costheta;
242
-
243
+ //Packet sintheta, costheta;
243
244
  //psincos(theta, sintheta, costheta);
244
245
  return pmul(radius, psin(theta));
245
246
  }
@@ -257,7 +258,7 @@ namespace Eigen
257
258
  {
258
259
  friend GammaGen<_Scalar>;
259
260
  static_assert(std::is_floating_point<_Scalar>::value, "expDist needs floating point types.");
260
- UniformRealGen<_Scalar> ur;
261
+ StdUniformRealGen<_Scalar> ur;
261
262
  _Scalar lambda = 1;
262
263
 
263
264
  public:
@@ -325,7 +326,7 @@ namespace Eigen
325
326
  GammaGen(_Scalar _alpha = 1, _Scalar _beta = 1)
326
327
  : alpha{ _alpha }, beta{ _beta }
327
328
  {
328
- px = constant::e / (alpha + constant::e);
329
+ px = (_Scalar)(constant::e / (alpha + constant::e));
329
330
  sqrt = std::sqrt(2 * alpha - 1);
330
331
  }
331
332
 
@@ -342,8 +343,9 @@ namespace Eigen
342
343
  if (alpha < 1)
343
344
  {
344
345
  _Scalar ux, vx, xx, qx;
345
- while (1)
346
+ for (int _i = 0; ; ++_i)
346
347
  {
348
+ EIGENRAND_CHECK_INFINITY_LOOP();
347
349
  ux = expon.ur(rng);
348
350
  vx = expon.ur.nzur_scalar(rng);
349
351
 
@@ -380,8 +382,9 @@ namespace Eigen
380
382
  return -beta * std::log(yx);
381
383
  }
382
384
 
383
- while (1)
385
+ for (int _i = 0; ; ++_i)
384
386
  {
387
+ EIGENRAND_CHECK_INFINITY_LOOP();
385
388
  _Scalar yx, xx;
386
389
  yx = std::tan(constant::pi * expon.ur(rng));
387
390
  xx = sqrt * yx + alpha - 1;
@@ -404,8 +407,9 @@ namespace Eigen
404
407
  RUtils ru;
405
408
  if (alpha < 1)
406
409
  {
407
- while (1)
410
+ for (int _i = 0; ; ++_i)
408
411
  {
412
+ EIGENRAND_CHECK_INFINITY_LOOP();
409
413
  Packet ux = ru.uniform_real(rng);
410
414
  Packet vx = ru.nonzero_uniform_real(rng);
411
415
 
@@ -447,8 +451,9 @@ namespace Eigen
447
451
  }
448
452
  else
449
453
  {
450
- while (1)
454
+ for (int _i = 0; ; ++_i)
451
455
  {
456
+ EIGENRAND_CHECK_INFINITY_LOOP();
452
457
  Packet alpha_1 = pset1<Packet>(alpha - 1);
453
458
  Packet ys, yc;
454
459
  psincos(pmul(pset1<Packet>(constant::pi), ru.uniform_real(rng)), ys, yc);
@@ -482,7 +487,7 @@ namespace Eigen
482
487
  class WeibullGen : public GenBase<WeibullGen<_Scalar>, _Scalar>
483
488
  {
484
489
  static_assert(std::is_floating_point<_Scalar>::value, "weilbullDist needs floating point types.");
485
- UniformRealGen<_Scalar> ur;
490
+ StdUniformRealGen<_Scalar> ur;
486
491
  _Scalar a = 1, b = 1;
487
492
 
488
493
  public:
@@ -531,7 +536,7 @@ namespace Eigen
531
536
  class ExtremeValueGen : public GenBase<ExtremeValueGen<_Scalar>, _Scalar>
532
537
  {
533
538
  static_assert(std::is_floating_point<_Scalar>::value, "extremeValueDist needs floating point types.");
534
- UniformRealGen<_Scalar> ur;
539
+ StdUniformRealGen<_Scalar> ur;
535
540
  _Scalar a = 0, b = 1;
536
541
 
537
542
  public:
@@ -623,7 +628,7 @@ namespace Eigen
623
628
  class CauchyGen : public GenBase<CauchyGen<_Scalar>, _Scalar>
624
629
  {
625
630
  static_assert(std::is_floating_point<_Scalar>::value, "cauchyDist needs floating point types.");
626
- UniformRealGen<_Scalar> ur;
631
+ StdUniformRealGen<_Scalar> ur;
627
632
  _Scalar a = 0, b = 1;
628
633
 
629
634
  public:
@@ -680,7 +685,7 @@ namespace Eigen
680
685
  friend FisherFGen<_Scalar>;
681
686
  static_assert(std::is_floating_point<_Scalar>::value, "betaDist needs floating point types.");
682
687
  int cache_rest_cnt = 0;
683
- UniformRealGen<_Scalar> ur;
688
+ StdUniformRealGen<_Scalar> ur;
684
689
  _Scalar a, b;
685
690
  GammaGen<_Scalar> gd1, gd2;
686
691
 
@@ -711,8 +716,9 @@ namespace Eigen
711
716
  if (a < 1 && b < 1)
712
717
  {
713
718
  _Scalar x, p1, p2;
714
- while (1)
719
+ for (int _i = 0; ; ++_i)
715
720
  {
721
+ EIGENRAND_CHECK_INFINITY_LOOP();
716
722
  p1 = std::pow(ur(rng), 1 / a);
717
723
  p2 = std::pow(ur(rng), 1 / b);
718
724
  x = p1 + p2;
@@ -735,8 +741,9 @@ namespace Eigen
735
741
  {
736
742
  auto& cm = Rand::detail::CompressMask<sizeof(Packet)>::get_inst();
737
743
  Packet x, p1, p2;
738
- while (1)
744
+ for (int _i = 0; ; ++_i)
739
745
  {
746
+ EIGENRAND_CHECK_INFINITY_LOOP();
740
747
  p1 = pexp(pmul(plog(ur.template packetOp<Packet>(rng)), pset1<Packet>(1 / a)));
741
748
  p2 = pexp(pmul(plog(ur.template packetOp<Packet>(rng)), pset1<Packet>(1 / b)));
742
749
  x = padd(p1, p2);
@@ -2,10 +2,10 @@
2
2
  * @file EigenRand
3
3
  * @author bab2min (bab2min@gmail.com)
4
4
  * @brief
5
- * @version 0.3.0
6
- * @date 2020-10-07
5
+ * @version 0.4.0
6
+ * @date 2021-09-17
7
7
  *
8
- * @copyright Copyright (c) 2020
8
+ * @copyright Copyright (c) 2020-2021
9
9
  *
10
10
  */
11
11
 
@@ -13,7 +13,12 @@
13
13
  #define EIGENRAND_EIGENRAND_H
14
14
 
15
15
  #include <Eigen/Dense>
16
- #include <EigenRand/Macro.h>
17
- #include <EigenRand/Core.h>
18
16
 
19
- #endif
17
+ #include <Eigen/src/Core/util/DisableStupidWarnings.h>
18
+
19
+ #include "Macro.h"
20
+ #include "Core.h"
21
+
22
+ #include <Eigen/src/Core/util/ReenableStupidWarnings.h>
23
+
24
+ #endif
@@ -2,10 +2,10 @@
2
2
  * @file Macro.h
3
3
  * @author bab2min (bab2min@gmail.com)
4
4
  * @brief
5
- * @version 0.3.0
6
- * @date 2020-10-07
5
+ * @version 0.4.0
6
+ * @date 2021-09-28
7
7
  *
8
- * @copyright Copyright (c) 2020
8
+ * @copyright Copyright (c) 2020-2021
9
9
  *
10
10
  */
11
11
 
@@ -13,12 +13,18 @@
13
13
  #define EIGENRAND_MACRO_H
14
14
 
15
15
  #define EIGENRAND_WORLD_VERSION 0
16
- #define EIGENRAND_MAJOR_VERSION 3
17
- #define EIGENRAND_MINOR_VERSION 2
16
+ #define EIGENRAND_MAJOR_VERSION 4
17
+ #define EIGENRAND_MINOR_VERSION 0
18
18
 
19
- #if EIGEN_VERSION_AT_LEAST(3,3,7)
19
+ #if EIGEN_VERSION_AT_LEAST(3,3,10)
20
+ #define EIGENRAND_EIGEN_34_MODE
21
+ #elif EIGEN_VERSION_AT_LEAST(3,3,4)
22
+ #define EIGENRAND_EIGEN_33_MODE
23
+ #endif
24
+
25
+ #if EIGEN_VERSION_AT_LEAST(3,3,4) && !EIGEN_VERSION_AT_LEAST(3,4,1)
20
26
  #else
21
- #error At least Eigen 3.3.7 is required.
27
+ #error Eigen 3.3.4 ~ 3.4.0 is required.
22
28
  #endif
23
29
 
24
30
  #endif