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 Discrete.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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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),
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
968
|
-
|
|
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.
|
|
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
|
|
|
@@ -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
|
-
|
|
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),
|
|
85
|
-
|
|
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),
|
|
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.
|
|
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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
6
|
-
* @date
|
|
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
|
-
#
|
|
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.
|
|
6
|
-
* @date
|
|
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
|
|
17
|
-
#define EIGENRAND_MINOR_VERSION
|
|
16
|
+
#define EIGENRAND_MAJOR_VERSION 4
|
|
17
|
+
#define EIGENRAND_MINOR_VERSION 0
|
|
18
18
|
|
|
19
|
-
#if EIGEN_VERSION_AT_LEAST(3,3,
|
|
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
|
|
27
|
+
#error Eigen 3.3.4 ~ 3.4.0 is required.
|
|
22
28
|
#endif
|
|
23
29
|
|
|
24
30
|
#endif
|