tomoto 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +8 -10
- data/ext/tomoto/ct.cpp +11 -11
- data/ext/tomoto/dmr.cpp +14 -13
- data/ext/tomoto/dt.cpp +14 -14
- data/ext/tomoto/extconf.rb +7 -5
- data/ext/tomoto/gdmr.cpp +7 -7
- data/ext/tomoto/hdp.cpp +9 -9
- data/ext/tomoto/hlda.cpp +13 -13
- data/ext/tomoto/hpa.cpp +5 -5
- data/ext/tomoto/lda.cpp +42 -39
- data/ext/tomoto/llda.cpp +6 -6
- data/ext/tomoto/mglda.cpp +15 -15
- data/ext/tomoto/pa.cpp +6 -6
- data/ext/tomoto/plda.cpp +6 -6
- data/ext/tomoto/slda.cpp +8 -8
- data/ext/tomoto/{ext.cpp → tomoto.cpp} +8 -8
- data/ext/tomoto/utils.h +16 -70
- 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 +78 -0
- data/vendor/tomotopy/README.rst +75 -0
- data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
- data/vendor/tomotopy/src/Labeling/Phraser.hpp +4 -4
- data/vendor/tomotopy/src/TopicModel/CTModel.hpp +7 -3
- data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +7 -3
- data/vendor/tomotopy/src/TopicModel/DTModel.hpp +6 -3
- 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 +57 -6
- data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +3 -2
- data/vendor/tomotopy/src/TopicModel/LDA.h +3 -3
- data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +5 -5
- data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +50 -19
- data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +6 -2
- data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +3 -2
- data/vendor/tomotopy/src/TopicModel/PAModel.hpp +1 -1
- data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +6 -2
- data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
- data/vendor/tomotopy/src/TopicModel/PTModel.hpp +36 -3
- data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +55 -26
- data/vendor/tomotopy/src/Utils/AliasMethod.hpp +5 -4
- data/vendor/tomotopy/src/Utils/Dictionary.h +2 -2
- data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
- data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +1 -1
- data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +1 -1
- data/vendor/tomotopy/src/Utils/exception.h +6 -0
- data/vendor/tomotopy/src/Utils/math.h +2 -2
- data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
- data/vendor/tomotopy/src/Utils/serializer.hpp +30 -5
- data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
- metadata +64 -18
- 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,19 +2,19 @@
|
|
|
2
2
|
* @file RandUtils.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
|
|
|
12
12
|
#ifndef EIGENRAND_RAND_UTILS_H
|
|
13
13
|
#define EIGENRAND_RAND_UTILS_H
|
|
14
14
|
|
|
15
|
-
#include
|
|
16
|
-
#include
|
|
17
|
-
#include
|
|
15
|
+
#include "MorePacketMath.h"
|
|
16
|
+
#include "PacketFilter.h"
|
|
17
|
+
#include "PacketRandomEngine.h"
|
|
18
18
|
|
|
19
19
|
namespace Eigen
|
|
20
20
|
{
|
|
@@ -25,7 +25,7 @@ namespace Eigen
|
|
|
25
25
|
Rand::RandomEngineType reType = Rand::GetRandomEngineType<
|
|
26
26
|
typename std::remove_reference<Rng>::type
|
|
27
27
|
>::value>
|
|
28
|
-
|
|
28
|
+
struct RawbitsMaker;
|
|
29
29
|
|
|
30
30
|
template<typename PacketType, typename Rng>
|
|
31
31
|
struct UniformRealUtils;
|
|
@@ -38,348 +38,19 @@ namespace Eigen
|
|
|
38
38
|
return psub(pmul(this->zero_to_one(rng), pset1<PacketType>(2)), pset1<PacketType>(1));
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
constexpr auto epsilon = std::numeric_limits<typename unpacket_traits<PacketType>::type>::epsilon() / 8;
|
|
44
|
-
return padd(this->uniform_real(rng), pset1<PacketType>(epsilon));
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
EIGEN_STRONG_INLINE uint32_t collect_upper8bits(uint32_t a, uint32_t b, uint32_t c)
|
|
49
|
-
{
|
|
50
|
-
return ((a & 0xFF000000) >> 24) | ((b & 0xFF000000) >> 16) | ((c & 0xFF000000) >> 8);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
#ifdef EIGEN_VECTORIZE_AVX
|
|
56
|
-
#include <immintrin.h>
|
|
57
|
-
|
|
58
|
-
namespace Eigen
|
|
59
|
-
{
|
|
60
|
-
namespace internal
|
|
61
|
-
{
|
|
62
|
-
template<typename Rng>
|
|
63
|
-
struct RawbitsMaker<Packet4i, Rng, Packet8i, Rand::RandomEngineType::packet>
|
|
64
|
-
{
|
|
65
|
-
EIGEN_STRONG_INLINE Packet4i rawbits(Rng& rng)
|
|
66
|
-
{
|
|
67
|
-
return rng.half();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_34(Rng& rng)
|
|
71
|
-
{
|
|
72
|
-
return rng.half();
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_half(Rng& rng)
|
|
76
|
-
{
|
|
77
|
-
return rng.half();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
template<typename Rng>
|
|
82
|
-
struct RawbitsMaker<Packet8i, Rng, Packet4i, Rand::RandomEngineType::packet>
|
|
83
|
-
{
|
|
84
|
-
EIGEN_STRONG_INLINE Packet8i rawbits(Rng& rng)
|
|
85
|
-
{
|
|
86
|
-
return _mm256_insertf128_si256(_mm256_castsi128_si256(rng()), rng(), 1);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
EIGEN_STRONG_INLINE Packet8i rawbits_34(Rng& rng)
|
|
90
|
-
{
|
|
91
|
-
return _mm256_insertf128_si256(_mm256_castsi128_si256(rng()), rng(), 1);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_half(Rng& rng)
|
|
95
|
-
{
|
|
96
|
-
return rng();
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
template<typename Rng, typename RngResult>
|
|
101
|
-
struct RawbitsMaker<Packet8i, Rng, RngResult, Rand::RandomEngineType::scalar>
|
|
102
|
-
{
|
|
103
|
-
EIGEN_STRONG_INLINE Packet8i rawbits(Rng& rng)
|
|
104
|
-
{
|
|
105
|
-
if (sizeof(decltype(rng())) == 8)
|
|
106
|
-
{
|
|
107
|
-
return _mm256_set_epi64x(rng(), rng(), rng(), rng());
|
|
108
|
-
}
|
|
109
|
-
else
|
|
110
|
-
{
|
|
111
|
-
return _mm256_set_epi32(rng(), rng(), rng(), rng(),
|
|
112
|
-
rng(), rng(), rng(), rng());
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
EIGEN_STRONG_INLINE Packet8i rawbits_34(Rng& rng)
|
|
117
|
-
{
|
|
118
|
-
Packet8i p;
|
|
119
|
-
if (sizeof(decltype(rng())) == 8)
|
|
120
|
-
{
|
|
121
|
-
#ifdef EIGEN_VECTORIZE_AVX2
|
|
122
|
-
p = _mm256_setr_epi64x(rng(), rng(), rng(), 0);
|
|
123
|
-
p = _mm256_permutevar8x32_epi32(p, _mm256_setr_epi32(0, 1, 2, 7, 3, 4, 5, 7));
|
|
124
|
-
p = _mm256_shuffle_epi8(p, _mm256_setr_epi8(
|
|
125
|
-
0, 1, 2, 3,
|
|
126
|
-
4, 5, 6, 7,
|
|
127
|
-
8, 9, 10, 11,
|
|
128
|
-
3, 7, 11, 11,
|
|
129
|
-
0, 1, 2, 3,
|
|
130
|
-
4, 5, 6, 7,
|
|
131
|
-
8, 9, 10, 11,
|
|
132
|
-
3, 7, 11, 11
|
|
133
|
-
));
|
|
134
|
-
|
|
135
|
-
#else
|
|
136
|
-
auto v = rng();
|
|
137
|
-
p = _mm256_setr_epi64x(rng(), v, rng(), v >> 32);
|
|
138
|
-
Packet4i p1, p2, o = _mm_setr_epi8(
|
|
139
|
-
0, 1, 2, 3,
|
|
140
|
-
4, 5, 6, 7,
|
|
141
|
-
8, 9, 10, 11,
|
|
142
|
-
3, 7, 11, 11);
|
|
143
|
-
split_two(p, p1, p2);
|
|
144
|
-
p = combine_two(_mm_shuffle_epi8(p1, o), _mm_shuffle_epi8(p2, o));
|
|
145
|
-
#endif
|
|
146
|
-
}
|
|
147
|
-
else
|
|
148
|
-
{
|
|
149
|
-
p = _mm256_setr_epi32(rng(), rng(), rng(), 0, rng(), rng(), rng(), 0);
|
|
150
|
-
#ifdef EIGEN_VECTORIZE_AVX2
|
|
151
|
-
p = _mm256_shuffle_epi8(p, _mm256_setr_epi8(
|
|
152
|
-
0, 1, 2, 3,
|
|
153
|
-
4, 5, 6, 7,
|
|
154
|
-
8, 9, 10, 11,
|
|
155
|
-
3, 7, 11, 11,
|
|
156
|
-
0, 1, 2, 3,
|
|
157
|
-
4, 5, 6, 7,
|
|
158
|
-
8, 9, 10, 11,
|
|
159
|
-
3, 7, 11, 11
|
|
160
|
-
));
|
|
161
|
-
#else
|
|
162
|
-
Packet4i p1, p2, o = _mm_setr_epi8(
|
|
163
|
-
0, 1, 2, 3,
|
|
164
|
-
4, 5, 6, 7,
|
|
165
|
-
8, 9, 10, 11,
|
|
166
|
-
3, 7, 11, 11);
|
|
167
|
-
split_two(p, p1, p2);
|
|
168
|
-
p = combine_two(_mm_shuffle_epi8(p1, o), _mm_shuffle_epi8(p2, o));
|
|
169
|
-
#endif
|
|
170
|
-
}
|
|
171
|
-
return p;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_half(Rng& rng)
|
|
175
|
-
{
|
|
176
|
-
if (sizeof(decltype(rng())) == 8)
|
|
177
|
-
{
|
|
178
|
-
return _mm_set_epi64x(rng(), rng());
|
|
179
|
-
}
|
|
180
|
-
else
|
|
181
|
-
{
|
|
182
|
-
return _mm_set_epi32(rng(), rng(), rng(), rng());
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
template<typename Rng>
|
|
188
|
-
struct RawbitsMaker<Packet8i, Rng, Packet8i, Rand::RandomEngineType::packet>
|
|
189
|
-
{
|
|
190
|
-
EIGEN_STRONG_INLINE Packet8i rawbits(Rng& rng)
|
|
191
|
-
{
|
|
192
|
-
return rng();
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
EIGEN_STRONG_INLINE Packet8i rawbits_34(Rng& rng)
|
|
196
|
-
{
|
|
197
|
-
return rng();
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_half(Rng& rng)
|
|
201
|
-
{
|
|
202
|
-
return rng.half();
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
#ifndef EIGEN_VECTORIZE_AVX2
|
|
207
|
-
template<>
|
|
208
|
-
EIGEN_STRONG_INLINE Packet8f bit_to_ur_float<Packet8i>(const Packet8i& x)
|
|
209
|
-
{
|
|
210
|
-
const Packet4i lower = pset1<Packet4i>(0x7FFFFF),
|
|
211
|
-
upper = pset1<Packet4i>(127 << 23);
|
|
212
|
-
const Packet8f one = pset1<Packet8f>(1);
|
|
213
|
-
|
|
214
|
-
Packet4i x1, x2;
|
|
215
|
-
split_two(x, x1, x2);
|
|
216
|
-
|
|
217
|
-
return psub(reinterpret_to_float(
|
|
218
|
-
combine_two(por(pand(x1, lower), upper), por(pand(x2, lower), upper)
|
|
219
|
-
)), one);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
template<>
|
|
223
|
-
EIGEN_STRONG_INLINE Packet4d bit_to_ur_double<Packet8i>(const Packet8i& x)
|
|
224
|
-
{
|
|
225
|
-
const Packet4i lower = pseti64<Packet4i>(0xFFFFFFFFFFFFFull),
|
|
226
|
-
upper = pseti64<Packet4i>(1023ull << 52);
|
|
227
|
-
const Packet4d one = pset1<Packet4d>(1);
|
|
228
|
-
|
|
229
|
-
Packet4i x1, x2;
|
|
230
|
-
split_two(x, x1, x2);
|
|
231
|
-
|
|
232
|
-
return psub(reinterpret_to_double(
|
|
233
|
-
combine_two(por(pand(x1, lower), upper), por(pand(x2, lower), upper)
|
|
234
|
-
)), one);
|
|
235
|
-
}
|
|
236
|
-
#endif
|
|
237
|
-
|
|
238
|
-
template<typename Rng>
|
|
239
|
-
struct UniformRealUtils<Packet8f, Rng> : public RawbitsMaker<Packet8i, Rng>
|
|
240
|
-
{
|
|
241
|
-
EIGEN_STRONG_INLINE Packet8f zero_to_one(Rng& rng)
|
|
242
|
-
{
|
|
243
|
-
return pdiv(_mm256_cvtepi32_ps(pand(this->rawbits(rng), pset1<Packet8i>(0x7FFFFFFF))),
|
|
244
|
-
pset1<Packet8f>(0x7FFFFFFF));
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
EIGEN_STRONG_INLINE Packet8f uniform_real(Rng& rng)
|
|
248
|
-
{
|
|
249
|
-
return bit_to_ur_float(this->rawbits_34(rng));
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
template<typename Rng>
|
|
254
|
-
struct UniformRealUtils<Packet4d, Rng> : public RawbitsMaker<Packet8i, Rng>
|
|
255
|
-
{
|
|
256
|
-
EIGEN_STRONG_INLINE Packet4d zero_to_one(Rng& rng)
|
|
257
|
-
{
|
|
258
|
-
return pdiv(_mm256_cvtepi32_pd(pand(this->rawbits_half(rng), pset1<Packet4i>(0x7FFFFFFF))),
|
|
259
|
-
pset1<Packet4d>(0x7FFFFFFF));
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
EIGEN_STRONG_INLINE Packet4d uniform_real(Rng& rng)
|
|
263
|
-
{
|
|
264
|
-
return bit_to_ur_double(this->rawbits(rng));
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
#endif
|
|
270
|
-
|
|
271
|
-
#ifdef EIGEN_VECTORIZE_SSE2
|
|
272
|
-
#include <xmmintrin.h>
|
|
273
|
-
|
|
274
|
-
namespace Eigen
|
|
275
|
-
{
|
|
276
|
-
namespace internal
|
|
277
|
-
{
|
|
278
|
-
template<typename Rng, typename RngResult>
|
|
279
|
-
struct RawbitsMaker<Packet4i, Rng, RngResult, Rand::RandomEngineType::scalar>
|
|
280
|
-
{
|
|
281
|
-
EIGEN_STRONG_INLINE Packet4i rawbits(Rng& rng)
|
|
282
|
-
{
|
|
283
|
-
if (sizeof(RngResult) == 8)
|
|
284
|
-
{
|
|
285
|
-
return _mm_set_epi64x(rng(), rng());
|
|
286
|
-
}
|
|
287
|
-
else
|
|
288
|
-
{
|
|
289
|
-
return _mm_set_epi32(rng(), rng(), rng(), rng());
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_34(Rng& rng)
|
|
294
|
-
{
|
|
295
|
-
if (sizeof(RngResult) == 8)
|
|
296
|
-
{
|
|
297
|
-
return _mm_set_epi64x(rng(), rng());
|
|
298
|
-
}
|
|
299
|
-
else
|
|
300
|
-
{
|
|
301
|
-
#ifdef EIGEN_VECTORIZE_SSSE3
|
|
302
|
-
Packet4i p = _mm_setr_epi32(rng(), rng(), rng(), 0);
|
|
303
|
-
return _mm_shuffle_epi8(p, _mm_setr_epi8(
|
|
304
|
-
0, 1, 2, 3,
|
|
305
|
-
4, 5, 6, 7,
|
|
306
|
-
8, 9, 10, 11,
|
|
307
|
-
3, 7, 11, 11));
|
|
308
|
-
#else
|
|
309
|
-
return _mm_set_epi32(rng(), rng(), rng(), rng());
|
|
310
|
-
#endif
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_half(Rng& rng)
|
|
315
|
-
{
|
|
316
|
-
if (sizeof(decltype(rng())) == 8)
|
|
317
|
-
{
|
|
318
|
-
return _mm_set_epi64x(0, rng());
|
|
319
|
-
}
|
|
320
|
-
else
|
|
321
|
-
{
|
|
322
|
-
return _mm_setr_epi32(rng(), rng(), 0, 0);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
};
|
|
326
|
-
|
|
327
|
-
template<typename Rng>
|
|
328
|
-
struct RawbitsMaker<Packet4i, Rng, Packet4i, Rand::RandomEngineType::packet>
|
|
329
|
-
{
|
|
330
|
-
EIGEN_STRONG_INLINE Packet4i rawbits(Rng& rng)
|
|
331
|
-
{
|
|
332
|
-
return rng();
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_34(Rng& rng)
|
|
336
|
-
{
|
|
337
|
-
return rng();
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
EIGEN_STRONG_INLINE Packet4i rawbits_half(Rng& rng)
|
|
341
|
-
{
|
|
342
|
-
return rng();
|
|
343
|
-
}
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
template<typename Rng>
|
|
347
|
-
struct UniformRealUtils<Packet4f, Rng> : public RawbitsMaker<Packet4i, Rng>
|
|
348
|
-
{
|
|
349
|
-
EIGEN_STRONG_INLINE Packet4f zero_to_one(Rng& rng)
|
|
350
|
-
{
|
|
351
|
-
return pdiv((Packet4f)_mm_cvtepi32_ps(pand(this->rawbits(rng), pset1<Packet4i>(0x7FFFFFFF))),
|
|
352
|
-
pset1<Packet4f>(0x7FFFFFFF));
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
EIGEN_STRONG_INLINE Packet4f uniform_real(Rng& rng)
|
|
41
|
+
template<typename Scalar>
|
|
42
|
+
EIGEN_STRONG_INLINE PacketType balanced(Rng& rng, Scalar slope, Scalar bias)
|
|
356
43
|
{
|
|
357
|
-
return
|
|
44
|
+
return padd(pmul(this->zero_to_one(rng), pset1<PacketType>(slope)), pset1<PacketType>(bias));
|
|
358
45
|
}
|
|
359
|
-
};
|
|
360
46
|
|
|
361
|
-
|
|
362
|
-
struct UniformRealUtils<Packet2d, Rng> : public RawbitsMaker<Packet4i, Rng>
|
|
363
|
-
{
|
|
364
|
-
EIGEN_STRONG_INLINE Packet2d zero_to_one(Rng& rng)
|
|
365
|
-
{
|
|
366
|
-
return pdiv((Packet2d)_mm_cvtepi32_pd(pand(this->rawbits_half(rng), pset1<Packet4i>(0x7FFFFFFF))),
|
|
367
|
-
pset1<Packet2d>(0x7FFFFFFF));
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
EIGEN_STRONG_INLINE Packet2d uniform_real(Rng& rng)
|
|
47
|
+
EIGEN_STRONG_INLINE PacketType nonzero_uniform_real(Rng& rng)
|
|
371
48
|
{
|
|
372
|
-
|
|
49
|
+
constexpr auto epsilon = std::numeric_limits<typename unpacket_traits<PacketType>::type>::epsilon() / 8;
|
|
50
|
+
return padd(this->uniform_real(rng), pset1<PacketType>(epsilon));
|
|
373
51
|
}
|
|
374
52
|
};
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
#endif
|
|
378
53
|
|
|
379
|
-
namespace Eigen
|
|
380
|
-
{
|
|
381
|
-
namespace internal
|
|
382
|
-
{
|
|
383
54
|
template<typename Gen, typename _Scalar, typename Rng, bool _mutable = false>
|
|
384
55
|
struct scalar_rng_adaptor
|
|
385
56
|
{
|
|
@@ -389,7 +60,9 @@ namespace Eigen
|
|
|
389
60
|
>::value ||
|
|
390
61
|
Rand::IsPacketRandomEngine<
|
|
391
62
|
typename std::remove_reference<Rng>::type
|
|
392
|
-
>::value,
|
|
63
|
+
>::value,
|
|
64
|
+
"Rng must satisfy RandomNumberEngine"
|
|
65
|
+
);
|
|
393
66
|
|
|
394
67
|
Gen gen;
|
|
395
68
|
Rng rng;
|
|
@@ -427,7 +100,9 @@ namespace Eigen
|
|
|
427
100
|
>::value ||
|
|
428
101
|
Rand::IsPacketRandomEngine<
|
|
429
102
|
typename std::remove_reference<Rng>::type
|
|
430
|
-
>::value,
|
|
103
|
+
>::value,
|
|
104
|
+
"Rng must satisfy RandomNumberEngine"
|
|
105
|
+
);
|
|
431
106
|
|
|
432
107
|
mutable Gen gen;
|
|
433
108
|
Rng rng;
|
|
@@ -464,4 +139,35 @@ namespace Eigen
|
|
|
464
139
|
}
|
|
465
140
|
}
|
|
466
141
|
|
|
142
|
+
|
|
143
|
+
#ifdef EIGEN_VECTORIZE_AVX
|
|
144
|
+
#include "arch/AVX/RandUtils.h"
|
|
145
|
+
#endif
|
|
146
|
+
|
|
147
|
+
#ifdef EIGEN_VECTORIZE_SSE2
|
|
148
|
+
#include "arch/SSE/RandUtils.h"
|
|
149
|
+
#endif
|
|
150
|
+
|
|
151
|
+
#ifdef EIGEN_VECTORIZE_NEON
|
|
152
|
+
#include "arch/NEON/RandUtils.h"
|
|
153
|
+
#endif
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
namespace Eigen
|
|
157
|
+
{
|
|
158
|
+
namespace internal
|
|
159
|
+
{
|
|
160
|
+
EIGEN_STRONG_INLINE uint32_t collect_upper8bits(uint32_t a, uint32_t b, uint32_t c)
|
|
161
|
+
{
|
|
162
|
+
return ((a & 0xFF000000) >> 24) | ((b & 0xFF000000) >> 16) | ((c & 0xFF000000) >> 8);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
#if defined(DEBUG) || defined(_DEBUG)
|
|
168
|
+
#define EIGENRAND_CHECK_INFINITY_LOOP() do { assert(_i < 100); } while(0)
|
|
169
|
+
#else
|
|
170
|
+
#define EIGENRAND_CHECK_INFINITY_LOOP()
|
|
171
|
+
#endif
|
|
172
|
+
|
|
467
173
|
#endif
|