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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +8 -10
- data/ext/tomoto/extconf.rb +6 -2
- data/ext/tomoto/{ext.cpp → tomoto.cpp} +1 -1
- data/lib/tomoto/version.rb +1 -1
- data/lib/tomoto.rb +5 -1
- data/vendor/EigenRand/EigenRand/Core.h +10 -10
- data/vendor/EigenRand/EigenRand/Dists/Basic.h +208 -9
- data/vendor/EigenRand/EigenRand/Dists/Discrete.h +52 -31
- data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +9 -8
- data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +28 -21
- data/vendor/EigenRand/EigenRand/EigenRand +11 -6
- data/vendor/EigenRand/EigenRand/Macro.h +13 -7
- data/vendor/EigenRand/EigenRand/MorePacketMath.h +348 -740
- data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +5 -3
- data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +9 -3
- data/vendor/EigenRand/EigenRand/PacketFilter.h +11 -253
- data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +21 -47
- data/vendor/EigenRand/EigenRand/RandUtils.h +50 -344
- data/vendor/EigenRand/EigenRand/arch/AVX/MorePacketMath.h +619 -0
- data/vendor/EigenRand/EigenRand/arch/AVX/PacketFilter.h +149 -0
- data/vendor/EigenRand/EigenRand/arch/AVX/RandUtils.h +228 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/MorePacketMath.h +473 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/PacketFilter.h +142 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/RandUtils.h +126 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/MorePacketMath.h +501 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/PacketFilter.h +133 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/RandUtils.h +120 -0
- data/vendor/EigenRand/EigenRand/doc.h +24 -12
- data/vendor/EigenRand/README.md +57 -4
- data/vendor/eigen/COPYING.APACHE +203 -0
- data/vendor/eigen/COPYING.BSD +1 -1
- data/vendor/eigen/COPYING.MINPACK +51 -52
- data/vendor/eigen/Eigen/Cholesky +0 -1
- data/vendor/eigen/Eigen/Core +112 -265
- data/vendor/eigen/Eigen/Eigenvalues +2 -3
- data/vendor/eigen/Eigen/Geometry +5 -8
- data/vendor/eigen/Eigen/Householder +0 -1
- data/vendor/eigen/Eigen/Jacobi +0 -1
- data/vendor/eigen/Eigen/KLUSupport +41 -0
- data/vendor/eigen/Eigen/LU +2 -5
- data/vendor/eigen/Eigen/OrderingMethods +0 -3
- data/vendor/eigen/Eigen/PaStiXSupport +1 -0
- data/vendor/eigen/Eigen/PardisoSupport +0 -0
- data/vendor/eigen/Eigen/QR +2 -3
- data/vendor/eigen/Eigen/QtAlignedMalloc +0 -1
- data/vendor/eigen/Eigen/SVD +0 -1
- data/vendor/eigen/Eigen/Sparse +0 -2
- data/vendor/eigen/Eigen/SparseCholesky +0 -8
- data/vendor/eigen/Eigen/SparseLU +4 -0
- data/vendor/eigen/Eigen/SparseQR +0 -1
- data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
- data/vendor/eigen/Eigen/src/Cholesky/LLT.h +39 -23
- data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
- data/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
- data/vendor/eigen/Eigen/src/Core/Array.h +99 -11
- data/vendor/eigen/Eigen/src/Core/ArrayBase.h +3 -3
- data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
- data/vendor/eigen/Eigen/src/Core/Assign.h +1 -1
- data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
- data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
- data/vendor/eigen/Eigen/src/Core/BandMatrix.h +16 -16
- data/vendor/eigen/Eigen/src/Core/Block.h +56 -60
- data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
- data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
- data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
- data/vendor/eigen/Eigen/src/Core/CoreIterators.h +5 -0
- data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
- data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
- data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
- data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +14 -10
- data/vendor/eigen/Eigen/src/Core/DenseBase.h +132 -42
- data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
- data/vendor/eigen/Eigen/src/Core/DenseStorage.h +153 -71
- data/vendor/eigen/Eigen/src/Core/Diagonal.h +21 -23
- data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
- data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
- data/vendor/eigen/Eigen/src/Core/Dot.h +10 -10
- data/vendor/eigen/Eigen/src/Core/EigenBase.h +10 -9
- data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
- data/vendor/eigen/Eigen/src/Core/Fuzzy.h +3 -3
- data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
- data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +599 -152
- data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
- data/vendor/eigen/Eigen/src/Core/IO.h +40 -7
- data/vendor/eigen/Eigen/src/Core/IndexedView.h +237 -0
- data/vendor/eigen/Eigen/src/Core/Inverse.h +9 -10
- data/vendor/eigen/Eigen/src/Core/Map.h +7 -7
- data/vendor/eigen/Eigen/src/Core/MapBase.h +10 -3
- data/vendor/eigen/Eigen/src/Core/MathFunctions.h +767 -125
- data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
- data/vendor/eigen/Eigen/src/Core/Matrix.h +131 -25
- data/vendor/eigen/Eigen/src/Core/MatrixBase.h +21 -3
- data/vendor/eigen/Eigen/src/Core/NestByValue.h +25 -50
- data/vendor/eigen/Eigen/src/Core/NoAlias.h +4 -3
- data/vendor/eigen/Eigen/src/Core/NumTraits.h +107 -20
- data/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +3 -31
- data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +152 -59
- data/vendor/eigen/Eigen/src/Core/Product.h +30 -25
- data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +192 -125
- data/vendor/eigen/Eigen/src/Core/Random.h +37 -1
- data/vendor/eigen/Eigen/src/Core/Redux.h +180 -170
- data/vendor/eigen/Eigen/src/Core/Ref.h +121 -23
- data/vendor/eigen/Eigen/src/Core/Replicate.h +8 -8
- data/vendor/eigen/Eigen/src/Core/Reshaped.h +454 -0
- data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
- data/vendor/eigen/Eigen/src/Core/Reverse.h +18 -12
- data/vendor/eigen/Eigen/src/Core/Select.h +8 -6
- data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
- data/vendor/eigen/Eigen/src/Core/Solve.h +14 -14
- data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +16 -16
- data/vendor/eigen/Eigen/src/Core/SolverBase.h +41 -3
- data/vendor/eigen/Eigen/src/Core/StableNorm.h +100 -70
- data/vendor/eigen/Eigen/src/Core/StlIterators.h +463 -0
- data/vendor/eigen/Eigen/src/Core/Stride.h +9 -4
- data/vendor/eigen/Eigen/src/Core/Swap.h +5 -4
- data/vendor/eigen/Eigen/src/Core/Transpose.h +88 -27
- data/vendor/eigen/Eigen/src/Core/Transpositions.h +26 -47
- data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +93 -75
- data/vendor/eigen/Eigen/src/Core/VectorBlock.h +5 -5
- data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
- data/vendor/eigen/Eigen/src/Core/Visitor.h +137 -29
- data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
- data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
- data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
- data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +207 -236
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1482 -495
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
- data/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
- data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
- data/vendor/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- data/vendor/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
- data/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- data/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- data/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
- data/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
- data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
- data/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
- data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
- data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
- data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
- data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
- data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
- data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
- data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
- data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +355 -16
- data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1075 -586
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +49 -24
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +41 -35
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +6 -6
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +4 -2
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
- data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +22 -5
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +53 -30
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +16 -8
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +4 -4
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
- data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +33 -27
- data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +14 -12
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +36 -34
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +8 -4
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
- data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +304 -119
- data/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- data/vendor/eigen/Eigen/src/Core/util/Constants.h +25 -9
- data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +26 -3
- data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +29 -9
- data/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- data/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
- data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
- data/vendor/eigen/Eigen/src/Core/util/Macros.h +709 -246
- data/vendor/eigen/Eigen/src/Core/util/Memory.h +222 -52
- data/vendor/eigen/Eigen/src/Core/util/Meta.h +355 -77
- data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +5 -1
- data/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
- data/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +65 -30
- data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
- data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +7 -4
- data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
- data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
- data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +21 -9
- data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +77 -43
- data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
- data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
- data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
- data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
- data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
- data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
- data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
- data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
- data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +70 -14
- data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
- data/vendor/eigen/Eigen/src/Geometry/Scaling.h +23 -5
- data/vendor/eigen/Eigen/src/Geometry/Transform.h +88 -67
- data/vendor/eigen/Eigen/src/Geometry/Translation.h +6 -12
- data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +1 -1
- data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
- data/vendor/eigen/Eigen/src/Householder/Householder.h +8 -4
- data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
- data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
- data/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- data/vendor/eigen/Eigen/src/LU/Determinant.h +35 -19
- data/vendor/eigen/Eigen/src/LU/FullPivLU.h +29 -43
- data/vendor/eigen/Eigen/src/LU/InverseImpl.h +25 -8
- data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +71 -58
- data/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
- data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
- data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
- data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
- data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
- data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +9 -7
- data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
- data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
- data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
- data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
- data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
- data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +183 -63
- data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
- data/vendor/eigen/Eigen/src/SVD/SVDBase.h +83 -22
- data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
- data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +17 -9
- data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +12 -37
- data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +3 -2
- data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
- data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
- data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
- data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
- data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
- data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
- data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +4 -2
- data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
- data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +126 -11
- data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
- data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
- data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
- data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +5 -2
- data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
- data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
- data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +1 -0
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +162 -12
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
- data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
- data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +2 -12
- data/vendor/eigen/Eigen/src/StlSupport/StdList.h +2 -2
- data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
- data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
- data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
- data/vendor/eigen/Eigen/src/misc/lapacke.h +5 -4
- data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +28 -2
- data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
- data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
- data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
- data/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
- data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
- data/vendor/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
- data/vendor/eigen/README.md +2 -0
- data/vendor/eigen/bench/btl/README +1 -1
- data/vendor/eigen/bench/tensors/README +6 -7
- data/vendor/eigen/ci/README.md +56 -0
- data/vendor/eigen/demos/mix_eigen_and_c/README +1 -1
- data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +213 -158
- data/vendor/eigen/unsupported/README.txt +1 -1
- data/vendor/tomotopy/README.kr.rst +21 -0
- data/vendor/tomotopy/README.rst +20 -0
- data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
- data/vendor/tomotopy/src/Labeling/Phraser.hpp +1 -1
- data/vendor/tomotopy/src/TopicModel/CTModel.hpp +2 -1
- data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +2 -1
- data/vendor/tomotopy/src/TopicModel/DTModel.hpp +1 -1
- data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +2 -2
- data/vendor/tomotopy/src/TopicModel/HDP.h +1 -0
- data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +53 -2
- data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +1 -1
- data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +1 -0
- data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +2 -2
- data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +16 -5
- data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +1 -0
- data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +1 -0
- data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +1 -0
- data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
- data/vendor/tomotopy/src/TopicModel/PTModel.hpp +31 -1
- data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +2 -2
- data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +7 -5
- data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
- data/vendor/tomotopy/src/Utils/exception.h +6 -0
- data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
- data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
- metadata +60 -14
- data/vendor/eigen/Eigen/CMakeLists.txt +0 -19
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -674
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- 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.
|
|
6
|
-
* @date
|
|
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.
|
|
6
|
-
* @date
|
|
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.
|
|
6
|
-
* @date
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
263
|
-
|
|
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.
|
|
6
|
-
* @date
|
|
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
|
|
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
|
|
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
|
|
324
|
-
res = pxor(res, pand(psll64(res
|
|
325
|
-
res = pxor(res, pand(psll64(res
|
|
326
|
-
res = pxor(res, psrl64(res
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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::
|
|
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
|
-
|
|
620
|
-
|
|
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
|
|